請問要如何限制"InputBox"輸入資料類型?? |
尚未結案
|
hango
一般會員 發表:5 回覆:10 積分:3 註冊:2004-04-06 發送簡訊給我 |
|
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
|
hjj1103
一般會員 發表:3 回覆:26 積分:5 註冊:2002-11-03 發送簡訊給我 |
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
|
macrojackson
一般會員 發表:1 回覆:2 積分:0 註冊:2004-08-31 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
hango: InputBox 可以做到應用面看你自己處理, 原Vcl\Source\dialogs.pas 不要動,也不要改 將dialogs.pas copy回你BCB專案檔案下 開啟你的BCB專案目錄下dialogs.pas 找到function InputQuery裡的注意紅字部分是你要加入或修改的部分! function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean; var Form: TForm; Prompt: TLabel; Edit: TEdit; fstyle: dWord; // 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); ClientHeight := MulDiv(63, DialogUnits.Y, 8); Position := poScreenCenter; Prompt := TLabel.Create(Form); with Prompt do begin Parent := Form; Left := MulDiv(8, DialogUnits.X, 4); Top := MulDiv(8, DialogUnits.Y, 8); Width := 160; // 保證中文顯示沒問題 AutoSize := False; Caption := APrompt; end; Edit := TEdit.Create(Form); with Edit do begin Parent := Form; Left := Prompt.Left; Top := MulDiv(19, DialogUnits.Y, 8); Width := MulDiv(164, DialogUnits.X, 4); MaxLength := 255; // PasswordChar:='*'; // 密碼方式輸入 Text := Value; SelectAll; end; fstyle := GetWindowLong(Edit.Handle, GWL_STYLE); // SetWindowLong(Edit.Handle, GWL_STYLE, fstyle or ES_NUMBER); // ButtonTop := MulDiv(41, DialogUnits.Y, 8); 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), ButtonTop, ButtonWidth, ButtonHeight); end; if ShowModal = mrOk then begin Value := Edit.Text; Result := True; end; finally Form.Free; end; end; 這是以用API實現數值型Edit! 只要你的這隻同目錄下的dialogs.pas 加入你的project即可 記著你的專案檔案只要 project-> add BCB專案目錄下dialogs.pas 程式裡不要Include dialogs.pas 請參考!Andy Chang 發表人 - andychang1690 於 2004/09/15 18:11:12
------
Andy Chang |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |