線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1253
推到 Plurk!
推到 Facebook!

InputQuery()輸入資料時如何控制顯示或不顯示或顯示'*'

尚未結案
zhczm
一般會員


發表:66
回覆:15
積分:16
註冊:2003-06-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-16 15:55:40 IP:211.152.xxx.xxx 未訂閱
謝謝
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-16 16:21:00 IP:210.65.xxx.xxx 未訂閱
Hi:    不太了解你所說的 InputQuery() 是什麼元件?    不過一些 EDIT 元件(TEdit,TMaskEdit,TDBEdit....)都有 PasswordChar 的屬性,將它設為 * 即可於輸入時顯示 '*' 而不會直接顯示輸入值 -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-16 16:28:20 IP:211.22.xxx.xxx 未訂閱
您好: InputQuery() 好像沒辦法做到您想要的 但您可以自訂一 InputQuery然後再上面的TEDIT的 如Fishman大大所言設定PasswordChar ~~應無所住而生其心~~
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-16 22:03:37 IP:218.32.xxx.xxx 未訂閱
zhczm 你好:    把 Dialog.pas 的 Source 改改就行啦, 這也是我喜歡 Delphi 的原因之一.    以下範例, 改叫用 MyInputQuery Function.
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 MyInputQuery(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;
      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;
        PasswordChar := '*';
        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 := 'OK';
        ModalResult := mrOk;
        Default := True;
        SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
          ButtonHeight);
      end;
      with TButton.Create(Form) do
      begin
        Parent := Form;
        Caption := 'Cancel';
        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;    
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-16 22:21:42 IP:211.76.xxx.xxx 未訂閱
Mickey大大果然厲害又讓小弟偷學一招了 ~~應無所住而生其心~~
系統時間:2024-06-02 13:56:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!