📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "JvDBCombobox"
#pragma link "JvDBGrid"
#pragma link "JvDBUltimGrid"
#pragma link "JvExDBGrids"
#pragma link "JvExStdCtrls"
#pragma link "JvDBGridFooter"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
OldRowsHeight = JvDBGrid1->RowsHeight;
Compteur = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
TSortFields InitialSort;
InitialSort.set_length(3);
InitialSort[0].Name = "Category";
InitialSort[0].Order = JvGridSort_ASC;
InitialSort[1].Name = "Licenses";
InitialSort[1].Order = JvGridSort_DESC;
InitialSort[2].Name = "Software";
InitialSort[2].Order = JvGridSort_ASC;
JvDBGrid1->Sort(InitialSort);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DisplayList = new TStringList;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete DisplayList;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FillUpList()
{
if ((DisplayList == NULL) || (!LookupTable->Active))
return;
DisplayList->Clear();
LookupTable->First();
while (!LookupTable->Eof)
{
DisplayList->Add(LookupTable->FieldByName("CodeLogiciel")->AsString
+ "=" + LookupTable->FieldByName("LibelleLog")->AsString);
LookupTable->Next();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MainTableCategoryGetText(TField *Sender, AnsiString &Text,
bool DisplayText)
{
if (DisplayList == NULL)
return;
if (DisplayList->IndexOfName(Sender->AsString) == -1)
FillUpList(); // Key value not found -> the list is (re)loaded
Text = DisplayList->Values[Sender->AsString];
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_ModFooterClick(TObject *Sender)
{
//
JvDBGridFooter1->Columns->Items[0]->Alignment = taCenter;
JvDBGridFooter1->Columns->Items[0]->Bevel = pbRaised;
JvDBGridFooter1->Columns->Items[1]->FieldName = "Category";
JvDBGridFooter1->Columns->Items[1]->DisplayMask = "";
JvDBGridFooter1->IgnoreHorzScrolling = True;
JvDBGridFooter1->IgnoreResizing = True;
JvDBGrid1->FixedCols = 1;
B_ModFooter->Enabled = False;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_ConnectClick(TObject *Sender)
{
ADOConnection1->Connected = !ADOConnection1->Connected;
MainTable->Active = ADOConnection1->Connected;
LookupTable->Active = ADOConnection1->Connected;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_TitleIndicClick(TObject *Sender)
{
Compteur++;
if (Compteur == 1)
{
JvDBGrid1->Options = JvDBGrid1->Options >> dgTitles;
}
else if (Compteur == 2)
{
JvDBGrid1->Options = JvDBGrid1->Options >> dgIndicator;
}
else if (Compteur == 3)
{
JvDBGrid1->Options = JvDBGrid1->Options << dgTitles;
}
else if (Compteur == 4)
{
JvDBGrid1->Options = JvDBGrid1->Options << dgIndicator;
Compteur = 0;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_WordWrapClick(TObject *Sender)
{
JvDBGrid1->WordWrap = !JvDBGrid1->WordWrap;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_ShowEditClick(TObject *Sender)
{
if (JvDBGrid1->Options.Contains(dgAlwaysShowEditor))
JvDBGrid1->Options = JvDBGrid1->Options >> dgAlwaysShowEditor;
else
JvDBGrid1->Options = JvDBGrid1->Options << dgAlwaysShowEditor;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBMemo1Enter(TObject *Sender)
{
// Text is selected automatically
((TDBMemo *)Sender)->SelectAll();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::JvDBComboBox1KeyPress(TObject *Sender, char &Key)
{
if (Key == 13)
JvDBGrid1->CloseControl();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBLookupComboBox1KeyPress(TObject *Sender, char &Key)
{
if (Key == 13)
JvDBGrid1->CloseControl();
else
if (Key == 27)
DBLookupComboBox1->Field->Value = DBLookupComboBox1->Field->OldValue;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::JvDBGrid1RestoreGridPosition(TJvDBUltimGrid *Sender,
Pointer SavedBookmark, int SavedRowPos)
{
// Perfect cursor replacement
if (MainTable->BookmarkValid(SavedBookmark))
MainTable->Recordset->Bookmark = *(POleVariant)SavedBookmark;
try {MainTable->Resync(TResyncMode() << rmExact);} catch (...) {}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_SearchClick(TObject *Sender)
{
// Search of W (uppercase) in Software field, then search of 1 in Licenses field
int ResultCol;
TField *ResultField;
bool Found = false;
JvDBGrid1->SaveGridPosition();
JvDBGrid1->SearchFields->Clear();
JvDBGrid1->SearchFields->Add("Software");
if (JvDBGrid1->Search("W", ResultCol, ResultField, true, false, true))
{
Found = (MainTable->FieldByName("Licenses")->AsString == "1");
while (!Found)
{
if (!JvDBGrid1->SearchNext(ResultCol, ResultField, true, false, true))
break;
Found = (MainTable->FieldByName("Licenses")->AsString == "1");
}
}
if (Found)
ShowMessage("Result found:\r\n" + ResultField->AsString);
else
{
JvDBGrid1->RestoreGridPosition();
ShowMessage("Not found");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::JvDBGridFooter1Calculate(TJvDBGridFooter *Sender,
const AnsiString FieldName, Variant &CalcValue)
{
if (MainTable->Active)
{
if (AnsiSameText(FieldName, "Licenses"))
{
CountQuery->Open();
if (CountQuery->Eof)
CalcValue = "ERROR";
else
CalcValue = CountQuery->FieldByName("Total")->AsInteger;
CountQuery->Close();
}
else
if (AnsiSameText(FieldName, "Category"))
{
CalcValue = AnsiString("");
for (int C = 0; C < JvDBGrid1->Columns->Count; C++)
{
if (JvDBGrid1->Columns->Items[C]->Visible)
{
if (CalcValue != AnsiString("")) CalcValue += AnsiString(",");
CalcValue += IntToStr(JvDBGrid1->Columns->Items[C]->Width);
}
}
CalcValue = "Widths = " + CalcValue;
}
else
CalcValue = MainTable->RecordCount;
}
else
CalcValue = FieldName;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -