Q&A

  • 메세지 박스를 크게 하려면

showMessageBox 또는 Application.MessageBox를 사용하는데
현장 작업자들이 사용하는 프로그램이다 보니 터치 스크린을 쓰다보니
작은 메세지 창으로는 작업 진행이 힘들군요.

메세지 창도 커야 하고 글자도 커야하고 버튼 크기도 커야 합니다.
메세지 박스의 크기, 폰트의 크기, 버튼의 크기를 재정의 해서 사용하는 방법이나
새로 만들어야 한다면 어떻게 만들어야 하는 지 알려 주시겠습니까?

무림고수분들의 열열한 지원을 부탁드립니다. ^^;;;;;

1  COMMENTS
  • Profile
    홍성락 2008.09.25 01:06
    [팁/테크] InputQuery, InputBox, InputComboBox 확장하기를 참조하시면 새로 만드실 수 있어요.
    Application.MessageBox 호출을 MessageBox만 해서, 유닛소스 위에서 선언하거나 맨 마지막 참조하는 유닛에 넣르셔도 되구요,
    아예 함수명을 바꾼후 사용하셔도 됩니다
    일단은 OK/Cancel'버튼 2개 짜리입니다.


    //****************************************************************************//

    function MessageBox(lpText, lpCaption: PChar; uType: UINT): Integer; stdcall;
    var
    Form: TForm;
    Prompt: TLabel;
    DialogUnits: TPoint;
    ButtonTop, ButtonWidth, ButtonHeight, FontSize: Integer;

    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;

    begin
    Result := IDNO;
    Form := TForm.Create(Application);
    with Form do
    try
    FontSize := 20; //폰트크기설정
    Font := Application.MainForm.Font; //폰트설정
    Canvas.Font := Application.MainForm.Font;//Font;
    Canvas.Font.Size := FontSize;
    DialogUnits := GetAveCharSize(Canvas);
    BorderStyle := bsDialog;
    Caption := lpCaption;
    ClientWidth := MulDiv(180, DialogUnits.X, 4);
    Position := poScreenCenter;
    Prompt := TLabel.Create(Form);
    with Prompt do
    begin
    Parent := Form;
    Font := Application.MainForm.Font; //폰트설정
    Font.Size := FontSize;
    Caption := lpText;
    Left := MulDiv(8, DialogUnits.X, 4);
    Top := MulDiv(8, DialogUnits.Y, 8);
    Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
    WordWrap := True;
    end;
    ButtonTop := Prompt.Top + Prompt.Height + 20;
    ButtonWidth := MulDiv(50, DialogUnits.X, 4);
    ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
    with TButton.Create(Form) do
    begin
    Parent := Form;
    Font := Application.MainForm.Font; //폰트설정
    Font.Size := FontSize;
    Caption := 'OK'; //OK버튼 글자
    ModalResult := mrOk;
    Default := True;
    SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth, ButtonHeight);
    end;
    with TButton.Create(Form) do
    begin
    Parent := Form;
    Font := Application.MainForm.Font; //폰트설정
    Font.Size := FontSize;
    Caption := 'Cancel'; //Cancel'버튼 글자
    ModalResult := mrCancel;
    Cancel := True;
    SetBounds(MulDiv(92, DialogUnits.X, 4), ButtonTop, ButtonWidth, ButtonHeight);
    Form.ClientHeight := Top + Height + 13;
    end;

    if ShowModal = mrOk then
    begin
    Result := IDYES;
    end;
    finally
    Form.Free;
    end;
    end;
    ////////////////////////////////////////////////////////////////////////////////
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    //if Application.MessageBox(pchar('msg_SaveQ'), 'BookMark', MB_YESNO) = IDNO then begin
    if MessageBox(pchar('msg_SaveQ'), 'BookMark', MB_YESNO) = IDNO then begin
    showmessage('123');
    end;
    end;