unit mainFrm; {$mode objfpc}{$H+} interface uses Classes, SysUtils, sqlite3conn, sqldb, db, FileUtil, Forms, Controls, Graphics, Dialogs, DBGrids, DbCtrls, StdCtrls, ExtCtrls, LCLType, Menus, ComCtrls; type { TMainForm } TMainForm = class(TForm) Button1: TButton; DS: TDataSource; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; Conn: TSQLite3Connection; Edit1: TEdit; MainMenu1: TMainMenu; MenuItem1: TMenuItem; menuClose: TMenuItem; MenuItem3: TMenuItem; menuAbout: TMenuItem; Panel1: TPanel; PopupMenu1: TPopupMenu; SQL: TSQLQuery; SB1: TStatusBar; SQL1: TSQLQuery; Tran: TSQLTransaction; procedure Button1Click(Sender: TObject); procedure DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure DBNavigator1Click(Sender: TObject; Button: TDBNavButtonType); procedure FormCreate(Sender: TObject); procedure menuAboutClick(Sender: TObject); procedure menuCloseClick(Sender: TObject); private { private declarations } public { public declarations } end; var MainForm: TMainForm; implementation {$R *.lfm} { TMainForm } procedure TMainForm.DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState ); begin if (key=VK_RETURN) then begin SQL.UpdateMode:= UpWhereChanged; SQL.ApplyUpdates; Tran.Commit; SQL.Close; SQL.Open; end; end; procedure TMainForm.Button1Click(Sender: TObject); begin SQL1.Close; SQL1.SQL.Text:='CREATE TABLE :TName(ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL)'; SQL1.Params.ParamByName('TName').AsString:= Edit1.Text; SQL1.Open; end; procedure TMainForm.FormCreate(Sender: TObject); begin SQL.Close; SQL.Open; DBGrid1.Columns[0].Visible:= false; SB1.SimpleText:='Database loaed'; end; procedure TMainForm.menuAboutClick(Sender: TObject); begin end; procedure TMainForm.menuCloseClick(Sender: TObject); begin Conn.Connected:= false; SQL.Close; SQL1.Close; end; procedure TMainForm.DBNavigator1Click(Sender: TObject; Button: TDBNavButtonType); begin Case Button of nbInsert: begin DBGrid1.SetFocus; end; nbPost: begin try SQL.Edit; SQL.UpdateMode:= UpWhereChanged; SQL.ApplyUpdates; Tran.Commit; SQL.Close; SQL.Open; except On E: EDatabaseError do begin MessageDlg('Error','A Database Error. Technical Message -> '+E.Message,mtError,[mbOK],0); end; end; end; nbDelete: begin try SQL.Edit; SQL.UpdateMode:= upWhereAll; SQL.ApplyUpdates; Tran.Commit; SQL.Close; SQL.Open; except On E: EDatabaseError do begin MessageDlg('Error','A Database Error. Technical Message -> '+E.Message,mtError,[mbOK],0); end; end; end; nbCancel: begin SQL.Close; SQL.Open;; end; nbRefresh: begin SQL.Close; SQL.Open; end; end; end; end.