//--------------------------------------------------------------------------- #include #pragma hdrstop #include "GlobalUnit.h" #include "SaveLocalStyleFormUnit.h" #include "MessageFormUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "GeneralDialogPanel" #pragma link "LineEdit" #pragma link "TextButton" #pragma resource "*.dfm" TSaveLocalStyleForm *SaveLocalStyleForm; //--------------------------------------------------------------------------- __fastcall TSaveLocalStyleForm::TSaveLocalStyleForm(TComponent* Owner, TStyleItem* pStyItem) : TForm(Owner) { m_pStyItem = pStyItem; if( pStyItem->pStyle && pStyItem->pStyle->idLoc!=0 && pStyItem->pStyle->idLoc!=(UINT)-1 ){ m_editName->Text = UTF8ToMBCS(pStyItem->pStyle->pLocal->strStyleName).c_str(); } else{ m_editName->Text = m_editName->Text.sprintf( L"自定义风格%d", f_CM_GetNextLocalID() ); } SetTransparent( this ); } //--------------------------------------------------------------------------- void __fastcall TSaveLocalStyleForm::FormShow(TObject *Sender) { m_editName->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TSaveLocalStyleForm::OkClick(TObject *Sender) { if( m_editName->Text.Length()==0 ){ m_editName->SetFocus(); } else{ ModalResult = mrOk; } } //--------------------------------------------------------------------------- void __fastcall TSaveLocalStyleForm::Save(TPROSTYLE * pStyle) { for( int i=0; iaItems->Count; i++ ){ TSegmentItem* pSeg = (TSegmentItem*)m_pStyItem->aItems->Items[i]; int segType = pSeg->iSegType, segNo = pSeg->iSegNo; if( segType==SEGTYPE_VAR ) pStyle->pLocal->nSegNum[segType]++; else if( segType==SEGTYPE_FILL ) pStyle->pLocal->nSegNum[segType]++; else{ int nMaj = pStyle->pLocal->nSegNum[segType] & 0x0F, nMin = pStyle->pLocal->nSegNum[segType] >> 4; if( segNo<4 ) nMaj++; else nMin++; pStyle->pLocal->nSegNum[segType] = ( nMin<<4 ) + nMaj; pStyle->pLocal->aIEBars[segType-2][segNo] = pSeg->nBars; } pStyle->pLocal->nSegVol[segType][segNo] = pSeg->volume; for( int j=0; jaItems->Count; j++ ){ TTrack* pTrk = ((TTrackItem*)pSeg->aItems->Items[j])->pTrack; pStyle->pLocal->trkRef[segType][segNo][j].idLoc = pTrk->iStyleLoc;// >pStyle->idLoc; pStyle->pLocal->trkRef[segType][segNo][j].idStyle = pTrk->iStyleId;// >pStyle->idStyle; pStyle->pLocal->trkRef[segType][segNo][j].segNo = pTrk->iSegNo; pStyle->pLocal->trkRef[segType][segNo][j].chan = pTrk->iChanNo; pStyle->pLocal->trkRef[segType][segNo][j].prog = pTrk->iProg;// >progCurr; pStyle->pLocal->trkRef[segType][segNo][j].vol = pTrk->nVol;// >volCurr; } } f_CM_SaveLocalStyle( pStyle ); if( m_pStyItem->pStyle!=pStyle ) m_pStyItem->pStyle = pStyle; for( int i=0; iaItems->Count; i++ ){ TSegmentItem* pSeg = (TSegmentItem*)m_pStyItem->aItems->Items[i]; for( int j=0; jaItems->Count; j++ ){ TTrackItem* pTrk = (TTrackItem*)pSeg->aItems->Items[j]; if( pTrk->pStyle->idLoc==(UINT)-1 && pTrk->pStyle->idStyle==0 ){ pTrk->pStyle = pStyle; pTrk->pTrack->iStyleLoc = pStyle->idLoc; pTrk->pTrack->iStyleId = pStyle->idStyle; } } } if( g_pUseStyle ){ if( !g_pUseStyle->pStyle || g_pUseStyle->pStyle->idLoc==(UINT)-1 && g_pUseStyle->pStyle->idStyle==0 ){ g_pUseStyle->pStyle = pStyle; } for( int i=0; iaItems->Count; i++ ){ TSegmentItem* pSeg = (TSegmentItem*)g_pUseStyle->aItems->Items[i]; for( int j=0; jaItems->Count; j++ ){ TTrackItem* pTrk = (TTrackItem*)pSeg->aItems->Items[j]; if( pTrk->pStyle->idLoc==(UINT)-1 && pTrk->pStyle->idStyle==0 ){ pTrk->pStyle = pStyle; g_lstOpusStages[i]->aTracks[j]->iStyleLoc = pStyle->idLoc; g_lstOpusStages[i]->aTracks[j]->iStyleId = pStyle->idStyle; } } } } f_CM_DeleteTempStyle( 0 ); DeleteStyleInfo( -1, 0 ); } //--------------------------------------------------------------------------- void __fastcall TSaveLocalStyleForm::NameChange(TObject *Sender) { TLineEdit* pEdit = ((TLineEdit*)Sender); AnsiString strName = pEdit->Text.Trim(); string strTmp = GBToUTF8(strName.c_str()); if( strTmp.length()>pEdit->MaxLength ){ pEdit->OnChange = NULL; pEdit->Text = pEdit->Text.SubString( 0, pEdit->Text.Length()-1 ); pEdit->SelStart = pEdit->Text.Length(); pEdit->OnChange = NameChange; } } //--------------------------------------------------------------------------- void __fastcall TSaveLocalStyleForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { switch( Key ){ case VK_RETURN: if(m_btnOk->Enabled) OkClick(NULL); break; case VK_ESCAPE: ModalResult = mrCancel; break; } } //--------------------------------------------------------------------------- void __fastcall TSaveLocalStyleForm::FormCreate(TObject *Sender) { m_panelBk->Font->Size = g_szFont9; m_btnCancel->FontSize = g_szFont9; m_btnOk->FontSize = g_szFont9; m_editName->SetTextFont(g_strTxtFontName, g_szFont9); } //---------------------------------------------------------------------------