type
TModifyActionList = (lnNone, lnChange, lnDelete);
TZahlungsart =
class
private
FOnChange : TNotifyEvent;
FModifyAction : TModifyActionList;
FID : Integer;
FZahlungsart :
string;
procedure SetID(Value: Integer);
procedure SetZahlungsart(Value:
string);
public
property ID : Integer
read FID
write SetID;
property Zahlungsart :
string read FZahlungsart
write SetZahlungsart;
property ModifyAction : TModifyActionList
read FModifyAction
write FModifyAction;
property OnChange : TNotifyEvent
read FOnChange
write FOnChange;
end;
var
ZahlungsartList : TObjectList<TZahlungsart>;
Zahlungsart: TZahlungsart;
CounterDB: Integer;
procedure TForm3.Btn_1Click(Sender: TObject);
begin
CounterDB := 0;
L_1.Caption := '
Anzahl der Objekte in der Liste :' + IntToStr(ZahlungsartList.Count);
Edt_1.Text := IntToStr(ZahlungsartList.Items[CounterDB].ID);
Edt_2.Text := ZahlungsartList.Items[CounterDB].Zahlungsart;
end;
procedure TForm3.Edt_2Exit(Sender: TObject);
begin
ZahlungsartList.Items[CounterDB].ModifyAction := lnChange;
ZahlungsartList.Items[CounterDB].Zahlungsart := Edt_2.Text;
ZahlungsartList.Items[CounterDB].ModifyAction := lnNone;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
ZahlungsartList := TObjectList<TZahlungsart>.Create;
if not UniCon_1.Connected
then
UniCon_1.Connect;
with UniQuery_1
do
begin
SQL.Text := '
SELECT * FROM Zahlungsarten;';
Open;
while not Eof
do
begin
Zahlungsart := TZahlungsart.Create;
Zahlungsart.OnChange := ZahlungsartChange;
Zahlungsart.ID := FieldByName('
ID').AsInteger;
Zahlungsart.Zahlungsart := FieldByName('
Zahlungsart').AsString;
ZahlungsartList.Add(Zahlungsart);
Next;
end;
Close;
end;
end;
procedure TForm3.SBtn_1Click(Sender: TObject);
begin
CounterDB := CounterDB - 1;
Edt_1.Text := IntToStr(ZahlungsartList.Items[CounterDB].ID);
Edt_2.Text := ZahlungsartList.Items[CounterDB].Zahlungsart;
end;
procedure TForm3.SBtn_2Click(Sender: TObject);
begin
CounterDB := CounterDB + 1;
Edt_1.Text := IntToStr(ZahlungsartList.Items[CounterDB].ID);
Edt_2.Text := ZahlungsartList.Items[CounterDB].Zahlungsart;
end;
procedure TForm3.ZahlungsartChange;
begin
with UniQuery_1
do
begin
SQL.Text := '
UPDATE OR INSERT INTO Zahlungsarten (ID, Zahlungsart) VALUES (:ID, :Zahlungsart) MATCHING (ID);';
ParamByName('
ID').AsInteger := ZahlungsartList.Items[CounterDB].ID;
ParamByName('
Zahlungsart').AsString := ZahlungsartList.Items[CounterDB].Zahlungsart;
Execute;
end;
end;
{ TZahlungsart }
procedure TZahlungsart.SetID(Value: Integer);
begin
FID := Value;
if (Assigned(FOnChange))
and (FModifyAction = lnChange)
then
FOnChange(Self);
end;
procedure TZahlungsart.SetZahlungsart(Value:
string);
begin
FZahlungsart := Value;
if (Assigned(FOnChange))
and (FModifyAction = lnChange)
then
FOnChange(Self);
end;