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

259 lines
6.5 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "GlobalUnit.h"
#include "ImportFormUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "GeneralDialogPanel"
#pragma link "LineEdit"
#pragma link "TextButton"
#pragma link "ComboBoxComponent"
#pragma link "SkinTrackBar"
#pragma link "CapButton"
#pragma resource "*.dfm"
TImportForm *ImportForm;
//---------------------------------------------------------------------------
__fastcall TImportForm::TImportForm(TComponent* Owner, String DefaultFile,
int TS, int Tempo, int iMode)
: TForm(Owner)
{
m_iMode = iMode;
m_MediaFilePath->Text = DefaultFile;
MediaFilePath = DefaultFile;
DoFilePathChange(NULL);
m_RetrunValue = 0;
this->TS = TS;
this->Tempo = Tempo;
this->m_TSTrackBar->Position = TS;
this->m_TempoTrackBar->Position = Tempo;
if( iMode==1 )
m_panGeneral->Caption = "插入音频片段";
for( int i=0; i<ComponentCount; i++ ){
if(Components[i]->ClassNameIs( TLabel::ClassName() ) )
((TLabel*)Components[i])->ControlStyle>>csOpaque;
}
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::DoBrows(TObject *Sender)
{
TOpenDialog * pDlg = new TOpenDialog(NULL);
pDlg->Options << ofFileMustExist;
pDlg->Title = L"打开";
pDlg->FileName = ExtractFileName(m_MediaFilePath->Text);
pDlg->InitialDir = ExtractFilePath(m_MediaFilePath->Text);
pDlg->Filter = "mp3文件 (*.mp3)|*.MP3|Wave文件 (*.wav)|*.WAV";
if( m_iMode==0 )
pDlg->Filter += "|midi文件 (*.mid)|*.MID";
if(ExtractFileExt(m_MediaFilePath->Text).CompareIC(".mid") == 0)
{
pDlg->FilterIndex = 3;
}
else if(ExtractFileExt(m_MediaFilePath->Text).CompareIC(".wav") == 0)
{
pDlg->FilterIndex = 2;
}
else
{
pDlg->FilterIndex = 1;
}
if(pDlg->Execute(Handle))
{
m_MediaFilePath->Text = pDlg->FileName;
MediaFilePath = pDlg->FileName;
//DoFilePathChange(NULL);
}
delete pDlg;
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::DoFilePathChange(TObject *Sender)
{
UnicodeString var_FilePath(m_MediaFilePath->Text);
MediaFilePath = var_FilePath;
//检查文件是否存在
if(System::Ioutils::TFile::Exists(MediaFilePath))
m_OKButton->Enabled = true;
else
m_OKButton->Enabled = false;;
if( m_iMode==0 && ( ExtractFileExt(var_FilePath).CompareIC(".wav") == 0
|| ExtractFileExt(var_FilePath).CompareIC(".mp3") == 0)){
///////////
m_panGeneral->Height = 206;
Height = 206;
m_TipsLabel->Top = 162;
m_OKButton->Top = 155;
m_CancelButton->Top = 155;
m_TSTrackBar->Visible = true;
m_TempoTrackBar->Visible = true;
m_TSLabel->Visible = true;
m_TempoLabel->Visible = true;
m_TipsLabel->Visible = true;
m_ShowTempo->Visible = true;
ts_44->Visible = true;
ts_34->Visible = true;
ts_24->Visible = true;
ts_68->Visible = true;
m_ShowTempoMin->Visible = true;
m_ShowTempoMax->Visible = true;
m_TempoUpDown->Visible = true;
}
else{
m_TSTrackBar->Visible = false;
m_TempoTrackBar->Visible = false;
m_ShowTempo->Visible = false;
m_TSLabel->Visible = false;
m_TempoLabel->Visible = false;
m_TipsLabel->Visible = false;
ts_44->Visible = false;
ts_34->Visible = false;
ts_24->Visible = false;
ts_68->Visible = false;
m_ShowTempoMin->Visible = false;
m_ShowTempoMax->Visible = false;
m_TempoUpDown->Visible = false;
///////////
m_panGeneral->Height = 140;
Height = 140;
m_TipsLabel->Top = 96;
m_OKButton->Top = 89;
m_CancelButton->Top = 89;
}
}
//---------------------------------------------------------------------------
int __fastcall TImportForm::ShowModal()
{
int var_Result = TForm::ShowModal();
TS = m_TSTrackBar->Position;
Tempo = m_TempoTrackBar->Position;
MediaFilePath = m_MediaFilePath->Text;
return var_Result;
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::DoOK(TObject *Sender)
{
m_RetrunValue = 1;
Close();
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::DoTempoTrackBar(TObject *Sender)
{
String var_Tempo(m_TempoTrackBar->Position);
m_ShowTempo->Text = var_Tempo;
//m_ShowTempo->Caption = var_Tempo;
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::DoTSTrackBar(TObject *Sender)
{
TS = m_TSTrackBar->Position;
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::DoCancel(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::DoShowTempoChange(TObject *Sender)
{
if(m_ShowTempo->Text == "")
{
return;
}
int var_Tempo = m_ShowTempo->Text.ToInt();
if(var_Tempo < 50/*m_TSTrackBar->Min*/ || var_Tempo > 200/*m_TSTrackBar->Max*/)
{
//m_ShowTempo->Text = String(m_TSTrackBar->Position);
}
else
{
m_TempoTrackBar->Position = var_Tempo;
m_TempoUpDown->Position = var_Tempo;
}
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::DoTempoUpDown(TObject *Sender, TUDBtnType Button)
{
if(Button == btNext)
{
m_TempoUpDown->Position += 1;
m_TempoTrackBar->Position += 1;
}
else
{
m_TempoUpDown->Position -= 1;
m_TempoTrackBar->Position -= 1;
}
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
switch( Key ){
case VK_RETURN:
if(m_OKButton->Enabled)
ModalResult = mrOk;
break;
case VK_ESCAPE:
ModalResult = mrCancel;
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TImportForm::FormCreate(TObject *Sender)
{
m_panGeneral->Font->Size = g_szFont9;
m_BrowsButton->FontSize = g_szFont9;
m_OKButton->FontSize = g_szFont9;
m_CancelButton->FontSize = g_szFont9;
m_MediaFilePath->SetTextFont(g_strTxtFontName, g_szFont9);
m_ShowTempo->SetTextFont(g_strTxtFontName, g_szFont9);
}
//---------------------------------------------------------------------------