全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1660
推到 Plurk!
推到 Facebook!

InputBox的位置

答題得分者是:rick060
kirei6989
一般會員


發表:16
回覆:13
積分:5
註冊:2011-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-06-21 08:17:37 IP:210.202.xxx.xxx 訂閱
請問大家InputBox可以設定視窗位置嗎?
如果可以Code該怎麼寫,謝謝。
rick060
高階會員


發表:2
回覆:112
積分:217
註冊:2009-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-06-21 09:27:39 IP:60.250.xxx.xxx 未訂閱
 InputBox 只是一個簡單的 wrapper ..你可以隨意弄出你想要的樣式、外型、內容。
如果你的版本有含 Source Code , 可以在 debug 時按 F7 進入察看
以 d7 為例:

function InputQuery(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); //建一個 form
with Form do
try
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
BorderStyle := bsDialog;
Caption := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
Position := poScreenCenter; //設定位置,當然你要改 Left / Top 也行
Prompt := TLabel.Create(Form); //建一個label
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); //建一個 edit
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 //button
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 //按下 ok 後的事..
begin
Value := Edit.Text;
Result := True;
end;
finally
Form.Free;
end;
end;
kirei6989
一般會員


發表:16
回覆:13
積分:5
註冊:2011-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-06-22 14:14:31 IP:210.202.xxx.xxx 訂閱
好像看不到source Code這樣是不是自己開個Form寫成InputBox比較快呢?
g6101
高階會員


發表:22
回覆:129
積分:110
註冊:2002-06-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-06-22 17:23:31 IP:59.112.xxx.xxx 訂閱

.如你所說,是的!
.提供一個老妖的作品,再試著將 GetWindowRect 與 SetWindowRect 及視窗位置 API 套用看看。
編輯記錄
g6101 重新編輯於 2011-06-22 03:31:05, 註解 無‧
系統時間:2024-11-21 20:10:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!