Files
AC_Pro/MessageFormUnit.cpp
2026-06-13 00:05:19 +08:00

182 lines
4.5 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "GlobalUnit.h"
#include "MessageFormUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "PNGButton"
#pragma link "CKBox"
#pragma link "GeneralDialogPanel"
#pragma link "TextButton"
#pragma resource "*.dfm"
TMessageForm *MessageForm;
//---------------------------------------------------------------------------
__fastcall TMessageForm::TMessageForm(TComponent* Owner)
: TForm(Owner)
{
m_iCheck = -1;
Font->Color = RGB(60,43,23);
}
//---------------------------------------------------------------------------
__fastcall TMessageForm::~TMessageForm()
{
}
//---------------------------------------------------------------------------
void __fastcall TMessageForm::WMNCHitTest(TWMNCHitTest &Msg)
{
TForm::Dispatch(&Msg);
if( Msg.Result==HTCLIENT && Msg.YPos<Top+24 )
Msg.Result = HTCAPTION;
}
//---------------------------------------------------------------------------
int __fastcall TMessageForm::ShowMessage( const String AMessage, int AType, const String ATitle )
{
if( Visible )
return -1;
m_iconInformation->Visible = false;
m_iconError->Visible = false;
m_iconQuestion->Visible = false;
m_btnYes->Visible = false;
m_btnNo->Visible = false;
m_btnOk->Visible = false;
m_btnCancel->Visible = false;
m_pbCheck->Visible = false;
int iIconType = AType & 0x0F0;
if( iIconType==MB_ICONERROR ){
m_iconError->Visible = true;
}
else if( iIconType==MB_ICONQUESTION ) {
m_iconQuestion->Visible = true;
}
else if( iIconType==MB_ICONINFORMATION ) {
m_iconInformation->Visible = true;
}
int iButtonType = AType & 0x0F;
if( iButtonType==MB_OK ){
m_btnOk->Visible = true;
m_btnOk->Left = (Width - m_btnOk->Width)/2 + 6;
}
else if( iButtonType==MB_OKCANCEL ){
m_btnOk->Visible = true;
m_btnCancel->Visible = true;
m_btnOk->Left = (Width - (m_btnOk->Width+6)*2 )/2 + 6;
m_btnCancel->Left = m_btnOk->Left + m_btnOk->Width + 6;
}
else if( iButtonType==MB_YESNO ){
m_btnYes->Visible = true;
m_btnNo->Visible = true;
m_btnYes->Left = (Width - (m_btnYes->Width+6)*2 )/2 + 6;
m_btnNo->Left = m_btnYes->Left + m_btnYes->Width + 6;
}
else if( iButtonType==MB_YESNOCANCEL ){
m_btnYes->Visible = true;
m_btnNo->Visible = true;
m_btnCancel->Visible = true;
m_btnYes->Left = (Width - (m_btnYes->Width+6)*3 )/2 + 6;
m_btnNo->Left = m_btnYes->Left + m_btnYes->Width + 6;
m_btnCancel->Left = m_btnNo->Left + m_btnNo->Width + 6;
// m_pbCheck->Width = m_btnYes->Left - m_pbCheck->Left - 4 ; //add
}
int iCheckType = AType & 0xF00;
if( iCheckType ){
if( iCheckType==MB_CHECKED ){
m_pbCheck->Checked = true;
}
else if( iCheckType==MB_UNCHECKED ){
m_pbCheck->Checked = false;
}
m_pbCheck->Show();
}
else{
m_pbCheck->Hide();
}
m_lblMessage->Caption = AMessage;
if( ATitle.Length()>0 )
m_panGeneral->Caption = ATitle;
else
m_panGeneral->Caption = "Ìáʾ";
//Ô²½Ç
// HRGN hRgn = CreateRoundRectRgn( 0, 0, Width+1, Height+2, 20, 20 );
// SetWindowRgn( Handle, hRgn, false );
// DeleteObject( hRgn );
return ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TMessageForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
switch( Key ){
case VK_RETURN:
case ' ':
if( m_btnYes->Visible )
ModalResult = mrYes;
else if( m_btnOk->Visible )
ModalResult = mrOk;
break;
case VK_ESCAPE:
if( m_btnCancel->Visible )
ModalResult = mrCancel;
break;
case 'Y':
if( m_btnYes->Visible )
ModalResult = mrYes;
break;
case 'N':
if( m_btnNo->Visible )
ModalResult = mrNo;
break;
}
}
//---------------------------------------------------------------------------
void _fastcall TMessageForm::SetCheckMessage( String strMessage )
{
if( strMessage.IsEmpty() ){
m_pbCheck->Caption = L"²»ÔÙÌáʾ";
}
else{
m_pbCheck->Caption = strMessage;
}
}
//---------------------------------------------------------------------------
bool TMessageForm::GetCheckState()
{
return m_pbCheck->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TMessageForm::FormCreate(TObject *Sender)
{
m_lblMessage->ControlStyle>>csOpaque;
m_panGeneral->Font->Size = g_szFont9;
m_pbCheck->Font->Size = g_szFont9;
m_btnYes->FontSize = g_szFont9;
m_btnOk->FontSize = g_szFont9;
m_btnNo->FontSize = g_szFont9;
m_btnCancel->FontSize = g_szFont9;
}
//---------------------------------------------------------------------------