请写得详细些,最好以代码形式说明。我上网查了一些,虽然按照帖子上面的说法改了,可仍然不好使。拜托大家了!

解决方案 »

  1.   

    function InputQuery(const ACaption, APrompt: string;
      var Value: string): Boolean;
    var
      Form: TForm;
      Prompt: TLabel;
      Edit: TEdit;//改成 MaskEdit1: TMaskEdit;  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);//改成 MaskEdit1
          with Edit do  ///改成 MaskEdit1
          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 InputBox(const ACaption, APrompt, ADefault: string): string;
    begin
      Result := ADefault;
      InputQuery(ACaption, APrompt, Result);
    end;
    上面是INPUTBOX在delphi中的定义,你自己改一下,将edit->masktedit就可以了
      

  2.   

    将Edit的属性passwordchar由#0改为*即可
      

  3.   

    方法1:将InputBox中的InputQuery修改一下  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;
        PasswordChar:='*'//加上此句
        SelectAll;
      end;方法2:通过发送消息来修改
    1.获取InputBox中的Edit框句柄
    2.SendMessage(Handle, EM_SETPASSWORDCHAR, Ord('*'), 0);
      

  4.   

    为什么非要inputbox呢,直接自己画一个窗口不行吗?
      

  5.   

    为什么非要inputbox呢,直接自己画一个窗口不行吗?
      

  6.   


    InputBox是ShowModal出来的,没有结束对话框之前,下面的代码是不会被执行的。所以,第二种方法是不可行的。
      

  7.   

    感谢大家的热情回答。
    “PasswordChar:='*'//加上此句 ”这句加上了,可输入的时候还是没变成‘*’,why?自己画一个窗口的方法,我也知道。是一个朋友非要这么做,我只好来求大家帮助了!
      

  8.   

    uses
      Consts;
    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; APassWordChar: char = #0): 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
            passwordchar := APassWordChar;
            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;PassWordChar: char = #0): string;
    begin
      Result := ADefault;
      InputQueryEx(ACaption, APrompt, Result, PassWordChar);
    end;
      

  9.   

    InputBoxEx('测试密码输入','请输入密码:','password','*');