Я новичок в Lazarus, и мне было интересно, сможет ли кто-нибудь из вас решить проблему с барьером, с которым я столкнулся.
Мое приложение разбито на фреймы. Существует рамка напоминаний, которая позволяет создавать напоминания. Это мой код в этом кадре.
reminder_frame.pas:
unit reminder_frame;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, sqlite3conn, sqldb, FileUtil, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, ExtDlgs, dialogs;
type
{ TReminderFrame }
TReminderFrame = class(TFrame)
Button1: TButton;
btnCalendar: TButton;
Button2: TButton;
createdb: TButton;
CalendarDialog1: TCalendarDialog;
DescriptionMemo: TMemo;
Image2: TImage;
NameEdit: TEdit;
HoursEdit: TEdit;
Label2: TLabel;
MinsEdit: TEdit;
editDate: TEdit;
Image1: TImage;
Label1: TLabel;
SQLiteConnection: TSQLite3Connection;
SQLQuery: TSQLQuery;
SQLTransaction: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure btnCalendarClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure createdbClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
implementation
{$R *.lfm}
{ TReminderFrame }
uses dashboard_unit;
procedure TReminderFrame.Button1Click(Sender: TObject);
begin
if NameEdit.Text = '' then
begin
showmessage('Name required.');
end else
if editDate.Text = '' then
begin
showmessage('Date required.');
end else
if HoursEdit.Text = '' then
begin
showmessage('Hour required.');
end else
if MinsEdit.Text = '' then
begin
showmessage('Mins required.');
end else
if DescriptionMemo.Text = '' then
begin
showmessage('Description required.');
end else
begin
SQLTransaction.StartTransaction;
SQLQuery.SQL.Clear;
SQLQuery.SQL.Add('select * from reminders where reminder_name = "'+ NameEdit.Text +'"');
SQLQuery.Open;
SQLQuery.Edit;
SQLQuery['reminder_name']:=NameEdit.Text;
SQLQuery['reminder_date']:=StrToDateTime(editDate.Text+' '+HoursEdit.Text+':'+MinsEdit.Text+':00');
SQLQuery['reminder_description']:=DescriptionMemo.Text;
SQLQuery.Post;
SQLQuery.ApplyUpdates;
SQLQuery.Close;
SQLTransaction.Commit;
SQLTransaction.EndTransaction;
Form1.showreminders;
Self.Hide;
Self.Free;
end;
end;
procedure TReminderFrame.btnCalendarClick(Sender: TObject);
begin
if CalendarDialog1.Execute then
begin
editDate.Text:=DateTimeToStr(CalendarDialog1.Date);
end;
end;
procedure TReminderFrame.Button2Click(Sender: TObject);
begin
Self.Hide;
Self.Free;
end;
procedure TReminderFrame.createdbClick(Sender: TObject);
var
newFile : Boolean;
begin
SQLiteConnection.Close; // Ensure the connection is closed when we start
try
// Since we're making this database for the first time,
// check whether the file already exists
newFile := not FileExists(SQLiteConnection.DatabaseName);
if newFile then
begin
// Create the database and the tables
try
SQLiteConnection.Open;
SQLTransaction.Active := true;
// Here we're setting up a table named "DATA" in the new database
SQLiteConnection.ExecuteDirect('CREATE TABLE "reminders"('+
' "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT,'+
' "reminder_name" Char(128) NOT NULL,'+
' "reminder_description" Char(128) NOT NULL,'+
' "reminder_date" DateTime NOT NULL);');
// Creating an index based upon id in the DATA Table
// SQLiteConnection.ExecuteDirect('CREATE UNIQUE INDEX "Data_id_idx" ON "DATA"( "id" );');
SQLTransaction.Commit;
ShowMessage('Succesfully created database.');
except
ShowMessage('Unable to Create new Database');
end;
end;
except
ShowMessage('Unable to check if database file exists');
end;
end;
end.
У меня есть база данных (SQLite3) со следующими данными:
SQLiteConnection.ExecuteDirect('CREATE TABLE "reminders"('+
' "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT,'+
' "reminder_name" Char(128) NOT NULL,'+
' "reminder_description" Char(128) NOT NULL,'+
' "reminder_date" DateTime NOT NULL);');
И у меня в главной форме есть TStringGrid, в которой перечислены все мои напоминания. Я надеюсь в скором времени включить кнопку удаления, но сейчас мне просто нужно удалить свою базу данных: /
Итак, к рассматриваемой проблеме: как мне уведомить пользователя (меня), когда «напоминание_дата» напоминания является реальной датой и временем (сейчас).
Я просто хочу получить следующую информацию о показе сообщения:
showmessage («У вас есть напоминание!» + [Имя должного напоминания] + «подлежит оплате». + [Описание должного напоминания])
Спасибо всем!
Хотите получить информацию? Не стесняйтесь спрашивать!
Харрисон