//--------------------------------------------------------------------------- #define STRICT #include #pragma hdrstop #include "main.h" #include #include //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "dxPSChLbxLnk" #pragma link "dxPSCore" #pragma link "dxPSGrLnks" #pragma link "dxPSLbxLnk" #pragma link "dxPSStdGrLnk" #pragma link "dxPSRELnk" #pragma link "dxPSTVLnk" #pragma resource "*.dfm" TMainForm *MainForm; //--------------------------------------------------------------------------- __fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TMainForm::DrawGridDrawCell(TObject *Sender, int Col, int Row, TRect &Rect, TGridDrawState State) { if (State.Contains(gdSelected)) ilFlags->DrawingStyle = dsSelected; else ilFlags->DrawingStyle = Imglist::dsNormal; DrawFlag(Col, Row, Rect, DrawGrid->Canvas); } //--------------------------------------------------------------------------- int __stdcall EnumFontFamProc(const LOGFONT *LogFont,const TEXTMETRIC *TextMetric, unsigned long FontType, long Data) { TStrings *S = (TStrings *)Data; switch (FontType) { case TRUETYPE_FONTTYPE: S->AddObject(LogFont->lfFaceName, MainForm->TtfBitmap); break; case RASTER_FONTTYPE: S->AddObject(LogFont->lfFaceName, MainForm->SysBitmap); break; case DEVICE_FONTTYPE: S->AddObject(LogFont->lfFaceName, MainForm->DevBitmap); break; } return 1; } //--------------------------------------------------------------------------- void __fastcall TMainForm::BuildDriverList() { DWORD dwDriveList = GetLogicalDrives (); const AnsiString slash = ":\\"; for (char i = 0; i < 32; i++) { if (dwDriveList & (1 << i)) { char d = (char)(65 + i); AnsiString Drive = d; Drive+=slash; cbDrives->Items->Add(Drive); if (i == 2) cbDrives->ItemIndex = cbDrives->Items->Count - 1; } } } //--------------------------------------------------------------------------- void __fastcall TMainForm::FormCreate(TObject *Sender) { HDC DC; int i, j; TtfBitmap = new Graphics::TBitmap(); ilFontImages->GetBitmap(0,TtfBitmap); DevBitmap = new Graphics::TBitmap(); ilFontImages->GetBitmap(2,DevBitmap); SysBitmap = new Graphics::TBitmap(); ilFontImages->GetBitmap(1,SysBitmap); DC = GetDC(0); try { EnumFontFamilies(DC, NULL, (FONTENUMPROCA)EnumFontFamProc, long (FontsList->Items)); } __finally { ReleaseDC(0, DC); } for (i = 1; i <= 10; i++) { StringGrid->Cells[0][i] = IntToStr(i); for (j = 1; j <= 10; j++) { StringGrid->Cells[j][0] = IntToStr(j); StringGrid->Cells[j][i] = IntToStr(i*j); } } Randomize(); for (i = 0; iItems->Count;i++) CountryCodeList->Checked[i] = (Boolean)random(2); try { Editor->Lines->LoadFromFile(ExtractFilePath(Application->ExeName)+"overview.rtf"); } catch(...){}; BuildDriverList(); cbDrivesChange(cbDrives); dxComponentPrinter1->CurrentLink = dxComponentPrinter1->ReportLink[PageControl->ActivePage->PageIndex]; } //--------------------------------------------------------------------------- void __fastcall TMainForm::FormDestroy(TObject *Sender) { if (TtfBitmap != NULL) TtfBitmap->Free(); if (DevBitmap != NULL) DevBitmap->Free(); if (SysBitmap != NULL) SysBitmap->Free(); } //--------------------------------------------------------------------------- void __fastcall TMainForm::tbDXClick(TObject *Sender) { ShellExecute(Handle, PChar("OPEN"), PChar("http://www.devexpress.com"), NULL, NULL, SW_SHOWMAXIMIZED); } //--------------------------------------------------------------------------- void __fastcall TMainForm::tbSetupClick(TObject *Sender) { dxComponentPrinter1->PageSetup(NULL); } //--------------------------------------------------------------------------- void __fastcall TMainForm::tbPreviewClick(TObject *Sender) { dxComponentPrinter1->Preview(true, NULL); } //--------------------------------------------------------------------------- void __fastcall TMainForm::tbPrintClick(TObject *Sender) { dxComponentPrinter1->Print(true, NULL, NULL); } //--------------------------------------------------------------------------- void __fastcall TMainForm::tbDesignerClick(TObject *Sender) { dxComponentPrinter1->DesignReport(NULL); } //--------------------------------------------------------------------------- void __fastcall TMainForm::tbExitClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TMainForm::PageControlChange(TObject *Sender) { dxComponentPrinter1->CurrentLink = dxComponentPrinter1->ReportLink[PageControl->ActivePage->PageIndex]; } //--------------------------------------------------------------------------- void __fastcall TMainForm::FontsListDrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State) { int Offset; Graphics::TBitmap *Bitmap = (Graphics::TBitmap *)(FontsList->Items->Objects[Index]); FontsList->Canvas->FillRect(Rect); Offset = 2; if (Bitmap != NULL) { FontsList->Canvas->Draw(Rect.Left+2,Rect.Top,Bitmap); Offset = Bitmap->Width + 6; } FontsList->Canvas->Font->Name = FontsList->Items->Strings[Index]; FontsList->Canvas->TextOut(Rect.Left+Offset, Rect.Top, FontsList->Items->Strings[Index]); } //--------------------------------------------------------------------------- void __fastcall TMainForm::DrawFlag(int Row, int Col, TRect &Rect, TCanvas *ACanvas) { Graphics::TBitmap *Bitmap = new Graphics::TBitmap(); ACanvas->Pen->Color = clWhite; ACanvas->MoveTo(Rect.Left,Rect.Bottom); ACanvas->LineTo(Rect.Right,Rect.Bottom); ACanvas->LineTo(Rect.Right,Rect.Top-1); ACanvas->Pen->Color = clBtnShadow; ACanvas->MoveTo(DrawGrid->Canvas->PenPos.x - 1,DrawGrid->Canvas->PenPos.y + 1); ACanvas->LineTo(Rect.Left,Rect.Top); ACanvas->LineTo(Rect.Left,Rect.Bottom); ACanvas->Pen->Color = clBtnFace; ACanvas->MoveTo(Rect.Left + 1,Rect.Bottom - 1); ACanvas->LineTo(Rect.Right - 1,Rect.Bottom - 1); ACanvas->LineTo(Rect.Right - 1,Rect.Top); ACanvas->MoveTo(ACanvas->PenPos.x - 1,ACanvas->PenPos.y + 1); ACanvas->Pen->Color = clBlack; ACanvas->LineTo(Rect.Left + 1,Rect.Top + 1); ACanvas->LineTo(Rect.Left + 1,Rect.Bottom - 1); ilFlags->GetBitmap(Col+Row*7,Bitmap); if (Bitmap != NULL) { ACanvas->StretchDraw(Bounds(Rect.Left+2, Rect.Top+2, Rect.Right-Rect.Left-4, Rect.Bottom-Rect.Top-4),Bitmap); Bitmap->Free(); } } //--------------------------------------------------------------------------- void __fastcall TMainForm::dxComponentPrinter1Link2CustomDrawCell( TBasedxReportLink *Sender, int ACol, int ARow, TCanvas *ACanvas, TRect &ABoundsRect, TRect &AClientRect) { ilFlags->DrawingStyle = Imglist::dsNormal; DrawFlag(ACol, ARow, AClientRect, ACanvas); } //--------------------------------------------------------------------------- void __fastcall TMainForm::BuildTree(String APath, TTreeNode *AItem) { TSearchRec SearchRec, Dummy; TTreeNode* Node; int Found = FindFirst(APath + "*.*", faAnyFile, SearchRec); try { while (Found == 0) { if ((SearchRec.Name != ".") && (SearchRec.Name != "..")) { if (AItem != NULL) Node = TreeView->Items->AddChild(AItem, SearchRec.Name); else Node = TreeView->Items->Add(NULL, SearchRec.Name); Node->StateIndex = 8; if ((SearchRec.Attr & faDirectory) != 0) { Node->HasChildren = (FindFirst(APath + SearchRec.Name + "\\*.*", faAnyFile, Dummy) == 0); Node->StateIndex = 6; } }; Found = FindNext(SearchRec); } } __finally { FindClose(SearchRec); }; } //--------------------------------------------------------------------------- void __fastcall TMainForm::Button1Click(TObject *Sender) { TreeView->Items->BeginUpdate(); TreeView->FullExpand(); TreeView->Items->EndUpdate(); } //--------------------------------------------------------------------------- void __fastcall TMainForm::Button2Click(TObject *Sender) { TreeView->FullCollapse(); } //--------------------------------------------------------------------------- void __fastcall TMainForm::TreeViewExpanded(TObject *Sender, TTreeNode *Node) { Node->StateIndex = 7; } //--------------------------------------------------------------------------- void __fastcall TMainForm::TreeViewCollapsed(TObject *Sender, TTreeNode *Node) { Node->StateIndex = 6; } //--------------------------------------------------------------------------- void __fastcall TMainForm::cbDrivesChange(TObject *Sender) { TreeView->Cursor = crHourGlass; TreeView->Items->BeginUpdate(); TreeView->Items->Clear(); BuildTree(cbDrives->Text, NULL); TreeView->Items->EndUpdate(); TreeView->Cursor = crDefault; } //--------------------------------------------------------------------------- String __fastcall TMainForm::GetNodeFullPath(TTreeNode *Node) { String Result; while(Node != NULL) { if (Node->HasChildren) Result = "\\" + Result; Result = Node->Text + Result; Node = Node->Parent; } Result = cbDrives->Text + Result; return Result; } //--------------------------------------------------------------------------- void __fastcall TMainForm::TreeViewExpanding(TObject *Sender, TTreeNode *Node, bool &AllowExpansion) { if(Node->HasChildren && (Node->Count == 0)) BuildTree(GetNodeFullPath(Node), Node); } //---------------------------------------------------------------------------