⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 suidlg.pas

📁 SUIPack是一款为Delphi和C++Builder开发的所见即所得的界面增强VCL组件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
////////////////////////////////////////////////////////////////////////////////
//
//
//  FileName    :   SUIDlg.pas
//  Creator     :   Shen Min
//  Date        :   2003-03-31 V1-V3
//                  2003-07-14 V4
//                  2006-06-16 V6
//  Comment     :
//
//  Copyright (c) 2002-2006 Sunisoft
//  http://www.sunisoft.com
//  Email: support@sunisoft.com
//
////////////////////////////////////////////////////////////////////////////////

unit SUIDlg;

interface

{$I SUIPack.inc}

uses Controls, Classes, Math, Forms, Dialogs, Graphics, SysUtils,
     SUIThemes, SUIMgr, SUI2Define;

type
    TsuiDialogButtonsCount = 1..3;
    TsuiIconType = (suiNone, suiWarning, suiStop, suiInformation, suiHelp);

type
    TsuiDialog = class(TComponent)
    private
        m_Position : TPosition;
        m_Caption : TCaption;
        m_ButtonCursor : TCursor;
        m_UIStyle : TsuiUIStyle;
        m_FileTheme : TsuiFileTheme;
        m_Font : TFont;
        m_CaptionFont : TFont;

        procedure SetFileTheme(const Value: TsuiFileTheme);
        procedure SetUIStyle(const Value: TsuiUIStyle);
        procedure SetFont(const Value: TFont);
        procedure SetCaptionFont(const Value: TFont);

    protected
        procedure Notification(AComponent: TComponent; Operation: TOperation); override;
        property ButtonCursor : TCursor read m_ButtonCursor write m_ButtonCursor;

    public
        constructor Create(AOwner : TComponent); override;
        destructor Destroy(); override;
        
        function ShowModal : TModalResult; virtual; abstract;

    published
        property FileTheme : TsuiFileTheme read m_FileTheme write SetFileTheme;
        property Position : TPosition read m_Position write m_Position;
        property Caption : TCaption read m_Caption write m_Caption;
        property UIStyle : TsuiUIStyle read m_UIStyle write SetUIStyle;
        property Font : TFont read m_Font write SetFont;
        property CaptionFont : TFont read m_CaptionFont write SetCaptionFont;

    end;

    TsuiMessageDialog = class(TsuiDialog)
    private
        m_ButtonCount : TsuiDialogButtonsCount;
        m_Button1Caption : TCaption;
        m_Button2Caption : TCaption;
        m_Button3Caption : TCaption;
        m_Button1ModalResult : TModalResult;
        m_Button2ModalResult : TModalResult;
        m_Button3ModalResult : TModalResult;
        m_IconType : TsuiIconType;
        m_Text : String;

    public
        constructor Create(AOwner : TComponent); override;
        function ShowModal : TModalResult; override;

    published
        property ButtonCursor;
        property ButtonCount : TsuiDialogButtonsCount read m_ButtonCount write m_ButtonCount;
        property Button1Caption : TCaption read m_Button1Caption write m_Button1Caption;
        property Button2Caption : TCaption read m_Button2Caption write m_Button2Caption;
        property Button3Caption : TCaption read m_Button3Caption write m_Button3Caption;
        property Button1ModalResult : TModalResult read m_Button1ModalResult write m_Button1ModalResult;
        property Button2ModalResult : TModalResult read m_Button2ModalResult write m_Button2ModalResult;
        property Button3ModalResult : TModalResult read m_Button3ModalResult write m_Button3ModalResult;
        property IconType : TsuiIconType read m_IconType write m_IconType;
        property Text : String read m_Text write m_Text;

    end;

    TsuiPasswordDialog = class(TsuiDialog)
    private
        m_ButtonCancelCaption: TCaption;
        m_ButtonOKCaption: TCaption;
        m_Item1Caption: TCaption;
        m_Item1PasswordChar: Char;
        m_Item2Caption: TCaption;
        m_Item2PasswordChar: Char;
        m_Item1Text : String;
        m_Item2Text : String;

    public
        constructor Create(AOwner : TComponent); override;
        function ShowModal : TModalResult; override;

    published
        property Item1Caption : TCaption read m_Item1Caption write m_Item1Caption;
        property Item2Caption : TCaption read m_Item2Caption write m_Item2Caption;
        property Item1PasswordChar : Char read m_Item1PasswordChar write m_Item1PasswordChar;
        property Item2PasswordChar : Char read m_Item2PasswordChar write m_Item2PasswordChar;
        property Item1Text : String read m_Item1Text write m_Item1Text;
        property Item2Text : String read m_Item2Text write m_Item2Text;
        property ButtonOKCaption : TCaption read m_ButtonOKCaption write m_ButtonOKCaption;
        property ButtonCancelCaption : TCaption read m_ButtonCancelCaption write m_ButtonCancelCaption;
        property ButtonCursor;
    end;

    TsuiInputDialog = class(TsuiDialog)
    private
        m_ButtonCancelCaption: TCaption;
        m_ButtonOKCaption: TCaption;
        m_PromptText : String;
        m_ValueText : String;
        m_PasswordChar : Char;

    public
        constructor Create(AOwner : TComponent); override;
        function ShowModal : TModalResult; override;

    published
        property PasswordChar : Char read m_PasswordChar write m_PasswordChar;
        property PromptText : String read m_PromptText write m_PromptText;
        property ValueText : String read m_ValueText write m_ValueText;
        property ButtonOKCaption : TCaption read m_ButtonOKCaption write m_ButtonOKCaption;
        property ButtonCancelCaption : TCaption read m_ButtonCancelCaption write m_ButtonCancelCaption;
        property ButtonCursor;
    end;

    function SUIMsgDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; UIStyle : TsuiUIStyle = SUI_THEME_DEFAULT): TModalResult; overload;
    function SUIMsgDlg(const Msg, Caption : String; DlgType : TMsgDlgType; Buttons: TMsgDlgButtons; UIStyle : TsuiUIStyle = SUI_THEME_DEFAULT) : TModalResult; overload;

    function SUIMsgDlgFromSkinFile(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; const FileTheme : TsuiFileTheme): TModalResult; overload;
    function SUIMsgDlgFromSkinFile(const Msg, Caption : String; DlgType : TMsgDlgType; Buttons: TMsgDlgButtons; const FileTheme : TsuiFileTheme) : TModalResult; overload;


implementation

uses frmPassword, frmMessage, frmInput, SUIButton, SUIResDef, SUIPublic;

//function SUIMsgDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; UIStyle : TsuiUIStyle = SUI_THEME_DEFAULT): TModalResult;
//var
//    MsgDlg : TsuiMessageDialog;
//begin
//    MsgDlg := TsuiMessageDialog.Create(nil);
//    MsgDlg.UIStyle := UIStyle;
//    MsgDlg.Text := Msg;
//
//    case DlgType of
//    mtWarning : MsgDlg.IconType := suiWarning;
//    mtError : MsgDlg.IconType := suiStop;
//    mtInformation : MsgDlg.IconType := suiInformation;
//    mtConfirmation : MsgDlg.IconType := suiHelp;
//    mtCustom : MsgDlg.IconType := suiNone;
//    end; // case
//
//    //mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp
//
//    Result := MsgDlg.ShowModal();
//    MsgDlg.Free();
//end;

function SUIMsgDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; UIStyle : TsuiUIStyle = SUI_THEME_DEFAULT): TModalResult;
begin
    if Assigned(Application) then
        Result := SUIMsgDlg(Msg, Application.Title, DlgType, Buttons, UIStyle)
    else
        Result := SUIMsgDlg(Msg, 'Default', DlgType, Buttons, UIStyle)
end;

function SUIMsgDlg(const Msg, Caption : String; DlgType : TMsgDlgType; Buttons: TMsgDlgButtons; UIStyle : TsuiUIStyle = SUI_THEME_DEFAULT) : TModalResult;
var
    MsgDlg : TsuiMessageDialog;
    B: TMsgDlgBtn;
    bc: String;
    bmr: TModalResult;
    btnCnt: Integer;
begin
    MsgDlg := TsuiMessageDialog.Create(nil);
    MsgDlg.Text := Msg;

    btnCnt := 0;
    bmr := mrOK;

    for B := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do
    begin
      if B in Buttons then
      begin
        inc(btnCnt);

        case B of
          //ESTABLISH BUTTON CAPTION
          mbOk:    bmr := mrOK;
          mbYes:   bmr := mrYes;
          mbNo:    bmr := mrNo;
          mbYesToAll:  bmr := mrYesToAll;
          mbNoToAll:   bmr := mrNoToAll;
          mbAbort:  bmr := mrAbort;
          mbCancel: bmr := mrCancel;
          mbRetry:  bmr := mrRetry;
          mbIgnore: bmr := mrIgnore;
          mbAll:    bmr := mrAll;
          //mbHelp:   begin bc := 'Help'; bmr := mrHelp end;
        end;
        bc := GetLocaleButtonCaption(B);

        Case btnCnt of
          //ESTABLISH BUTTON RESULT
          1:  begin MsgDlg.Button1Caption := bc; MsgDlg.Button1ModalResult := bmr; end;
          2:  begin MsgDlg.Button2Caption := bc; MsgDlg.Button2ModalResult := bmr; end;
          3:  begin MsgDlg.Button3Caption := bc; MsgDlg.Button3ModalResult := bmr; end;
        end;

      end;
    end;

    MsgDlg.ButtonCount := btnCnt;

    case DlgType of
    mtWarning : MsgDlg.IconType := suiWarning;
    mtError : MsgDlg.IconType := suiStop;
    mtInformation : MsgDlg.IconType := suiInformation;
    mtConfirmation : MsgDlg.IconType := suiHelp;
    mtCustom : MsgDlg.IconType := suiNone;
    end; // case

    //mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp

    MsgDlg.UIStyle := UIStyle;
    MsgDlg.Caption := Caption;
    Result := MsgDlg.ShowModal();
    MsgDlg.Free();
end;

function SUIMsgDlgFromSkinFile(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; const FileTheme : TsuiFileTheme): TModalResult; overload;
begin
    if Assigned(Application) then
        Result := SUIMsgDlgFromSkinFile(Msg, Application.Title, DlgType, Buttons, FileTheme)
    else
        Result := SUIMsgDlgFromSkinFile(Msg, 'Default', DlgType, Buttons, FileTheme)
end;

function SUIMsgDlgFromSkinFile(const Msg, Caption : String; DlgType : TMsgDlgType; Buttons: TMsgDlgButtons; const FileTheme : TsuiFileTheme) : TModalResult; overload;
var
    MsgDlg : TsuiMessageDialog;
    B: TMsgDlgBtn;
    bc: String;
    bmr: TModalResult;
    btnCnt: Integer;
begin
    MsgDlg := TsuiMessageDialog.Create(nil);
    MsgDlg.Text := Msg;

    btnCnt := 0;
    bmr := mrOK;

    for B := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do
    begin
      if B in Buttons then
      begin
        inc(btnCnt);

        case B of
          //ESTABLISH BUTTON CAPTION
          mbOk:    bmr := mrOK;
          mbYes:   bmr := mrYes;
          mbNo:    bmr := mrNo;
          mbYesToAll:  bmr := mrYesToAll;
          mbNoToAll:   bmr := mrNoToAll;
          mbAbort:  bmr := mrAbort;
          mbCancel: bmr := mrCancel;
          mbRetry:  bmr := mrRetry;
          mbIgnore: bmr := mrIgnore;
          mbAll:    bmr := mrAll;
          //mbHelp:   begin bc := 'Help'; bmr := mrHelp end;

        end;
        bc := GetLocaleButtonCaption(B);

        Case btnCnt of
          //ESTABLISH BUTTON RESULT
          1:  begin MsgDlg.Button1Caption := bc; MsgDlg.Button1ModalResult := bmr; end;
          2:  begin MsgDlg.Button2Caption := bc; MsgDlg.Button2ModalResult := bmr; end;
          3:  begin MsgDlg.Button3Caption := bc; MsgDlg.Button3ModalResult := bmr; end;
        end;

      end;
    end;

    MsgDlg.ButtonCount := btnCnt;

    case DlgType of
    mtWarning : MsgDlg.IconType := suiWarning;
    mtError : MsgDlg.IconType := suiStop;
    mtInformation : MsgDlg.IconType := suiInformation;
    mtConfirmation : MsgDlg.IconType := suiHelp;
    mtCustom : MsgDlg.IconType := suiNone;
    end; // case

    //mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp

    MsgDlg.UIStyle := FromThemeFile;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -