Componentes.Terceros.DevExp.../official/x.26/ExpressPrinting System/Demos/CBuilder/StandardRL/main.cpp
2007-09-09 11:27:27 +00:00

312 lines
10 KiB
C++

//---------------------------------------------------------------------------
#define STRICT
#include <vcl.h>
#pragma hdrstop
#include "main.h"
#include <stdlib.h>
#include <shellAPI.h>
//---------------------------------------------------------------------------
#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; i<CountryCodeList->Items->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);
}
//---------------------------------------------------------------------------