AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array Button auslesen

Ein Thema von akio87 · begonnen am 28. Mai 2015 · letzter Beitrag vom 28. Mai 2015
 
akio87

Registriert seit: 18. Mär 2010
44 Beiträge
 
Delphi XE8 Architect
 
#1

Array Button auslesen

  Alt 28. Mai 2015, 08:13
Hallo,

ich möchte eine Art Online-Shop aufbauen...

Zur Laufzeit lasse ich die "Anzeigen..." Buttons erstellen (das klappt wunderbar), welcher der Artikel in Detail erscheinen soll...

Code:
UniMainModule.SQLTable1.Active := false;
    UniMainModule.SQLTable1.TableName := 'artikelliste';
    UniMainModule.SQLTable1.Active := true;
    UniMainModule.SQLTable1.Open;

    UniPanel1.Height := 150;
    n:= 1;
    For i := 0 to UniListBox1.Items.Count-1 do
    begin
     //SQL Abfrage, String aus sl laden und SQL Tabelle suchen...
     str := UniListBox1.Items.Strings[i];
     if UniMainModule.SQLTable1.Locate('ArtNr', str, []) then
      begin
       //Panel erstellen
       PanelArray[n] := TUniPanel.Create(self);
       PanelArray[n].Parent := UniPanel1;
       PanelArray[n].SetBounds(0,100 * n -100,UniPanel1.Width,100);
       PanelArray[n].Name := 'ArrayPanel' + IntToStr(n);

       //TPanel in der höhe erweitern
       UniPanel1.Height := UniPanel1.Height + PanelArray[n].Height;

       //Button auf erstellten Panel erstellen
       ButtonArray[n] := TUniButton.Create(self);
       ButtonArray[n].Parent := PanelArray[n];
       ButtonArray[n].SetBounds(PanelArray[n].Width - 80 , PanelArray[n].Height - 30 ,75,25);
       ButtonArray[n].Caption := 'Anzeigen...';
       ButtonArray[n].Tag := n;
       ButtonArray[n].Name := 'ArrayButton' + IntToStr(n);
       ButtonArray[n].Hint := UniMainModule.SQLTable1.fieldByName('ArtNr').AsString;
       ButtonArray[n].OnClick := ButtonWarenkorbClick;

       //Image setzen
       //Button auf erstellten Panel erstellen
       ImageArray[n] := TUniImage.Create(self);
       ImageArray[n].Parent := PanelArray[n];
       ImageArray[n].SetBounds(0, 0, 100, 100);
       ImageArray[n].Center := true;
       ImageArray[n].Url := 'kasisystem.esy.es/Bilder/' + UniMainModule.SQLTable1.fieldByName('ArtNr').AsString + '.jpg';
       //ShowMessage(ImageArray[i].url);

       //Label setzen und Namen aus Datenbank definieren
       ArtNameArray[n] := TUniLabel.Create(self);
       ArtNameArray[n].Parent := PanelArray[n];
       ArtNameArray[n].SetBounds(ImageArray[n].Width + 5, 10 ,100,13);
       ArtNameArray[n].Font.Style := [fsBold, fsUnderline];
       ArtNameArray[n].Caption := UniMainModule.SQLTable1.fieldByName('Hersteller').AsString + ' ' + UniMainModule.SQLTable1.fieldByName('ArtName').AsString;

       //Label setzen und BZ aus Datenbank definieren
       ArtBZArray[n] := TUniLabel.Create(self);
       ArtBZArray[n].Parent := PanelArray[n];
       ArtBZArray[n].SetBounds(ImageArray[n].Width + 10, ArtNameArray[n].Top + 20 ,100,13);
       ArtBZArray[n].Caption := UniMainModule.SQLTable1.fieldByName('ArtBZ').AsString;

       //Label setzen und ArtNr aus Datenbank definieren
       ArtNrArray[n] := TUniLabel.Create(self);
       ArtNrArray[n].Parent := PanelArray[n];
       ArtNrArray[n].SetBounds(ImageArray[n].Width + 10, ArtBZArray[n].Top + 20, 50, 13);
       ArtNrArray[n].Caption := 'Art. Nr.: ' + UniMainModule.SQLTable1.fieldByName('ArtNr').AsString;

       //Label setzen und ArtPreis aus Datenbank definieren
       ArtPreisArray[n] := TUniLabel.Create(self);
       ArtPreisArray[n].Parent := PanelArray[n];
       ArtPreisArray[n].SetBounds(ImageArray[n].Width + 10, ArtNrArray[n].Top + 20, 50, 13);
       ArtPreisArray[n].Font.Style := [fsBold];
       ArtPreisArray[n].Font.Color := clTeal;
       ArtPreisArray[n].Font.Size := 9;
       preisStr := UniMainModule.SQLTable1.fieldByName('ArtPreis').AsString;
       ArtPreisArray[n].Caption := 'Ihr Preis: ' + preisStr + ' EUR';

       n := n+1;
      end;
Jeder Button ist mit onClick einer Prozedur zugeordnet und sieht wie folgt aus: (ShowMessage ist erst einmal nur zum Testen da, um zu sehen, wie ich die Buttons anspreche, der eigeneliche Code steht in {})

Code:
procedure Tfmstart1.ButtonWarenkorbClick(Sender: TObject);
begin
  if Sender is TUniButton then
   begin
     ShowMessage(TUniButton(Sender).Name);
     
     {
     UniMainModule.SQLTable1.Active := false;
     UniMainModule.SQLTable1.TableName := 'artikelliste';
     UniMainModule.SQLTable1.Active := true;
     UniMainModule.SQLTable1.Open;

     if UniMainModule.SQLTable1.Locate('ArtNr', TUniButton(Sender).Hint, []) then
      begin
        fmProdukt1.ShowModal();

        fmProdukt1.UniLabel1.Caption := UniMainModule.SQLTable1.fieldByName('Hersteller').AsString + ' ' +         UniMainModule.SQLTable1.fieldByName('ArtName').AsString;
        fmProdukt1.UniLabel2.Caption := UniMainModule.SQLTable1.fieldByName('ArtBZ').AsString;
        fmProdukt1.UniLabel3.Caption := UniMainModule.SQLTable1.fieldByName('ArtNr').AsString;
        fmProdukt1.UniLabel10.Caption := UniMainModule.SQLTable1.fieldByName('ArtPreis').AsString;
        //TUniButton(Sender).Caption:='Neuer Titel';
      end;}
   end;

end;

nun mein Problem:

wenn ich nach Programmstart ein ArrayButton anklicke, wird mir auch DIESER Button angezeigt mit allen Infos (Art Name und Co), aber wenn ich den nächsten button anklicke, folgt eine Fehlermeldung, siehe Anhang...

Wie kann ich die Buttons so nutzen, dass mir die Artikel angezeigt werden?

Ich arbeite mit Delphi XE8 + UniGui (da es eine Webanwendung werden soll) + MySQL Datenbank
Angehängte Grafiken
Dateityp: png Unbenannt.png (29,6 KB, 46x aufgerufen)

Geändert von akio87 (28. Mai 2015 um 08:39 Uhr)
  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 13: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-2025 by Thomas Breitkreuz