今天在程序中用到INPUTBOX调用时候却发现INPUTBOX不见了?原来是跑到程序的后面了,看不见。
处理方法:自己写个inputbox函数以备调用.
function
InputQbox(
const
ACaption, APrompt:
string
;
var Value: string ): Boolean;
var
Form: TForm;
Prompt: TLabel;
Edit: TEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result : = False;
Form : = TForm.Create(Application);
with Form do
try
Canvas.Font : = Font;
FormStyle: = fsStayOnTop; // 加上这就OK了
DialogUnits : = GetAveCharSize(Canvas);
BorderStyle : = bsDialog;
Caption : = ACaption;
ClientWidth : = MulDiv( 180 , DialogUnits.X, 4 );
Position : = poScreenCenter;
Prompt : = TLabel.Create(Form);
with Prompt do
begin
Parent : = Form;
Caption : = APrompt;
Left : = MulDiv( 8 , DialogUnits.X, 4 );
Top : = MulDiv( 8 , DialogUnits.Y, 8 );
Constraints.MaxWidth : = MulDiv( 164 , DialogUnits.X, 4 );
WordWrap : = True;
end ;
Edit : = TEdit.Create(Form);
with Edit do
begin
Parent : = Form;
Left : = Prompt.Left;
Top : = Prompt.Top + Prompt.Height + 5 ;
Width : = MulDiv( 164 , DialogUnits.X, 4 );
MaxLength : = 255 ;
Text : = Value;
SelectAll;
end ;
ButtonTop : = Edit.Top + Edit.Height + 15 ;
ButtonWidth : = MulDiv( 50 , DialogUnits.X, 4 );
ButtonHeight : = MulDiv( 14 , DialogUnits.Y, 8 );
with TButton.Create(Form) do
begin
Parent : = Form;
Caption : = ' 确定 ' ;
ModalResult : = mrOk;
Default : = True;
SetBounds(MulDiv( 38 , DialogUnits.X, 4 ), ButtonTop, ButtonWidth,
ButtonHeight);
end ;
with TButton.Create(Form) do
begin
Parent : = Form;
Caption : = ' 取消 ' ;
ModalResult : = mrCancel;
Cancel : = True;
SetBounds(MulDiv( 92 , DialogUnits.X, 4 ), Edit.Top + Edit.Height + 15 ,
ButtonWidth, ButtonHeight);
Form.ClientHeight : = Top + Height + 13 ;
end ;
if ShowModal = mrOk then
begin
Value : = Edit.Text;
Result : = True;
end ;
finally
Form.Free;
end ;
end ;
var Value: string ): Boolean;
var
Form: TForm;
Prompt: TLabel;
Edit: TEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result : = False;
Form : = TForm.Create(Application);
with Form do
try
Canvas.Font : = Font;
FormStyle: = fsStayOnTop; // 加上这就OK了
DialogUnits : = GetAveCharSize(Canvas);
BorderStyle : = bsDialog;
Caption : = ACaption;
ClientWidth : = MulDiv( 180 , DialogUnits.X, 4 );
Position : = poScreenCenter;
Prompt : = TLabel.Create(Form);
with Prompt do
begin
Parent : = Form;
Caption : = APrompt;
Left : = MulDiv( 8 , DialogUnits.X, 4 );
Top : = MulDiv( 8 , DialogUnits.Y, 8 );
Constraints.MaxWidth : = MulDiv( 164 , DialogUnits.X, 4 );
WordWrap : = True;
end ;
Edit : = TEdit.Create(Form);
with Edit do
begin
Parent : = Form;
Left : = Prompt.Left;
Top : = Prompt.Top + Prompt.Height + 5 ;
Width : = MulDiv( 164 , DialogUnits.X, 4 );
MaxLength : = 255 ;
Text : = Value;
SelectAll;
end ;
ButtonTop : = Edit.Top + Edit.Height + 15 ;
ButtonWidth : = MulDiv( 50 , DialogUnits.X, 4 );
ButtonHeight : = MulDiv( 14 , DialogUnits.Y, 8 );
with TButton.Create(Form) do
begin
Parent : = Form;
Caption : = ' 确定 ' ;
ModalResult : = mrOk;
Default : = True;
SetBounds(MulDiv( 38 , DialogUnits.X, 4 ), ButtonTop, ButtonWidth,
ButtonHeight);
end ;
with TButton.Create(Form) do
begin
Parent : = Form;
Caption : = ' 取消 ' ;
ModalResult : = mrCancel;
Cancel : = True;
SetBounds(MulDiv( 92 , DialogUnits.X, 4 ), Edit.Top + Edit.Height + 15 ,
ButtonWidth, ButtonHeight);
Form.ClientHeight : = Top + Height + 13 ;
end ;
if ShowModal = mrOk then
begin
Value : = Edit.Text;
Result : = True;
end ;
finally
Form.Free;
end ;
end ;