一: 解决手机屏幕自适应问题
之前我的用法是,直接将clientwidth和clientHeight赋值,但却没有效果。之后查了一下用TScaledLayout可以解决。在过程中,需要注意的是:在form的oncreate或onshow事件中定义的其他控件坐标长宽需要在form的onresize里再次赋值。应为前两个事件是执行一次,而onresize是动态获取。
二:用TControl来画按钮控件,因为Delphi自带的button不能有颜色,可以用control来画个按钮形状并且再点击事件里响应。代码为:
con : TControl;
//响应事件
procedure TForm1.conClick(Sender: TObject);
begin
Caption := 'fdasfdsafd';
end;
绘画有颜色按钮
procedure TForm1.conPaint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
con.Canvas.BeginScene;
//画背景
con.Canvas.Fill.Color:= makecolor(255,0,0);
con.Canvas.FillRect(rectf(0,0,75,25),0,0,[],1);
//画直线
con.Canvas.Stroke.Color := makecolor(0,0,0);
con.Canvas.Stroke.Thickness := 1;
con.Canvas.Stroke.Kind := TBrushKind.Solid;
con.Canvas.DrawRect(rectf(0,0,75,25),0,0,[],1);
//结束
con.Canvas.EndScene;
end;
//创建一个button点击事件去初始化control
procedure TForm1.Button1Click(Sender: TObject);
begin
con := TControl.Create(self);
con.Parent := self;
con.Position.X := 100;
con.Position.Y := 150;
con.Width := 75;
con.Height := 25;
con.Visible := True;
con.Enabled := True;
con.OnPaint := conPaint;
con.OnClick := conClick;
con.Cursor := crhandpoint;
Invalidate; //开始绘画
end;