Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Frame dynamisch erzeugen(Verständnisproblem) (https://www.delphipraxis.net/181236-frame-dynamisch-erzeugen-verstaendnisproblem.html)

ChristianG 28. Jul 2014 15:03

Frame dynamisch erzeugen(Verständnisproblem)
 
Hallo liebe Delphi-Gemeinde.
Ich erzeuge dynamisch einen Frame und dort bekomme ich Einzelpreis und die Anzahl. Nun möchte ich den Gesamtpreis von allen Frames, die erzeugt wurden, ausrechnen.
Delphi-Quellcode:
 ListIndex := TicketOverviewList.IndexOf( cdsbuchen.FieldByName('Name').Asstring );
        if ListIndex > -1 then begin
          myFrame2 := TFrame2(TicketOverviewList.Objects[ListIndex]);
        end
        else begin
          myFrame2           := TFrame2.Create(self);
          myFrame2.Name     :=Format( 'frzwei%s',[InttoStr(u)]);
          myFrame2.Parent   := TabItem7;
          myFrame2.SetBounds(10, y, 260, 40);
          myFrame2.Visible   := true;
          y                  := y + 65;
          myFrame2.Anzahl    := 0;

          TicketOverviewList.AddObject( cdsbuchen.FieldByName('Name').Asstring, myFrame2 );
        end;

          myFrame2.Anzahl := myFrame2.Anzahl + 1;
          myFrame2.Preis :=  cdsbuchen.FieldByName('MoneyPrice') .AsInteger;
          myFrame2.Namee :=  cdsbuchen.FieldByName('Name').Asstring;
          myFrame2.Gesamtpreis2:= cdsbuchen.FieldByName('MoneyPrice').AsInteger * myFrame2.Anzahl + (cdsbuchen.FieldByName('TransactionFee').AsCurrency/100);

         
       (*   if BGesamtpreisalt < BGesamtpreis then begin
            BGesamtpreis := myFrame2.Gesamtpreis2 ;
            BGesamtpreisalt := BGesamtpreis;
            end;
             if BGesamtpreisalt > BGesamtpreis then begin
            Bgesamtpreis := BGesamtpreis + myFrame2.Gesamtpreis2  ;
            BGesamtPreisalt := BGesamtpreis;
             end;                        *)//vollkommener quatsch
Das auskommentierte ist vollkommen falsch, aber ich weiß nicht, wie man den Gesamtpreis von allen Frames addieren kann. Ich hoffe der Quelltext erklärt besser als ich :D
Danke schon einmal im Vorraus für eure Hilfe

baumina 28. Jul 2014 15:23

AW: Frame dynamisch erzeugen(Verständnisproblem)
 
Delphi-Quellcode:
Bgesamtpreis := BGesamtpreis + myFrame2.Gesamtpreis2;
Also ich würde ganz laienhaft so sagen, aber ich hab keine Ahnung was du da genau machst.

ChristianG 28. Jul 2014 15:32

AW: Frame dynamisch erzeugen(Verständnisproblem)
 
Mein Problem war folgender: Ich hatte ein Frame, wo ich eine Zusammenfassung von Tickets und Preisen machen wollte. Wenn man 2 Erwachsenentickets und 3 Schülertickets auswähle, sollen 2 Frames herauskommen, die so aussehen: Anzahl:2 Name:Erwachsene Einzelpreis:5€ Gesamtpreis 10€.
Nun kam aber jedes Ticket einzeln in ein Frame, was bedeutet, dass ich 5 frames anstatt 2 hatte. Dies habe ich mit dem oben gezeigten Code gelöst. Nun möchte ich aber den Gesamtpreis der 5 Tickets ermitteln, aber ich weiß nicht wie ich das machen soll. Der auskommentierte Quelltext sollte den Gesamtpreis ermitteln, was leider nicht ging. Darum frage ich, Wie ich das in der Schleife lösen kann.
Falls ich etwas ungenau erklärt werde ich versuchen, es so gut wie möglich zu erklären

baumina 28. Jul 2014 15:36

AW: Frame dynamisch erzeugen(Verständnisproblem)
 
Im Allgemeinen so:

Delphi-Quellcode:
GesamtPreis := 0;
for i := 0 to xxx.Count-1 do
begin
  GesamtPreis := GesamtPreis + xxx[i].Preis;
end;
Deswegen bleib ich bei meiner o.g. Behauptung.

Dejan Vu 28. Jul 2014 15:41

AW: Frame dynamisch erzeugen(Verständnisproblem)
 
Deine Tickets sind in einem
Delphi-Quellcode:
Array of TTickets
, hoffentlich jedenfalls. Deine Frames sind nur Darstellungen der Tickets. Rechnen kannst Du mit dem Array bzw. noch besser: Mit einer Klasse, die die Tickets kapselt. Wenn Du nicht weißt, wovon ich rede: => Einführung ins Programmieren (OOP) Teil 1 durchkauen.

ChristianG 28. Jul 2014 15:50

AW: Frame dynamisch erzeugen(Verständnisproblem)
 
Danke für die schnellen Antworten. Du hast recht :oops:
Ich versuche es gleich mal


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 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