如何在KOL表单中设置表单位置和字体大小

时间:2012-12-11 07:22:09

标签: delphi properties kol

我有两个关于KOL的问题。

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

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

3 个答案:

答案 0 :(得分:3)

1.1。如何在屏幕上显示表单?

使用CenterOnForm方法。如描述所示,如果它应用于表单,则中心在屏幕上形成:

Form.CenterOnForm(nil);

1.2。如何获得表格位置?

就像在LeftTop属性中的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)

  1. 如果要调用SetWindowPos,可以检索调用返回指针的GetWindowHandle方法的句柄。

  2. 请不要在每个问题上提出超过1个问题。