我有两个关于KOL的问题。
我有一个主要表格。正如我所看到的那样放在了TForm的位置上。 我想把它放到屏幕中心。 如何访问它的坐标或“SetWindowPos”的句柄?
表格中有4个标签。其中2个我想使用较小的字体。但我没有找到任何字体大小属性......那怎么办呢?
答案 0 :(得分:3)
的 1.1。如何在屏幕上显示表单?
使用CenterOnForm
方法。如描述所示,如果它应用于表单,则中心在屏幕上形成:
Form.CenterOnForm(nil);
的 1.2。如何获得表格位置?
就像在Left
和Top
属性中的Delphi一样,或者例如由Position
属性。以下伪代码结果相同:
ShowMessage('Form pos.: [' +
Int2Str(Form.Left) + '; ' +
Int2Str(Form.Top) + ']'
);
ShowMessage('Form pos: [' +
Int2Str(Form.Position.X) + '; ' +
Int2Str(Form.Position.Y) + ']'
);
请注意,除非您自己更改表单位置或直到applet运行,否则两个属性都会返回0.如果您未设置表单位置,则会在小程序启动时调整表单位置。
的 1.3。如何获得表单处理?
使用Handle
属性或GetWindowHandle
方法。以下伪代码结果相同:
ShowMessage(Int2Str(Form.Handle));
ShowMessage(Int2Str(Form.GetWindowHandle));
的 2。如何更改字体大小?
正如@David在帖子中已经提到的那样,使用Font.FontHeight
属性。只需一个旁注,即创建时的默认字体,例如该标签设置为System
,无法更改大小,因此在不应用大小更改时不要感到惊讶。以下是来源:
值0(默认值)表示使用系统默认值,负值 是以“点”表示字体高度,正数 - 以像素为单位。在XCL中 通常使用正值(如果不是0)来表示外观 独立于不同的当地环境。
以下是定位标签创建时的示例用法:
Label1 := NewLabel(Form, 'Label1').SetPosition(8, 8);
Label1.Font.FontName := 'Tahoma';
Label1.Font.FontHeight := -11;
第3。示例项目
program Project1;
uses
KOL;
type
PForm1 = ^TForm1;
TForm1 = object(TObj)
Form, Label1, Label2, Label3, Label4: PControl;
end;
var
Form1: PForm1;
procedure CreateForm(var Result: PForm1; AParent: PControl);
begin
New(Result, Create);
with Result^ do
begin
Form := NewForm(AParent, 'Caption').SetSize(320, 240);
Form.CenterOnForm(nil);
Label1 := NewLabel(Form, 'Label1').SetPosition(8, 8);
Label1.Font.FontName := 'Tahoma';
Label1.Font.FontHeight := -11;
Label2 := NewLabel(Form, 'Label2').SetPosition(72, 8);
Label2.Font.FontName := 'Tahoma';
Label2.Font.FontHeight := -11;
Label3 := NewLabel(Form, 'Label3').SetPosition(136, 8);
Label3.Font.FontName := 'Tahoma';
Label3.Font.FontHeight := -15;
Label4 := NewLabel(Form, 'Label4').SetPosition(200, 8);
Label4.Font.FontName := 'Tahoma';
Label4.Font.FontHeight := -15;
end;
end;
begin
Applet := NewApplet('Test');
CreateForm(Form1, Applet);
Run(Applet);
end.
答案 1 :(得分:1)
问题1
调用表单上的SetPosition和SetSize方法。
Form.SetPosition(x,y);
Form.SetSize(w,h);
问题2
使用Font.FontHeight
。
MyControl.Font.FontHeight := ...;
答案 2 :(得分:0)
如果要调用SetWindowPos,可以检索调用返回指针的GetWindowHandle方法的句柄。
请不要在每个问题上提出超过1个问题。