AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bei TList, Record auf Datenänderung reagieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bei TList, Record auf Datenänderung reagieren

Ein Thema von RWarnecke · begonnen am 27. Dez 2009 · letzter Beitrag vom 26. Jan 2010
 
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#21

Re: Bei TList, Record auf Datenänderung reagieren

  Alt 26. Jan 2010, 20:57
So sieht mein Versuch aus. Nur leider schaffe ich es nicht,
Delphi-Quellcode:
  TGesellschafterChangeEvent = procedure(Sender: TObject; Obj: TGesellschaftsname) of object;

  TGesellschafterObjListe = class(TObjectList)
  private
    FOnChange : TGesellschafterChangeEvent;
  protected
    function getItem(Index: Integer): TGesellschaftsname; virtual;
    procedure setItem(Index: Integer; Objekt: TGesellschaftsname); virtual;
  public
    function Add(Objekt: TGesellschaftsname): Integer; virtual;
    function NewRecord(Objekt: TGesellschaftsname): Integer; virtual;
    function Remove(Objekt: TGesellschaftsname): Integer; virtual;
    function IndexOf(Objekt: TGesellschaftsname): Integer; virtual;
    procedure Insert(Index: Integer; Objekt: TGesellschaftsname); virtual;
    property Items[index: Integer]: TGesellschaftsname read getItem write setItem; default;
    property OnChange: TGesellschafterChangeEvent read FOnChange write FOnChange;
  end;

{...}

procedure TMainForm.GesellschafterListeChange(Sender: TObject; Obj: TGesellschaftsname);
begin
  with DM_Main.UniQuery_Temp do
  begin
    SQL.Text := 'EXECUTE PROCEDURE SP_NEW_GESELLSCHAFTER (:stammnr, :name, :B1, :B2, :D2);';
    ParamByName('StammNr').AsInteger := Obj.StammNr;
    ParamByName('Name').AsString := Obj.Gesellschaftername;
    ParamByName('B1').AsFloat := Obj.Zeichnungskapital;
    ParamByName('B2').AsFloat := Obj.ZahlenderBetrag;
    ParamByName('D2').AsDateTime := Obj.ZweiteZahlung;
    Execute;
  end;
end;

{...}

function TGesellschafterObjListe.Add(Objekt: TGesellschaftsname): Integer;
begin
  Result := inherited Add(Objekt);
end;

function TGesellschafterObjListe.getItem(Index: Integer): TGesellschaftsname;
begin
  Result := TGesellschaftsname(inherited Items[Index]);
end;

function TGesellschafterObjListe.IndexOf(Objekt: TGesellschaftsname): Integer;
begin
  Result := inherited IndexOf(Objekt);
end;

procedure TGesellschafterObjListe.Insert(Index: Integer; Objekt: TGesellschaftsname);
begin
  inherited Insert(Index, Objekt);
end;

function TGesellschafterObjListe.NewRecord(Objekt: TGesellschaftsname): Integer;
begin
  Result := inherited Add(Objekt);
  if Assigned(FOnChange) then
    FOnChange(Self, Objekt);
end;

function TGesellschafterObjListe.Remove(Objekt: TGesellschaftsname): Integer;
begin
  Result := inherited Remove(Objekt);
end;

procedure TGesellschafterObjListe.setItem(Index: Integer; Objekt: TGesellschaftsname);
begin
  inherited Items[Index] := Objekt;
  if Assigned(FOnChange) then
    FOnChange(Self, Objekt);
end;
Das ChangeEvent wird nicht ausgeführt, wenn ich einen Wert ändere. Wenn ich NewRecord ausführe, dann wird das Change-Event ausgeführt, aber in Obj stehen keine Werte aus der Klasse. Kann mir da jemand bitte weiterhelfen, denn ich weiß nichtmehr weiter.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz