AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Informationen aus einem ClientDataSet auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Informationen aus einem ClientDataSet auslesen

Ein Thema von ChristianG · begonnen am 10. Jul 2014 · letzter Beitrag vom 11. Jul 2014
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 09:18
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.
Peter
  Mit Zitat antworten Zitat
Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#12

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 09:29
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
Chris

Geändert von Photoner (11. Jul 2014 um 09:39 Uhr) Grund: Idee Nachtrag
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#13

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 09:38
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 09:47
@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
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)
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#15

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 09:49
Stimmt! Diese Problem hat mich jetzt im Firemonkey erschlagen. Siehe mein Problem, halb gelöst!
http://www.delphipraxis.net/181049-c...ml#post1265175

Geändert von Koloss (11. Jul 2014 um 09:58 Uhr)
  Mit Zitat antworten Zitat
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, 10: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 10:04 Uhr)
  Mit Zitat antworten Zitat
ChristianG

Registriert seit: 8. Jul 2014
97 Beiträge
 
Delphi XE6 Starter
 
#17

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 10:07
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?
Christian
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 10:09
Du kannst der entsprechenden Event-Property eine entsprechende Methode zuweisen.
Markus Kinzler
  Mit Zitat antworten Zitat
ChristianG

Registriert seit: 8. Jul 2014
97 Beiträge
 
Delphi XE6 Starter
 
#19

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 10:10
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
Damit hat sich meine Frage von selbst beantwortet.
Ich glaube, dass ich jetzt mein Programm ohne Probleme weiterschreiben kann^^.
Christian
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#20

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 10:13
Du kannst der entsprechenden Event-Property eine entsprechende Methode zuweisen.
Und auch den Sender abfragen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    

 

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 14:23 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