2017-08-27 41 views
-1

正如問題所述,我想從左側開始從中間點開始打字。如何將輸入與UserInfoPage中的中心對齊?

短碼值:

with WizardForm.UserInfoNameEdit do 
    begin 
    Left := ScaleX(104); 
    Top := ScaleY(182); 
    Width := ScaleX(233); 
    Height := ScaleY(31); 
    Font.Height := -19; 
    MaxLength := 30; 
    ParentFont := False; 
    end; 

這裏的一些圖片:

Exemples

Exemples

+0

不,這是不可能的。對我來說這看起來像一個可怕的主意。 –

+0

[查看圖片](http://i.imgur.com/iJaU4cz.png)。 – Thebig1825

+0

這就是我的意思是可怕的想法。遵循Windows GUI風格。不要發明自己的。 –

回答

0

根據你的第三張照片,你可以使用自定義形式和定位您的控件表單的中心。

function CreateMyCustomUserDialog(): Boolean; 
var 
    Form: TSetupForm; 
    OKButton, CancelButton: TNewButton; 
    Label1: TLabel; 
    Edit1: TEdit; 
begin 
    Form := CreateCustomForm(); 
    try 
    Form.ClientWidth := ScaleX(256); 
    Form.ClientHeight := ScaleY(256); 
    Form.Caption := 'User Information'; 
    Form.CenterInsideControl(WizardForm, true); 

    OKButton := TNewButton.Create(Form); 
    OKButton.Parent := Form; 
    OKButton.Width := ScaleX(75); 
    OKButton.Height := ScaleY(23); 
    OKButton.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 10); 
    OKButton.Top := Form.ClientHeight - ScaleY(23 + 10); 
    OKButton.Caption := 'OK'; 
    OKButton.ModalResult := mrOk; 

    Label1 := TLabel.Create(Form); 
    Label1.Parent := Form; 
    Label1.Alignment := taCenter; 
    Label1.Caption := 'Username:'; 
    Label1.Width := Form.ClientWidth; 
    Label1.Height := ScaleY(23);  
    Label1.Top := 30;  

    Edit1 := TEdit.Create(Form); 
    Edit1.Parent := Form; 
    Edit1.Top := 50; 
    Edit1.Width := 100; 
    Edit1.Left := (Form.ClientWidth - Edit1.Width)/2; 
    Edit1.Text := 'Admin';   

    CancelButton := TNewButton.Create(Form); 
    CancelButton.Parent := Form; 
    CancelButton.Width := ScaleX(75); 
    CancelButton.Height := ScaleY(23); 
    CancelButton.Left := Form.ClientWidth - ScaleX(75 + 10); 
    CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10); 
    CancelButton.Caption := 'Cancel'; 
    CancelButton.ModalResult := mrCancel; 
    CancelButton.Cancel := True; 

    Form.ActiveControl := OKButton; 

    if Form.ShowModal() = mrOk then 
     MsgBox('You clicked OK.', mbInformation, MB_OK); 
    finally 
    Form.Free(); 
    end; 
end; 
+0

我有此代碼:[鏈接](https://paste.ee/p/PSGqJ) – Thebig1825

+0

您的代碼不完整。不過,我看到你正在使用WizardForm.UserInfoPage;作爲父母的形式。那麼你爲什麼不嘗試類似於你想要控制的東西。 'Left:=(WizardForm.UserInfoPage.ClientWidth - Width)/ 2;' – DeadTrousers