如何将输入与UserInfoPage中的中心对齐?

问题描述:

正如问题所述,我想从左侧开始从中间点开始打字。如何将输入与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风格。不要发明自己的。 –

根据你的第三张照片,你可以使用自定义形式和定位您的控件表单的中心。

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