Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 11:01
Zum generellen Ansatz des dynamischen Erzeugen von Controls, die mit irgendetwas interagieren sollen, bieten sich eigentlich Frames eher an. Der Code wird erheblich übersichtlicher.
Delphi-Quellcode:
TItemFrame = class( TFrame )
  Button1 : TButton;
  procedure Button1Click( Sender : TObject );
private
  FItem : TItem;
  procedure SetItem( const Value : TItem );
public
  property Item : TItem read FItem write SetItem;
end;

procedure TItemFrame.SetItem( const Value : TItem );
begin
  FItem := Value;
  Button1.Enabled := Assigned( FItem );
end;

procedure TItemFrame.Button1Click( Sender : TObject );
begin
  // Was auch immer nun mit dem Item machen
  DoSomethingWith( FItem );
  // oder wenn das Item etwas schlauer ist
  FItem.DoSomething;
end;
Und für die Erzeugung und Verwaltung
Delphi-Quellcode:
LItemFrames.Clear;
for LItem in FItems do
begin
  LItemFrame := TItemFrame.Create( nil );
  try
    LItemFrame.Item := LItem;

    LItemFrame.Parent := ItemsScrollBox; // halt den Container für die Items
    // Positionieren
    LItemFrame.Top := ...
    LItemFrame.Left := ...

    // In einer Liste merken
    FItemFrames.Add( LItemFrame );
    LItemFrame := nil;
  finally
    LItemFrame.Free;
  end;
end;
Das ist prinzipiell der gesamte Code um die Items darzustellen und auch mit Aktionen zu verknüpfen.

Werden die Aktionen umfangreicher, dann wird das Frame umfangreicher (mehr Buttons, mehr Controls, mehr Farbe, mehr BlingBling), der Code zur Verwaltung bleibt meistens exakt gleich
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (11. Jul 2014 um 11:04 Uhr)
  Mit Zitat antworten Zitat