lazarus/examples/dbeditmask/Unit1.pas
2010-05-09 02:43:40 +00:00

121 lines
2.7 KiB
ObjectPascal

unit Unit1;
{$MODE ObjFpc}
{$H+}
interface
uses
LCLIntf, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, ExtCtrls, DBGrids, DB, dbf, FileUtil, LResources;
type
{ TForm1 }
TForm1 = class(TForm)
DBEdit2: TDBEdit;
Dbf1ADATE: TDateField;
Dbf1AINT: TLargeintField;
Dbf1ASTR: TStringField;
Label1: TLabel;
ShowLongDateCheckBox: TCheckBox;
DataSource1: TDataSource;
ClientDataSet1ADate: TDateField;
ClientDataSet1AStr: TStringField;
ClientDataSet1AInt: TLargeintField;
Dbf1: TDbf;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DBEdit1: TDBEdit;
Label3: TLabel;
procedure Dbf1ADATESetText(Sender: TField; const aText: string);
procedure Dbf1AINTGetText(Sender: TField; var aText: string;
DisplayText: Boolean);
procedure FormCreate(Sender: TObject);
procedure ShowLongDateCheckBoxChange(Sender: TObject);
private
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
strutils;
procedure TForm1.FormCreate(Sender: TObject);
begin
ShortDateFormat := 'd/M/yyyy';
if not FileExistsUTF8(Dbf1.TableName) then
begin
Dbf1.FieldDefs.Clear;
Dbf1.FieldDefs.Add('ADate', ftDate);
Dbf1.FieldDefs.Add('AStr', ftString, 50);
Dbf1.FieldDefs.Add('AInt', ftLargeint);
Dbf1.CreateTable;
//add some data
Dbf1.Open;
Dbf1.Append;
Dbf1.FieldByName('ADate').AsString := '12/09/2003';
Dbf1.Post;
Dbf1.Append;
Dbf1.FieldByName('AInt').AsInteger := 1;
Dbf1.Post;
Dbf1.Append;
Dbf1.FieldByName('ADate').AsString := '12/12/1090';
Dbf1.FieldByName('AInt').AsInteger := 30;
Dbf1.Post;
end
else
Dbf1.Open;
end;
procedure TForm1.Dbf1AINTGetText(Sender: TField; var aText: string;
DisplayText: Boolean);
begin
if DisplayText then
begin
if Sender.IsNull then
aText := '(Undefined)'
else if Sender.AsInteger = 0 then
aText := 'No Item'
else if Sender.AsInteger = 1 then
aText := 'Only One Item'
else if Sender.AsInteger < 10 then
aText := 'Few Itens'
else
aText := 'Many Itens';
end
else
aText := Sender.AsString;
end;
procedure TForm1.Dbf1ADATESetText(Sender: TField; const aText: string);
var
FixedStr: String;
begin
//workaround to fpc bug 15039
FixedStr := AnsiReplaceStr(aText, ' ', '');
Sender.AsString := FixedStr;
end;
procedure TForm1.ShowLongDateCheckBoxChange(Sender: TObject);
var
DateField: TDateTimeField;
begin
DateField := Dbf1.FieldByName('ADate') as TDateTimeField;
if ShowLongDateCheckBox.Checked then
DateField.DisplayFormat := LongDateFormat
else
DateField.DisplayFormat := '';
end;
initialization
{$i unit1.lrs}
end.