📄 timelinemainformu.cpp
字号:
{
TSaveDialog* pSD;
pSD = new TSaveDialog(this);
pSD->Filter = "Item files (*.itm) |*.itm| All files (*.*)|*.*";
pSD->InitialDir = ExtractFilePath(Application->ExeName);
if( pSD->Execute() )
{
TimeLine1->BeginUpdate();
TimeLine1->SaveToFile(pSD->FileName);
TimeLine1->EndUpdate();
}
delete pSD;
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::btnLoadClick(TObject *Sender)
{
TOpenDialog* pOD;
pOD = new TOpenDialog(this);
pOD->Filter = "Item files (*.itm) |*.itm| All files (*.*)|*.*";
pOD->InitialDir = ExtractFilePath(Application->ExeName);
if( pOD->Execute() )
{
TimeLine1->BeginUpdate();
for(int i = 0;i<TimeLine1->Items->Count;++i)
{
if( TimeLine1->Items->Items[i]->Data != NULL )
{
delete (pItemData)TimeLine1->Items->Items[i]->Data;
TimeLine1->Items->Items[i]->Data = NULL;
}
}
TimeLine1->Items->Clear();
TimeLine1->LoadFromFile(pOD->FileName);
TimeLine1->EndUpdate();
}
delete pOD;
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1ItemClick(TObject *Sender,
TJvTimeItem *Item)
{
Caption = Item->Caption;
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
StatusBar1->Panels->Items[0]->Text = DateToStr(TimeLine1->DateAtPos(X)) + " (approx.)";
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if( (Button == mbLeft) && (cbDragging->ItemIndex == 1) )
{
TimeLine1->BeginDrag(Mouse->DragImmediate, Mouse->DragThreshold);
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1Click(TObject *Sender)
{
if( TimeLine1->Selected != NULL )
{
Caption = Format("%s (%s)",
OPENARRAY(TVarRec, ( TimeLine1->Selected->Caption, DateToStr(TimeLine1->Selected->Date) ) ) );
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1DragDrop(TObject *Sender,
TObject *Source, int X, int Y)
{
AnsiString S;
if( (Sender == Source) && (TimeLine1->Selected != NULL ) )
{
S = DateToStr(TimeLine1->DateAtPos(X));
if( InputQuery("Confirm move", Format("Move \"%s\" to new date:", OPENARRAY(TVarRec, (TimeLine1->Selected->Caption) ) ), S ) )
{
TimeLine1->Selected->Date = StrToDate(S);
TimeLine1->Selected->Level = TimeLine1->LevelAtPos(Y);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1DragOver(TObject *Sender,
TObject *Source, int X, int Y, TDragState State, bool &Accept)
{
Accept = (Sender == Source);
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1DrawItem(TObject *Sender,
TCanvas *Canvas, TJvTimeItem *Item, TRect &R)
{
AnsiString S;
// Canvas.Brush.Color := clBlack;
// Canvas.FrameRect(R);
// Canvas.Brush.Color := RGB(Random(255),Random(255),Random(255));
Canvas->FillRect(R);
if( TimeLine1->Images != NULL )
{
TimeLine1->Images->Draw(Canvas, R.Left, R.Top, Item->ImageIndex, True);
{
if( Item->Selected )
{
TimeLine1->Images->Draw(Canvas,R.Left,R.Top,random(TimeLine1->Images->Count),True);
}
else
{
TimeLine1->Images->Draw(Canvas,R.Right - TimeLine1->Images->Width,R.Top,Item->ImageIndex, True);
}
}
}
// if (Random > 0.5) and Item.Selected then
// S := strrev(Item.Caption)
// else
S = Item->Caption;
// Canvas.Font.Color := Canvas.Brush.Color xor clWhite;
S = " " + S;
DrawText(Canvas->Handle, S.c_str(), -1, &R, (DT_LEFT | DT_BOTTOM | DT_SINGLELINE));
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1ItemMoved(TObject *Sender,
TJvTimeItem *Item, TDateTime &NewStartDate, int &NewLevel)
{
AnsiString S;
if( TimeLine1->Dragging() )
{
return;
}
S = DateToStr(NewStartDate);
if( !InputQuery("Confirm move", Format("Move \"%s\" to new date:", OPENARRAY(TVarRec ,(Item->Caption) ) ), S) )
{
NewStartDate = Item->Date;
NewLevel = Item->Level;
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::TimeLine1LoadItem(TObject *Sender,
TJvTimeItem *Item, TStream *Stream)
{
AnsiString S;
pItemData aData;
char ch;
Stream->Read(&ch, 1);
while( ch != 27 /* ESC */)
{
S = S + ch;
Stream->Read(&ch, 1);
}
if (S != "@@@") // then { nothing there }
{
aData = new TItemData();
aData->Text = S;
Item->Data = aData;
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::Changecaption1Click(TObject *Sender)
{
AnsiString S;
if( TimeLine1->Selected != NULL)
{
S = TimeLine1->Selected->Caption;
if( InputQuery("Change caption", "Change caption to:", S) )
{
TimeLine1->Selected->Caption = S;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::Move1Click(TObject *Sender)
{
AnsiString S;
if( TimeLine1->Selected != NULL )
{
S = DateToStr(TimeLine1->Selected->Date);
if( InputQuery("Move item", "Move to new date:", S) )
{
TimeLine1->Selected->Date = StrToDate(S);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::remove1Click(TObject *Sender)
{
if( TimeLine1->Selected != NULL )
{
if( MessageDlg("Sure you want to delete this item?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes )
{
if( TimeLine1->Selected->Data != NULL )
{
delete (pItemData)TimeLine1->Selected->Data;
}
TimeLine1->Selected->Remove();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::Disable1Click(TObject *Sender)
{
if( TimeLine1->Selected != NULL )
{
TimeLine1->Selected->Enabled = !TimeLine1->Selected->Enabled;
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::Up1Click(TObject *Sender)
{
if( (TimeLine1->Selected != NULL) && (TimeLine1->Selected->Level > 0) )
{
TimeLine1->Selected->Level = TimeLine1->Selected->Level - 1;
}
else
{
if( TimeLine1->Selected != NULL )
{
ShowMessage("Can't move this item further up!");
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::Down1Click(TObject *Sender)
{
TimeLine1->Selected->Level = TimeLine1->Selected->Level + 1;
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::Notes1Click(TObject *Sender)
{
pItemData aData;
TPoint P;
if( TimeLine1->Selected != NULL )
{
if( TimeLine1->Selected->Data == NULL )
{
aData = new TItemData();
aData->Text = "";
}
else
{
aData = (pItemData)TimeLine1->Selected->Data;
}
TimelineNotesForm->Caption = Format("Notes for \"%s\":", OPENARRAY(TVarRec, (TimeLine1->Selected->Caption)) );
TimelineNotesForm->Memo1->Text = aData->Text;
GetCursorPos(&P);
TimelineNotesForm->Left = P.x - 12;
TimelineNotesForm->Top = P.y - 32;
TimelineNotesForm->ShowModal();
aData->Text = TimelineNotesForm->Memo1->Text;
TimeLine1->Selected->Data = aData;
}
}
//---------------------------------------------------------------------------
void __fastcall TTimelineMainForm::chkWidthAsClick(TObject *Sender)
{
const TJvTimeItemType aType[2]={asPixels, asDays};
for(int i = 0;i<TimeLine1->Items->Count;++i)
{
TimeLine1->Items->Items[i]->WidthAs = aType[chkWidthAs->Checked];
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -