當前位置:編程學習大全網 - 源碼下載 - delphi中的inpubox,如何能控制它的位置?

delphi中的inpubox,如何能控制它的位置?

inputbox封裝的是InputQuery函數,妳可以查看InputQuery的源代碼,發現在InputQuery函數裏面動態創建了壹個窗體,妳可以把InputQuery函數的源代碼復制出來,自己修改成可控制位置的就行了

unit inputboxExs;

interface

uses Windows, Graphics, Forms, StdCtrls, Consts, Dialogs, Controls;

function InputQueryEx(const ACaption, APrompt: string;

var Value: string; X, Y: Integer): Boolean;

function InputBoxEx(const ACaption, APrompt, ADefault: string; X, Y: Integer): string;

implementation

function GetAveCharSize(Canvas: TCanvas): TPoint;

var

I: Integer;

Buffer: array[0..51] of Char;

begin

for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));

for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));

GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));

Result.X := Result.X div 52;

end;

function InputQueryEx(const ACaption, APrompt: string;

var Value: string; X, Y: Integer): 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;

DialogUnits := GetAveCharSize(Canvas);

BorderStyle := bsDialog;

Caption := ACaption;

ClientWidth := MulDiv(180, DialogUnits.X, 4);

Left := X;

Top := Y;

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 := SMsgDlgOK;

ModalResult := mrOk;

Default := True;

SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,

ButtonHeight);

end;

with TButton.Create(Form) do

begin

Parent := Form;

Caption := SMsgDlgCancel;

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;

function InputBoxEx(const ACaption, APrompt, ADefault: string; X, Y: Integer): string;

begin

Result := ADefault;

InputQueryEx(ACaption, APrompt, Result, X, Y);

end;

以上是源代碼,在Delphi源代碼基礎上稍微修改了下,我單獨寫在了壹個文件中,使用時需要引用我這個單元文件,下面是調用示例:

uses inputboxExs;

procedure TForm1.Button2Click(Sender: TObject);

var str1, str2: string;

begin

// 參數中的X,Y,就是妳想設置的位置

str1 := InputBoxEx('註意', '輸入數字', str2, 100, 10);

ShowMessage(str1);

end;

  • 上一篇:將此通達信指標改成選股指標
  • 下一篇:Mtk5.1源代碼
  • copyright 2024編程學習大全網