-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathmainform.pas.bak
157 lines (125 loc) · 3.32 KB
/
mainform.pas.bak
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
unit mainform;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, sqlite3conn, sqldb, db, FileUtil, Forms, Controls,
Graphics, Dialogs, ExtCtrls, StdCtrls, Menus, DbCtrls;
type
{ Tmainfrm }
Tmainfrm = class(TForm)
btn_carilema: TButton;
edt_lema: TEdit;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
list_memuat: TListBox;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
sqlite3con: TSQLite3Connection;
Query: TSQLQuery;
SQLTransaction1: TSQLTransaction;
text_lema: TMemo;
procedure btn_carilemaClick(Sender: TObject);
procedure edt_lemaKeyPress(Sender: TObject; var Key: char);
procedure FormCreate(Sender: TObject);
procedure list_memuatClick(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
private
{ private declarations }
procedure CariKata(lema:string);
public
{ public declarations }
end;
var
mainfrm: Tmainfrm;
implementation
{$R *.lfm}
{ Tmainfrm }
function BaseDir(path:string=''): string;
var var_basedir:string;
begin
if (path = '') then
Result := ExtractFilePath(Application.ExeName)
else
begin
var_basedir := ExtractFilePath(Application.ExeName);
Result := var_basedir + path;
end;
end;
procedure Tmainfrm.CariKata(lema:string);
begin
if (lema = '') then
begin
Query.Close;
Query.SQL.Text:='select * from kbbi where key like "' + lema + '%"';
Query.Open;
Query.First;
// Tampilkan arti dari lema pertama
text_lema.Text := Query.Fields[1].Value;
// Cek jika lema yang memuat kata-kata lainnya
// Pertama-tama bersihkan dulu list
list_memuat.Items.Clear;
// Lalu kemudian cari
while not Query.EOF do
begin
list_memuat.Items.Add( Query.FieldByName('key').AsString);
Query.Next;
end;
// Jika ada kata yg memuat maka set itemselection pada index awal
if list_memuat.Count > 0 then
list_memuat.ItemIndex:=0;
end;
end;
procedure Tmainfrm.FormCreate(Sender: TObject);
var dbKBBI:boolean;
begin
// Cek keberadaan database
dbKBBI:=FileExists(BaseDir('db/kbbi.sqlite'));
// Jika database tidak ada maka aplikasi otomatis dihentikan
if not dbKBBI then
begin
ShowMessage('Galat Database tidak ada.');
Application.Terminate;
end;
// Koneksikan ke database
try
sqlite3con.DatabaseName:=BaseDir('db/kbbi.sqlite');
SQLTransaction1.Active:=true;
except
ShowMessage('Galat, tidak bisa menyambukan dengan database, kemungkinan database rusak');
end;
end;
procedure Tmainfrm.list_memuatClick(Sender: TObject);
var
kata:string;
begin
if list_memuat.Count > 0 then
begin
kata := list_memuat.Items[list_memuat.ItemIndex];
edt_lema.Text := kata;
CariKata(kata);
end;
end;
procedure Tmainfrm.MenuItem2Click(Sender: TObject);
var
str:String;
begin
str := 'KBBI Offline ' + sLineBreak + 'dibangun dengan Lazarus' +
sLineBreak + sLineBreak + 'oleh Ali' + sLineBreak +
'Surel: [email protected]';
ShowMessage(str);
end;
procedure Tmainfrm.btn_carilemaClick(Sender: TObject);
begin
CariKata(edt_lema.Text);
end;
procedure Tmainfrm.edt_lemaKeyPress(Sender: TObject; var Key: char);
begin
if ord(Key) = 13 then
begin
Key := #0; // prevent beeping
CariKata(edt_lema.Text);
end;
end;
end.