首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi怎么实现同时弹出两个对话框

2013-07-09 
delphi如何实现同时弹出两个对话框?如题,求源码~~~~~~Delphi对话框源代码[解决办法]最近的方法,放个Timerp

delphi如何实现同时弹出两个对话框?
如题,求源码~~~~~~ Delphi 对话框 源代码
[解决办法]
最近的方法,放个Timer


procedure TForm1.btn1Click(Sender: TObject);
begin
  tmr1.Interval:=50;
  tmr1.Enabled:=True;
  ShowMessage('第一个');
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
  tmr1.Enabled:=False;
  ShowMessagePos('第二个',300,300); // 改变现实位置以方便观察,否则两个消息框会重叠
end;

[解决办法]
动态创建窗体也可以实现。

unit mydialogs;

interface

uses Windows,
     Graphics,
     Controls,
     Forms,
     StdCtrls;
function MyInputQuery(const ACaption, APrompt: string;var Value: string;const IsPass:Boolean): Boolean;
function MyInputBox(const ACaption, APrompt, ADefault: string;const IsPass:Boolean): 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 MyInputQuery(const ACaption, APrompt: string;var Value: string;const IsPass:Boolean): 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);
      ClientHeight := MulDiv(63, DialogUnits.Y, 8);
      Position := poScreenCenter;
      Prompt := TLabel.Create(Form);
      with Prompt do
      begin
        Parent := Form;
          //ADD By Aiming
          Font.Name := 'Times New Roman';
          Font.Size := 9;
          layout := tlCenter;
        //change By Aiming
        AutoSize := False;
        Left := MulDiv(8, DialogUnits.X, 4);
        Top := 0;
        Width := Muldiv(180-2*8,DialogUnits.X,4);
        Height := Muldiv(18,DialogUnits.Y,8);  // _EDIT.Top := MulDiv(19, DialogUnits.Y, 8);
        WordWrap := True;
{
        AutoSize := True;
        Top := MulDiv(8, DialogUnits.Y, 8);
        Left := MulDiv(8, DialogUnits.X, 4);
}
        Caption := APrompt;
      end;
      Edit := TEdit.Create(Form);
      with Edit do
      begin
        Parent := Form;
        If IsPass then PasswordChar :='*';//设置密码输入
        Left := Prompt.Left;
        Top := MulDiv(19, DialogUnits.Y, 8);
        Width := MulDiv(164, DialogUnits.X, 4);


        MaxLength := 255;
        Text := Value;
        SelectAll;
      end;
      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;
          //ADD By Aiming
          Font.Name := 'Times New Roman';
          Font.Size := 9;
        //Change by Aiming
        Caption := '确认';
        //Caption := SMsgDlgOK;
        ModalResult := mrOk;
        Default := True;
        SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
          ButtonHeight);
      end;
      with TButton.Create(Form) do
      begin
        Parent := Form;
          //ADD By Aiming
          Font.Name := 'Times New Roman';
          Font.Size := 9;
        //Change by Aiming
        Caption := '放弃';
        //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;

function MyInputBox(const ACaption, APrompt, ADefault: string;const IsPass:Boolean): string;
begin
  Result := ADefault;
  MyInputQuery(ACaption, APrompt, Result,IsPass);
end;

end.



这个例子是带输入的,如果不需要自己改动一下好了。
[解决办法]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Show;
  Form3.Show
end;

热点排行