-1

KOLについて2つ質問があります。

  1. 私はメインフォームを持っています。私が見たように、これは TForm の位置に配置されています。画面中央に配置したい。その座標、または「SetWindowPos」のハンドルにアクセスするにはどうすればよいですか?

  2. フォームに 4 つのラベルがあります。そのうちの 2 つについては、小さいフォントを使用したいと考えています。しかし、フォントサイズのプロパティが見つかりません...どうすればいいですか?

4

3 に答える 3

3

1.1。フォームを画面の中央に配置する方法は?

メソッドを使用しCenterOnFormます。説明が示すように、フォームに適用すると、フォームが画面の中央に配置されます。

Form.CenterOnForm(nil);

1.2. フォームの位置を取得するには?

Delphi と同じように、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 に答える