AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Informationen aus einem ClientDataSet auslesen

Informationen aus einem ClientDataSet auslesen

Ein Thema von ChristianG · begonnen am 10. Jul 2014 · letzter Beitrag vom 11. Jul 2014
Antwort Antwort
Seite 1 von 2  1 2   
ChristianG

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 08:32
Delphi-Quellcode:
XMLlogin := NewXMLDocument;
  postdata := TStringList.Create;
  passwort := edPasswort.Text;
  benutzername := edBenutzername.Text;
   lURL := 'http://kinobox.net:11800/1.0/logins?apikey=2013dolphinV8';
Ich hole die Daten aus dem Internet.

Ich habe die Namen und die Preise , die im Client DataSet stehen. Jetzt möchte ich z.B durch ein Grid die Namen ausgeben.Zu jeder Zeile sollen automatisch 2 Buttons gesetzt werden. Das Grid ist so aufgebaut : Button1(Muss automatisch erstellt weren)-Name-Anzahl-Button2(Muss automatisch erstellt werden). Zuerst möchte ich die Buttons automatisch generieren.Also wenn Rowcount 20 ist sollen 40 Buttons automatisch erzeugt werden. Wie geht das?
Ich versuche mal die Aufgabe Step by Step zu lösen.
Hast du mein Problem jetzt verstanden?
Danke für deine Hilfe
Mit freundlichen Grußen:
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 08:46
Das ist machbar, aber relativ aufwändig.
Spätestens wenn du mehr Datensätze hast, als auf den Bildschirm passen, musst du auch noch das Scrollen im Grid berücksichtigen und die Buttons entsprechend löschen und neu erstellen oder die Positionen mit-scrollen. Wie schon geschrieben: Machbar aber wenn es nicht verpflichtend ist, würde ich es lassen. Vielleicht gibt es aber auch irgendwo eine Grid-Komponente, die diese Funktionalität von Haus aus mitbringt. Müsstest du dann mal googeln.

Eventuell kannst du auch zwei Dummy-Spalten im Grid anlegen, die du wie Buttons aussehen lässt. Beim OnClick des Grids musst du dann prüfen, ob eine diese Spalten angeklickt wurde und entsprechend reagieren. Das hätte auch den Vorteil, dass du gleich auf dem richtigen Datensatz stehst.

Oder mache es wie in den meisten Anwendungen. Erstelle einfach 2 Button unter oder neben dem Grid und verwende nur diese beiden. Nachteil: Der Anwender muss zweimal klicken. Einmal den Datensatz auswählen und dann den entsprechenden Button.
Peter
  Mit Zitat antworten Zitat
ChristianG

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 08:55
Dies soll eine App werden, was bedeutet,dass diese gut aussehen muss aber auch sehr einfach zu bedienen sein muss. Also muss ich es mit 2 Buttons machen. Die Anzahl der Namen wird auch nicht Größer als 7 werden, was heißt, dass alles auf den Bildschirm passt. Wie setzt man das mit dem automatischen generieren um? Kannst du mir das erklären?
Danke für deine schnelle Antwort.
Mit freundlichen Grüßen:
Christian
  Mit Zitat antworten Zitat
Koloss

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 09:16
Code:
Button := TButton.Create(Self);
Button.Parent := self;
Button.Left := 10;
Button.Top := 10;
  Mit Zitat antworten Zitat
Photoner

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 10:45
Delphi-Quellcode:
 for u := 0 to XMLbezahlen.DocumentElement.ChildNodes.Count - 1 do begin
       bnode := XMLbezahlen.DocumentElement.ChildNodes.Get(i);

       for p := u-1 downto 0 do begin
         if
          (bnode.ChildNodes.FindNode('Name').Text = {...Name von Element mit Index "p"}) and (bnode.ChildNodes.FindNode('Name').Price = {...Preis von Element mit Index "p"})
         then
          break;
       end;

       if p>=0 then begin
        cdsBezahlen.Append;
        cdsBezahlen.FieldByName('Position').asInteger := i;
        cdsBezahlen.FieldByName('ID').AsString := bnode.ChildNodes.FindNode('ID').Text;
        cdsBezahlen.FieldByName('Name').AsString := bnode.ChildNodes.FindNode('Name').Text;
        cdsBezahlen.FieldByName('Kosten').AsString := bnode.ChildNodes.FindNode('Price').Text;
        cdsBezahlen.Post;
       end else continue;
Gleich verhindern dass es in die Liste kommt; Wie wäre es damit?
Chris
  Mit Zitat antworten Zitat
ChristianG

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 10:49
Ja danke^^
Christian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#7

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 15:46
Delphi-Quellcode:
 for u := 0 to XMLbezahlen.DocumentElement.ChildNodes.Count - 1 do begin
       bnode := XMLbezahlen.DocumentElement.ChildNodes.Get(i);

       for p := u-1 downto 0 do begin
         if
          (bnode.ChildNodes.FindNode('Name').Text = {...Name von Element mit Index "p"}) and (bnode.ChildNodes.FindNode('Name').Price = {...Preis von Element mit Index "p"})
         then
          break;
       end;

       if p>=0 then begin
        cdsBezahlen.Append;
        cdsBezahlen.FieldByName('Position').asInteger := i;
        cdsBezahlen.FieldByName('ID').AsString := bnode.ChildNodes.FindNode('ID').Text;
        cdsBezahlen.FieldByName('Name').AsString := bnode.ChildNodes.FindNode('Name').Text;
        cdsBezahlen.FieldByName('Kosten').AsString := bnode.ChildNodes.FindNode('Price').Text;
        cdsBezahlen.Post;
       end else continue;
Gleich verhindern dass es in die Liste kommt; Wie wäre es damit?
XPath

Gleich nur das suchen, was man haben will.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
ChristianG

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

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 15:49
Delphi-Quellcode:
 for u := 0 to XMLbezahlen.DocumentElement.ChildNodes.Count - 1 do begin
       bnode := XMLbezahlen.DocumentElement.ChildNodes.Get(i);

       for p := u-1 downto 0 do begin
         if
          (bnode.ChildNodes.FindNode('Name').Text = {...Name von Element mit Index "p"}) and (bnode.ChildNodes.FindNode('Name').Price = {...Preis von Element mit Index "p"})
         then
          break;
       end;

       if p>=0 then begin
        cdsBezahlen.Append;
        cdsBezahlen.FieldByName('Position').asInteger := i;
        cdsBezahlen.FieldByName('ID').AsString := bnode.ChildNodes.FindNode('ID').Text;
        cdsBezahlen.FieldByName('Name').AsString := bnode.ChildNodes.FindNode('Name').Text;
        cdsBezahlen.FieldByName('Kosten').AsString := bnode.ChildNodes.FindNode('Price').Text;
        cdsBezahlen.Post;
       end else continue;
Gleich verhindern dass es in die Liste kommt; Wie wäre es damit?
XPath

Gleich nur das suchen, was man haben will.
So geht es auch
Delphi-Quellcode:
 for u := 0 to XMLbezahlen.DocumentElement.ChildNodes.Count - 1 do begin
       bnode := XMLbezahlen.DocumentElement.ChildNodes.Get(u);

       cdsBezahlen.Append;
       cdsBezahlen.FieldByName('Position').asInteger := u;
       cdsBezahlen.FieldByName('ID').AsString := bnode.ChildNodes.FindNode('ID').Text;
       cdsBezahlen.FieldByName('Name').AsString := bnode.ChildNodes.FindNode('Name').Text;
       cdsBezahlen.FieldByName('Kosten').AsString := bnode.ChildNodes.FindNode('Price').Text;
       cdsBezahlen.FieldByName('Sitzrheie').AsString := bnode.ChildNodes.FindNode('SeatingCategory').Text;
       cdsBezahlen.Post;


       myFrame := TFrameTicket.Create(self);
       myFrame.Name :=Format( 'fr%s',[InttoStr(u)]);
       myFrame.Parent := TabItem5;
       myFrame.SetBounds(10, y, 237, 40);
       myFrame.Visible := true;
        y := y + 100;

       myFrame.TicketName := cdsBezahlen.FieldByName('Name').AsString ;
       myFrame.Category := cdsBezahlen.FieldByName('Sitzrheie').AsString ;
       myFrame.Preis := cdsBezahlen.FieldByName('Kosten').AsCurrency;

       end;
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

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

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
 
#10

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
Antwort Antwort
Seite 1 von 2  1 2   

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:22 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-2025 by Thomas Breitkreuz