📄 unit2.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "JvDBGrid"
#pragma link "JvDBUltimGrid"
#pragma link "JvExDBGrids"
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormShow(TObject *Sender)
{
Table1->Open();
TSortFields InitialSort;
InitialSort.set_length(2);
InitialSort[0].Name = "Category";
InitialSort[0].Order = JvGridSort_ASC;
InitialSort[1].Name = "Common_Name";
InitialSort[1].Order = JvGridSort_ASC;
MyUltimGrid->Sort(InitialSort);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::MyUltimGridIndexNotFound(TJvDBUltimGrid *Sender,
TSortFields FieldsToSort, AnsiString IndexFieldNames, AnsiString DescFields, bool &Retry)
{
// Nota bene: you need to update Biolife.db to Paradox 7 if you want a sort
// in descending order. Otherwise, the index creation will fail.
int NewIndex = Application->MessageBox(("Index not found for field: "
+ IndexFieldNames + ((DescFields == "") ? "":" (DESC)")
+ "\r\nDo you want to create an index ?").c_str(), "New index ?", MB_YESNO);
if (NewIndex == ID_YES)
{
AnsiString NewIndexName = IndexFieldNames;
while (NewIndexName.Pos(";") > 0)
NewIndexName = NewIndexName.Delete(NewIndexName.Pos(";"), 1);
while (NewIndexName.Pos(" ") > 0)
NewIndexName = NewIndexName.Delete(NewIndexName.Pos(" "), 1);
NewIndexName = "Idx_" + NewIndexName + ((DescFields == "") ? "":"_DESC");
Table1->Close();
try
{
Table1->AddIndex(NewIndexName, IndexFieldNames,
TIndexOptions() << ixCaseInsensitive, DescFields);
}
catch (const Exception& ErrAddIdx)
{
ShowMessage("AddIndex(" + NewIndexName + ") failed: " + ErrAddIdx.Message);
}
Table1->Open();
Retry = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
Table1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::B_SearchClick(TObject *Sender)
{
MyUltimGrid->SearchFields->Clear();
MyUltimGrid->SearchFields->Add("Category");
MyUltimGrid->SearchFields->Add("Common_Name");
MyUltimGrid->SearchFields->Add("Species Name");
MyUltimGrid->SearchFields->Add("Notes");
bool SearchOK = MyUltimGrid->Search(ValueToSearch->Text, ResultCol, ResultField,
false, false, true);
B_SearchNext->Enabled = SearchOK;
if (SearchOK)
ShowMessage("Hurrah! Text found in field " + Trim(ResultField->FieldName));
else
ShowMessage("Text not found");
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::B_SearchNextClick(TObject *Sender)
{
if (!MyUltimGrid->SearchNext(ResultCol, ResultField, false, false, true))
{
ShowMessage("Text not found - End of search");
B_SearchNext->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::MyUltimGridDrawColumnCell(TObject *Sender, const TRect &Rect,
int DataCol, TColumn *Column, TGridDrawState State)
{
// Hey fish, let me see your face...hum...your fins
if (Column->Field->FieldName == "Graphic")
{
Graphics::TBitmap *Image = new Graphics::TBitmap();
try
{
Image->Assign((TBlobField *)Column->Field);
if (Image->Height > Rect.Bottom - Rect.Top)
Image->Height = Rect.Bottom - Rect.Top;
if (Image->Width > Rect.Right - Rect.Left)
Image->Width = Rect.Right - Rect.Left;
MyUltimGrid->Canvas->FillRect(Rect);
MyUltimGrid->Canvas->Draw(Rect.Left, Rect.Top, Image);
}
__finally
{
delete Image;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::B_ResizeColsClick(TObject *Sender)
{
MyUltimGrid->RowsHeight = 129;
MyUltimGrid->InitializeColumnsWidth(-1, 0, false, OPENARRAY(int, (36, 76)));
MyUltimGrid->AutoSizeColumnIndex = JvGridResizeLastVisibleCol;
MyUltimGrid->AutoSizeColumns = true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -