我有两个关于 KOL 的问题。
我有一个主要形式。正如我所看到的,这放置在 TForm 的位置上。我想把它放到屏幕中心。如何访问它的坐标或“SetWindowPos”的句柄?
我在表格中有 4 个标签。对于其中 2 个,我想使用较小的字体。但我没有找到任何字体大小属性......那该怎么做呢?
我有两个关于 KOL 的问题。
我有一个主要形式。正如我所看到的,这放置在 TForm 的位置上。我想把它放到屏幕中心。如何访问它的坐标或“SetWindowPos”的句柄?
我在表格中有 4 个标签。对于其中 2 个,我想使用较小的字体。但我没有找到任何字体大小属性......那该怎么做呢?
1.1。如何在屏幕上居中表格?
使用CenterOnForm
方法。正如描述所说,如果将其应用于表单,则会在屏幕上居中表单:
Form.CenterOnForm(nil);
1.2. 如何获得表格位置?
就像在德尔福中一样,由Left
andTop
属性或例如由Position
属性。以下伪代码结果相同:
ShowMessage('Form pos.: [' +
Int2Str(Form.Left) + '; ' +
Int2Str(Form.Top) + ']'
);
ShowMessage('Form pos: [' +
Int2Str(Form.Position.X) + '; ' +
Int2Str(Form.Position.Y) + ']'
);
请注意,除非您自己更改表单位置或直到小程序运行,否则这两个属性都返回 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
在窗体上调用 SetPosition 和 SetSize 方法。
Form.SetPosition(x,y);
Form.SetSize(w,h);
问题2
使用Font.FontHeight
.
MyControl.Font.FontHeight := ...;
如果要调用 SetWindowPos,可以检索调用返回指针的 GetWindowHandle 方法的句柄。
请,每个问题不要问超过 1 个问题。