AW: Informationen aus einem ClientDataSet auslesen
Koloss hat ja schon die Basis für die Erstellung geschrieben. Die Positionen und Größen musst du natürlich noch berechnen.
Dazu musst du noch dem OnClick eine Methode zuweisen, die deine Aktionen ausführt. Das kann ich aber nicht aus dem Kopf. Aber es wird sich sicher jemand im Forum bereit finden, das kurz zu erläutern. Ist auch kein Hexenwerk. Ich habe das nur schon länger nicht mehr gemacht. |
AW: Informationen aus einem ClientDataSet auslesen
Easy:
Delphi-Quellcode:
Button := TButton.Create(Self);
Button.Parent := self; Button.Left := 10; Button.Top := 10; Button.OnClick := MyOnClick; //Edit: Gib die ID oder den Name des Tickets Button.Name := 'Button'+cdsBezahlen.FieldByName('Name').AsString;
Delphi-Quellcode:
procedure TMyForm.MyOnClick(Sender: TObject)
var MyString : String; begin //MyProc //Edit: //Hier kannst du mit Hilfe des Namens des Buttons die gewünschten Inhalte identifizieren MyString := TButton(Sender).Name; //MyString = 'Button....' end |
AW: Informationen aus einem ClientDataSet auslesen
Delphi-Quellcode:
Button := TButton.Create(Self);
Button.Parent := self; Button.Left := 10; Button.Top := 10; Button.OnClick := MyOnClick Button.Name := 'Button' + IntToStr(Nummer);
Delphi-Quellcode:
procedure TMyForm.MyOnClick(Sender: TObject)
begin //MyProc end procedure TMyForm.FormDestroy(Sender: TObject) var i : Integer; begin for i := 0 to 19 do // 19 = ButtonAnzahl - 1 begin Button := TButton(FindComponent('Button' + IntToStr(Nummer))); if Button <> nil then Button.Free; end; end |
AW: Informationen aus einem ClientDataSet auslesen
@Koloss
Es ist absolut überflüssig die Buttons explizit zu löschen, denn bei der Erzeugung hast du die Kontrolle (Angabe des Owners) doch schon abgegeben und der Owner (hier die Form) kümmert sich schon um die Freigabe. Selbst wenn der Owner nicht angegeben wird, braucht ein Control ja einen Parent, damit es angezeigt werden kann. Und wenn kein Owner gesetzt, dann kümmert sich der Parent um die Freigabe ;) |
AW: Informationen aus einem ClientDataSet auslesen
Stimmt! Diese Problem hat mich jetzt im Firemonkey erschlagen. Siehe mein Problem, halb gelöst!
http://www.delphipraxis.net/181049-c...ml#post1265175 |
AW: Informationen aus einem ClientDataSet auslesen
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:
Und für die Erzeugung und Verwaltung
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;
Delphi-Quellcode:
Das ist prinzipiell der gesamte Code um die Items darzustellen und auch mit Aktionen zu verknüpfen.
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; 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 |
AW: Informationen aus einem ClientDataSet auslesen
Vielen Dank euch allen!
Ich probiere es jetzt direkt aus und hoffe, dass alles klappt. Können auch bestimmte Anweisungen für den generierten Button erstellt werden. z.b. wie in meinem Fall dass die rechten Buttons ein Grid hochzählen lassen und die Kosten, die der angegebene Name hat, ermitteln und auslesen? |
AW: Informationen aus einem ClientDataSet auslesen
Du kannst der entsprechenden Event-Property eine entsprechende Methode zuweisen.
|
AW: Informationen aus einem ClientDataSet auslesen
Zitat:
Ich glaube, dass ich jetzt mein Programm ohne Probleme weiterschreiben kann^^. |
AW: Informationen aus einem ClientDataSet auslesen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz