Files
2026-06-13 00:10:11 +08:00

226 lines
6.2 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#include "SaveFormUnit.h"
#pragma hdrstop
#include "GlobalUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "PNGButton"
#pragma resource "*.dfm"
TSaveForm *SaveForm;
//---------------------------------------------------------------------------
__fastcall TSaveForm::TSaveForm(TComponent* Owner, String strDefaultFile,
int iLastOption, int iLastType)
: TForm(Owner)
{
m_editFileName->Text = strDefaultFile;
m_imgComposeCheck->Tag = (bool)(iLastOption & 2);
m_imgSongCheck->Tag = (bool)(iLastOption & 1);
if( g_bPredefine && m_imgComposeCheck->Tag==0 && m_imgSongCheck->Tag==1 ){
m_imgSongCheck->Tag = 0;
}
m_iSaveType = iLastType;
SetTransparent( this );
}
//---------------------------------------------------------------------------
void __fastcall TSaveForm::WMNCHitTest(TWMNCHitTest &Msg)
{
TForm::Dispatch(&Msg);
if( Msg.Result==HTCLIENT && Msg.YPos<Top+24 )
Msg.Result = HTCAPTION;
}
//---------------------------------------------------------------------------
void __fastcall TSaveForm::ImgCheckClick(TObject *Sender)
{
if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){
return;
}
TImage* pImg = (TImage*)Sender;
if( !g_bPredefine || pImg==m_imgComposeCheck || m_imgComposeCheck->Tag==1 ){
pImg->Tag = !pImg->Tag;
pImg->Picture->Bitmap->Assign(m_pImgCheckState[pImg->Tag]);
pImg->Invalidate();
}
if( g_bPredefine && pImg==m_imgComposeCheck && pImg->Tag==0 && m_imgSongCheck->Tag==1 ){
m_imgSongCheck->Tag = 0;
m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[0]);
m_imgSongCheck->Invalidate();
}
if( ( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ||
ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ) &&
( m_imgComposeCheck->Tag==1 || m_imgSongCheck->Tag==1 ) ){
m_btnOk->Enabled = true;
}
else{
m_btnOk->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TSaveForm::FormCreate(TObject *Sender)
{
m_lblCaption->Font->Color = RGB(60,43,23);
m_pImgCheckState[0] = new TBitmap();
m_pImgCheckState[0]->LoadFromResourceName(int(HInstance), L"BmpUnchecked");
m_pImgCheckState[1] = new TBitmap();
m_pImgCheckState[1]->LoadFromResourceName(int(HInstance), L"BmpChecked");
//绘制圆角窗体
HRGN hRgn = CreateRoundRectRgn( 0, 0, Width+1, Height+1, 16, 16 );
SetWindowRgn( Handle, hRgn, false );
DeleteObject( hRgn );
}
//---------------------------------------------------------------------------
void __fastcall TSaveForm::FormDestroy(TObject *Sender)
{
for( int i=0; i<2; i++ ){
if( m_pImgCheckState[i] )
delete m_pImgCheckState[i];
}
}
//---------------------------------------------------------------------------
void __fastcall TSaveForm::BtnBrowseClick(TObject *Sender)
{
TSaveDialog * pDlg = new TSaveDialog(NULL);
pDlg->Options << ofCreatePrompt << ofOverwritePrompt;
pDlg->Title = L"保存为";
pDlg->FileName = ExtractFileName( m_editFileName->Text );
pDlg->InitialDir = ExtractFilePath( m_editFileName->Text );
#ifdef _PROFESSIONAL
pDlg->Filter = "mp3文件 (*.mp3)|*.MP3|Wave文件 (*.wav)|*.WAV|midi文件 (*.mid)|*.MID";
#else
pDlg->Filter = "mp3文件 (*.mp3)|*.MP3|Wave文件 (*.wav)|*.WAV";
#endif
if( ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ){
m_iSaveType = FILETYPE_MP3;
}
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ){
m_iSaveType = FILETYPE_WAVE;
}
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){
#ifdef _PROFESSIONAL
m_iSaveType = FILETYPE_MIDI;
#else
m_iSaveType = FILETYPE_MP3;
#endif
}
pDlg->FilterIndex = m_iSaveType + 1;
String strType;
if( m_iSaveType==FILETYPE_WAVE ){
strType = "wav";
}
else if( m_iSaveType==FILETYPE_MP3 ){
strType = "mp3";
}
else if( m_iSaveType==FILETYPE_MIDI ){
strType = "mid";
}
pDlg->DefaultExt = strType;
if( pDlg->Execute(Handle) ){
m_editFileName->Text = pDlg->FileName;
#ifdef _PROFESSIONAL
if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){
if( m_imgComposeCheck->Tag!=1 ){
m_imgComposeCheck->Tag = 1;
m_imgComposeCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgComposeCheck->Tag]);
m_imgComposeCheck->Invalidate();
}
if( m_imgSongCheck->Tag != 0 ){
m_imgSongCheck->Tag = 0;
m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgSongCheck->Tag]);
m_imgSongCheck->Invalidate();
}
m_btnOk->Enabled = true;
}
#endif
}
delete pDlg;
}
//---------------------------------------------------------------------------
void __fastcall TSaveForm::FileNameChange(TObject *Sender)
{
if( ( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ||
ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ) &&
( m_imgComposeCheck->Tag==1 || m_imgSongCheck->Tag==1 ) ){
m_btnOk->Enabled = true;
}
#ifdef _PROFESSIONAL
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 &&
m_imgComposeCheck->Tag==1 && m_imgSongCheck->Tag==0 ){
m_btnOk->Enabled = true;
}
#endif
else{
m_btnOk->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TSaveForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
switch( Key ){
case VK_RETURN:
if( m_btnOk->Enabled )
ModalResult = mrOk;
break;
case VK_ESCAPE:
ModalResult = mrCancel;
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TSaveForm::FormActivate(TObject *Sender)
{
if( ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ){
m_iSaveType = FILETYPE_MP3;
}
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ){
m_iSaveType = FILETYPE_WAVE;
}
#ifdef _PROFESSIONAL
else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){
m_iSaveType = FILETYPE_MIDI;
}
if( m_iSaveType==FILETYPE_MIDI ){
m_imgComposeCheck->Tag = 1;
m_imgSongCheck->Tag = 0;
}
#endif
m_imgComposeCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgComposeCheck->Tag]);
m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgSongCheck->Tag]);
FileNameChange( NULL );
}
//---------------------------------------------------------------------------