unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, sqldb, db, sqlite3conn, FileUtil, RTTICtrls, Forms,
Controls, Graphics, Dialogs, StdCtrls, ComCtrls, lclintf, ExtCtrls, DbCtrls,
DBGrids, FileCtrl, Types;
type
{ TForm1 }
TForm1 = class(TForm)
Button2: TButton;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
ListBox1: TListBox;
SQLite3Connection1: TSQLite3Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
StatusBar1: TStatusBar;
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure ListBox1SelectionChange(Sender: TObject; User: boolean);
procedure StatusBar1DblClick(Sender: TObject);
private
FUrlList: TStringList;
function ValidFields: Boolean;
public
end;
var
Form1: TForm1;
var uname:string;
procedure GetData;
implementation
uses LCLType;
{$R *.lfm}
resourcestring
sInvalidFields = 'You must fill *both* fields!';
{ TForm1 }
function TForm1.ValidFields: Boolean;
{ TODO : A good and nice validation! }
begin
Result := (Edit1.Text <> '') and (Edit2.Text <> '');
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i : string;
begin
FUrlList := TStringList.Create;
{ Cleanup design-time artifacts }
Edit1.Text := EmptyStr;
Edit2.Text := EmptyStr;
//LISTBOX1.ITEMS.LoadFromFile('WI_NAME');
begin
i :='Select WI_NAME, WI_URL from ICP_DOCUS';
SQLQuery1.Close;
SQLQuery1.SQL.Text := i;
SQLite3Connection1.Connected:=True;
SQLTransaction1.Active:=True;
SQLQuery1.Open;
While Not SQLQuery1.EOF do begin
ListBox1.Items.Add(SQLQuery1.FieldByName('WI_NAME').AsString);
//ListBox1.Items.Add(SQLQuery1.FieldByName('WI_URL').AsString);
SQLQuery1.Next;
END;
GetData;
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
SQLQuery1.Close;
SQLite3Connection1.Connected := False;
SQLTransaction1.Active := False;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FUrlList.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Index: Integer;
sqlText: string;
begin
if ValidFields then begin
Index := FUrlList.IndexOf(Edit1.Text);
if Index >= 0 then
{ URL is already stored, so update Listbox }
ListBox1.Items[Index] := Edit2.Text
else begin
{ New URL: Store it and update ListBox }
FUrlList.Add(Edit1.Text);
ListBox1.Items.Add(Edit2.Text);
end;
end else
ShowMessage(sInvalidFields);
begin
sqlText := 'INSERT INTO ICP_DOCUS(WI_NAME, WI_URL) ' +
'VALUES(:WI_NAME, :WI_URL)';
SQLQuery1.Close;
SQLQuery1.SQL.Text := sqlText;
SQLQuery1.Params.ParamByName('WI_URL').AsString := Trim(Edit1.Text);
SQLQuery1.Params.ParamByName('WI_NAME').AsString := Trim(Edit2.Text);
SQLQuery1.ExecSQL;
SQLTransaction1.Commit;
ShowMessage('Saved!');
Edit1.clear;
Edit2.Clear;
GetData;
end;
{$ifdef debug -- let's make a little check}
Assert(FUrlList.Count = ListBox1.Items.Count,
Format('Wrong items count: FUrlist %d vs. ListBox %d',
[FUrlList.Count, ListBox1.Items.Count);
{$endif}
//LISTBOX1.ITEMS.SAVETOFILE('TRY.TXT');
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
statusbar1.simpletext:=listbox1.items[listbox1.itemindex]
end;
procedure TForm1.ListBox1SelectionChange(Sender: TObject; User: boolean);
var
sqlText: string;
begin
sqlText := 'SELECT WI_URL FROM ICP_DOCUS';
Form1.SQLQuery1.Close;
Form1.SQLQuery1.SQL.Text := sqlText;
Form1.SQLite3Connection1.Connected := True;
Form1.SQLTransaction1.Active := True;
Form1.SQLQuery1.Open;
end;
procedure TForm1.StatusBar1DblClick(Sender: TObject);
var
i : string;
begin
i :='Select WI_URL from ICP_DOCUS';
SQLQuery1.Close;
SQLQuery1.SQL.Text := i;
SQLite3Connection1.Connected:=True;
SQLTransaction1.Active:=True;
SQLQuery1.Open;
OpenURL(Statusbar1.simpleText);
end;
procedure GetData;
var
sqlText: string;
begin
sqlText := 'SELECT WI_NAME FROM ICP_DOCUS';
Form1.SQLQuery1.Close;
Form1.SQLQuery1.SQL.Text := sqlText;
Form1.SQLite3Connection1.Connected := True;
Form1.SQLTransaction1.Active := True;
Form1.SQLQuery1.Open;
end;
//procedure GetData2;
//var
// sqlText: string;
//begin
//
// sqlText := 'SELECT WI_URL FROM ICP_DOCUS';
//
// Form1.SQLQuery1.Close;
// Form1.SQLQuery1.SQL.Text := sqlText;
// Form1.SQLite3Connection1.Connected := True;
// Form1.SQLTransaction1.Active := True;
// Form1.SQLQuery1.Open;
//
// Statusbar1.simpletext:=sqltext;
//end;
//
end.