KOLについて2つ質問があります。
私はメインフォームを持っています。私が見たように、これは TForm の位置に配置されています。画面中央に配置したい。その座標、または「SetWindowPos」のハンドルにアクセスするにはどうすればよいですか?
フォームに 4 つのラベルがあります。そのうちの 2 つについては、小さいフォントを使用したいと考えています。しかし、フォントサイズのプロパティが見つかりません...どうすればいいですか?
KOLについて2つ質問があります。
私はメインフォームを持っています。私が見たように、これは TForm の位置に配置されています。画面中央に配置したい。その座標、または「SetWindowPos」のハンドルにアクセスするにはどうすればよいですか?
フォームに 4 つのラベルがあります。そのうちの 2 つについては、小さいフォントを使用したいと考えています。しかし、フォントサイズのプロパティが見つかりません...どうすればいいですか?
1.1。フォームを画面の中央に配置する方法は?
メソッドを使用しCenterOnForm
ます。説明が示すように、フォームに適用すると、フォームが画面の中央に配置されます。
Form.CenterOnForm(nil);
1.2. フォームの位置を取得するには?
Delphi と同じように、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つ以上質問しないでください。