-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainFormUnit.cpp
More file actions
140 lines (122 loc) · 4.55 KB
/
MainFormUnit.cpp
File metadata and controls
140 lines (122 loc) · 4.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//---------------------------------------------------------------------------
#include <iostream>
#include <vcl.h>
#include <sqlite3.h>
#include "Sqlite3Unit.h"
#pragma hdrstop
using namespace std;
#include "MainFormUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "VirtualTrees"
#pragma link "VirtualTrees.AncestorVCL"
#pragma link "VirtualTrees.BaseAncestorVCL"
#pragma link "VirtualTrees.BaseTree"
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
DatebaseStringTree->NodeDataSize = sizeof(NodeStruct);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OpenDatabaseButtonClick(TObject *Sender)
{
UnicodeString fileName;
if(OpenDBdialog->Execute())
{
fileName = OpenDBdialog->FileName;
}
if(!fileName.IsEmpty())
{
FilePathLabel->Caption = fileName.c_str();
bool res = HistoryDatabase.OpenDatabase(fileName.c_str() );
if(!res)
{
Application->MessageBox(L"Îøèáêà îòêðûòèÿ áàçû äàííûõ", L"Îøèáêà", MB_OK);
}
}
}
//---------------------------------------------------------------------------
void FillStringTree(TVirtualStringTree *stringTree, SQLiteHistory *HistoryDatabase)
{
//Îñòàíàâëèâàåì îáíîâëåíèå èíòåðôåéñà
stringTree->BeginUpdate();
//Î÷èñòèòü äåðåâî
stringTree->Clear();
HistoryDatabase->PrepareStatement();
for(ULONGLONG i=0; i<10000; i++)
{
if(HistoryDatabase->Step())
{
//Äîáàâëÿåì î÷åðåäíóþ çàïèñü
PVirtualNode entryNode = stringTree->AddChild(stringTree->RootNode);
//Çàïîëíÿåì äàííûå óçëà
NodeStruct *nodeData = (NodeStruct*)stringTree->GetNodeData(entryNode);
nodeData->Id = HistoryDatabase->GetId();
nodeData->Url = HistoryDatabase->GetUrl();
nodeData->Title = HistoryDatabase->GetTitle();
nodeData->LastVisit = HistoryDatabase->GetLastVisit();
}
else break;
}
//Âêëþ÷àåì îáíîâëåíèå èíòåðôåéñà
stringTree->EndUpdate();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FillNodeClick(TObject *Sender)
{
FillStringTree(DatebaseStringTree, &HistoryDatabase);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DatebaseStringTreeGetText(TBaseVirtualTree *Sender, PVirtualNode Node,
TColumnIndex Column, TVSTTextType TextType, UnicodeString &CellText)
{ //Âûâîäèì äàííûå íà ýêðàí
if(!Node) return;
NodeStruct *nodeData = (NodeStruct*)Sender->GetNodeData(Node);
switch(Column)
{
case 0: CellText = nodeData->Id; break;
case 1: CellText = nodeData->Url; break;
case 2: CellText = nodeData->Title; break;
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TMainForm::DatebaseStringTreeAddToSelection(TBaseVirtualTree *Sender,
PVirtualNode Node)
{ //Ýòà ôóíêöèÿ îïðåäåëÿåò, ÷òî áóäåò ïðîèçâîäèòüñÿ ïðè âûäåëåíèè óçëà
if(!Node) return; //Ïðîâåðêà ÷òî âûáðàííàÿ ÿ÷åéêà íå ïóñòàÿ
//Ñîçäàåì óêàçàòåëü ñ òèïîì ñîçäàííîé ñòðóêòóðû óçëà äëÿ îáðàùåíèÿ ê ïîëÿì óçëà
NodeStruct *nodeData = (NodeStruct*)Sender->GetNodeData(Node);
//Âûâîä äîï. èíô.
UnicodeString date = L"Äàòà ïîñëåäíåãî ïîñåùåíèÿ: ";
date += DateConvert(nodeData->LastVisit).c_str();
//Èçìåíÿåì ñâîéñòâî Caption ó Name, îòîáðàæàåì äîï. èíô.
LastVisit->Caption = date.c_str();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::DeleteButtonClick(TObject *Sender)
{
//Ïîëó÷àåì âûäåëåííûé óçåë
PVirtualNode selectedNode = DatebaseStringTree->FocusedNode;
if(!selectedNode) return; //Ïðîâåðêà, ÷òî óçåë ïîëó÷åí
//Ñîçäàåì óêàçàòåëü ñ òèïîì ñîçäàííîé ñòðóêòóðû óçëà äëÿ îáðàùåíèÿ ê ïîëÿì óçëà
NodeStruct *nodeData = (NodeStruct*)DatebaseStringTree->GetNodeData(selectedNode);
//Óäàëåíèå çàïèñè â áàçå äàííûõ
HistoryDatabase.DeleteEntry(nodeData->Id);
//Óäàëÿåì óçåë èç òàáëèöû
DatebaseStringTree->DeleteNode(selectedNode);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClearHistoryClick(TObject *Sender)
{
int result = Application->MessageBox(L"Âû óâåðåíû, ÷òî õîòèòå óäàëèòü âñþ èñòîðèþ ïîñåùåíèé?",
L"Óäàëåíèå èñòîðèè ïîñåùåíèé", MB_YESNO);
if (result == IDYES)
{
HistoryDatabase.ClearHistory();
}
}
//---------------------------------------------------------------------------