Delphi 7 - 如何使用输入框
Posted
技术标签:
【中文标题】Delphi 7 - 如何使用输入框【英文标题】:Delphi 7 - how to use Inputbox 【发布时间】:2013-05-25 16:44:34 【问题描述】:我正在编写一个程序,您必须在 InputBox 中输入密码才能访问程序的最小功能。但是,如果您在输入框中单击取消,我的程序会给出错误消息。所以我想知道是否有人知道我怎样才能做到这一点,因为使用 Messagedlg 我知道你使用 IF 。但是我怎样才能用 InputBox 把它弄好呢?
【问题讨论】:
请向我们展示您的代码) 【参考方案1】:InputBox()
如果对话框被取消,则返回一个空字符串,例如:
var
Pass: String;
Pass := InputBox('Password needed', 'Enter the password:');
if Pass <> '' then
begin
// use Pass as needed...
end;
或者,使用InputQuery()
代替,它返回一个Boolean
来指示对话是否被取消,例如:
var
Pass: String;
if InputQuery('Password needed', 'Enter the password:', Pass) then
begin
// use Pass as needed...
end;
【讨论】:
@Remy_Lebeau 感谢您的帮助,我会去尝试的。我还有 1 个问题,你知道如何让输入框被屏蔽吗?我知道要改变什么,但我需要编写一个知道的 InputBox 函数吗?? @CordreSmith 关于屏蔽输入框***.com/q/591333/1699210 将#31+'输入密码'作为第二个参数传递给 InputQuery 会导致框中的 TEdit 回显密码字符而不是输入的文本。 @Freddiebell:任何低于#32
的值都会导致TEdit.PasswordChar
被设置为'*'
。但是,该功能是在 XE2 中引入的,因此在 D7 中不存在。【参考方案2】:
很多时候最好有一个自定义的 InputQuery
function InputValor(const aCaption: String; APrompt: string; var aValor:
String): Boolean;
var
vForm : TForm;
vLabel : TLabel;
vBtnOk : TBitBtn;
vValor : TEdit;
vBtnCancel : TBitBtn;
begin
Result := False;
vForm := TForm.Create(Application);
vLabel := TLabel.Create(vForm);
vValor := TEdit.Create(vForm);
vBtnOk := TBitBtn.Create(vForm);
vBtnCancel := TBitBtn.Create(vForm);
with vForm do
begin
Name := 'frmValor';
Position := poScreenCenter;
BorderIcons := [biSystemMenu];
BorderStyle := bsDialog;
Caption := aCaption;
ClientHeight := 150;
ClientWidth := 515;
Color := clBtnFace;
OldCreateOrder := False;
Font.Charset := DEFAULT_CHARSET;
Font.Color := clWindowText;
Font.Height := -11;
Font.Name := 'Tahoma';
Font.Style := [];
OldCreateOrder := False;
PixelsPerInch := 96;
Left := 0;
Top := 0;
end;
with vLabel do
begin
Name := 'vLabel';
Parent := vForm;
AutoSize := False;
Left := 18;
Top := 15;
Width := 484;
Height := 41;
Caption := APrompt;
WordWrap := True;
end;
with vValor do
begin
Name := 'vValorEdit';
Parent := vForm;
Left := 18;
Top := 62;
Width := 484;
Height := 21;
Text := '';
end;
with vBtnOk do
begin
Name := 'vBtnOk';
Parent := vForm;
Caption := 'Aceptar';
Left := 335;
Top := 103;
Width := 75;
Height := 25;
TabOrder := 1;
ModalResult := mrOk;
end;
with vBtnCancel do
begin
Name := 'vBtnCancel';
Parent := vForm;
Caption := 'Cancelar';
Left := 427;
Top := 103;
Width := 75;
Height := 25;
TabOrder := 2;
ModalResult := mrCancel;
end;
vForm.ShowModal;
if (vForm.ModalResult = mrOk) and (vValor.Text <> '') then
begin
Result := True;
aValor := vValor.Text;
end else
begin
Result := False;
aValor := '';
end;
FreeAndNil(vForm);
end;
使用方式与官方相同:
var
vTest : String;
begin
if (InputValor('Title', 'Label text', vTest) = True) then
ShowMessage(vTest);
end;
【讨论】:
以上是关于Delphi 7 - 如何使用输入框的主要内容,如果未能解决你的问题,请参考以下文章
delphi中如何让文本框只输入数字、减号、小数点、汉字和退格键
请问如何通过Delphi编程,做到一个输入框中,只能输入汉字,而不能输入数字或其他字符?
Delphi 如何操作外部程序的控件(如按钮,文本框,单选按钮等)
在delphi中使用ApplicationEvents控件,如何调用ApplicationEvents1Exception?