-1

我有两个关于 KOL 的问题。

  1. 我有一个主要形式。正如我所看到的,这放置在 TForm 的位置上。我想把它放到屏幕中心。如何访问它的坐标或“SetWindowPos”的句柄?

  2. 我在表格中有 4 个标签。对于其中 2 个,我想使用较小的字体。但我没有找到任何字体大小属性......那该怎么做呢?

4

3 回答 3

3

1.1。如何在屏幕上居中表格?

使用CenterOnForm方法。正如描述所说,如果将其应用于表单,则会在屏幕上居中表单:

Form.CenterOnForm(nil);

1.2. 如何获得表格位置?

就像在德尔福中一样,由LeftandTop属性或例如由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.
于 2012-12-12T01:58:57.560 回答
1

问题 1

在窗体上调用 SetPosition 和 SetSize 方法。

Form.SetPosition(x,y);
Form.SetSize(w,h);

问题2

使用Font.FontHeight.

MyControl.Font.FontHeight := ...;
于 2012-12-11T07:54:44.963 回答
0
  1. 如果要调用 SetWindowPos,可以检索调用返回指针的 GetWindowHandle 方法的句柄。

  2. 请,每个问题不要问超过 1 个问题。

于 2012-12-11T07:59:48.230 回答