Werte von zwei Listboxen addieren und ausgeben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
stay
Beiträge: 4
Registriert: Sa 21. Apr 2012, 11:16

Werte von zwei Listboxen addieren und ausgeben

Beitrag von stay »

Hallo,

ich bin noch sehr neu in der Lazaruswelt...

Nun habe ich für die Schule die Aufgabe ein Programm zu erstellen, bei dem man die Rechnung eines Restaurants am Ende ausdrucken kann.
Die Gerichte und Getränke kann ich mit Hilfe einer RadioGroup auswählen und die Preise schreibt es untereinander in zwei Listboxen. Nun meine Frage: Wie kann ich die Werte aus beiden Listboxen miteinander addieren und dann wieder in einer dritten Listbox oder in einem Label ausgeben. Ich habe beides versucht und es will einfach nicht gelingen.
Vielleicht gibt es auch eine andere Lösung...

Ich hoffe es kann mir jemand helfen.

Liebe Grüße
stay

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Werte von zwei Listboxen addieren und ausgeben

Beitrag von MAC »

Hallo, willkommen hier im Lazarusforum.

Schön das du ehrlich bist und sagt das es sich um eine Hausaufgabe handelt, ich werd dir zwar keine direkte Lösung geben aber versuchen es dir zu erklären...

Zuerst frag ich mal:
stay hat geschrieben:Ich habe beides versucht und es will einfach nicht gelingen.
Vielleicht gibt es auch eine andere Lösung...
Was genau das bedeuten soll, "Beides versucht" , welchen ansatzt hast du denn versucht, stell ihn doch mal rein, vlt muss man nur eine Zeile ändern damit es funktioniert... (Tipp: beim Posten des Eintrags den Code mit "Highlighter" auf "Freepascal/Lazarus umstellen)

Wie genau sind die in den beiden Listboxen verteilt und wie willst du das kombinieren, am besten ein Beispiel: wie zum beipsiel:

Code: Alles auswählen

Der erste Eintrag in Listbox1 ist "Cheeseburger" . Der erste Eintrag in Listbox2 ist "1 Euro" . In Listbox3 soll stehen "Cheeseburger: 1 Euro"
(es könnte auch sein das du Speisen in Listbox1 hast und Getränke in listbox2...)

Nehmen wir mal das beispiel von oben: Um das so zu lösen müsstest du einfach nur schreiben (der folgende code gilt nur für den ersten eintrag, hier wär ne schleife notwendig...)

Code: Alles auswählen

var
 neuertext:string;
begin
neuertext := Listbox1.Items.Strings[0] + ': ' + Listbox2.Items.Strings[0] {Der Text aus Listbox1    Dazu kommt ein Trennzeichen (hier Doppelpunkt und ein Leerzeichen (optional))    und dann der Text aus Listbox2}
Listbox3.Items.Add(neuertext); // hinzufügen
end;

Code: Alles auswählen

Signatur := nil;

stay
Beiträge: 4
Registriert: Sa 21. Apr 2012, 11:16

Re: Werte von zwei Listboxen addieren und ausgeben

Beitrag von stay »

Hey,
danke für deine Antwort.

Mittlerweile bin ich soweit, dass ich es zusammen rechnen kann. Sprich: Ich habe zwei RadioGroups. Die Eine ist für Getränke und die Andere für Gerichte. Für jede der RadioGroups habe ich mit dem case of-Befehl die einzelnen Zeilen mit dem Preis versehen, die es dann in die Listboxen schreibt:

Code: Alles auswählen

case rgrgericht.itemindex of
  gericht:=7.25;
  lbxgericht.Items.Add(floattostr(gericht));
end;
Es schreibt mir dann nur den Preis in die Listboxen.
Ist es denn möglich, dass ich einen Text und einen Preis in die gleiche Listbox bekomme? Also Cheesseburger 1 Euro ? Geht das? Denn das wäre für die Rechnung (zum Ausdrucken) am Ende sehr hilfreich. Daran hapert es nämlich auch noch und es wäre meine nächste Frage...

Momentan sieht es so aus, dass ich eine Listbox habe in der die Nummer des Tisches steht, an dem die Gäste sitzen, dann habe ich die Listbox mit den Preisen der Getränke und die mit den Preisen der Gerichte. Außerdem habe ich eine Listbox mit den zusammengerechneten Preisen von Gerichten und Getränken und ein Label, dass mir den Gesamtpreis ausgibt...

Das klingt nun wahnsinnig kompliziert... ich hoffe du verstehst was ich meine...

Auf jeden Fall ist es jetzt mein Ziel die Namen der Speisen und deren Preise zusammen mit der Tischnummer auszudrucken. Kann ich das über einen Button machen, oder brauche ich dazu eine PrintDiaolg?

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Werte von zwei Listboxen addieren und ausgeben

Beitrag von MAC »

stay hat geschrieben: Ist es denn möglich, dass ich einen Text und einen Preis in die gleiche Listbox bekomme? Also Cheesseburger 1 Euro ? Geht das? Denn das wäre für die Rechnung (zum Ausdrucken) am Ende sehr hilfreich. Daran hapert es nämlich auch noch und es wäre meine nächste Frage...
Jop das geht, siehe in meinen post oben :)
stay hat geschrieben: Das klingt nun wahnsinnig kompliziert... ich hoffe du verstehst was ich meine...
Ich glaube ja :)
stay hat geschrieben: Auf jeden Fall ist es jetzt mein Ziel die Namen der Speisen und deren Preise zusammen mit der Tischnummer auszudrucken. Kann ich das über einen Button machen, oder brauche ich dazu eine PrintDiaolg?
Wie genau du das an den Drucker schickst kann ich dir nicht sagen.
Mein Zipp wäre aber. Ein Button zu machen der ein PrinDialog öffnet (benutzer wollen immer irgendwas einstellen können :D )

Code: Alles auswählen

// müsste so gehen
PrintDialog1.Execute
Aber du kannst ja eine Memo erstellen (oder Listbox, ist eigentlich beides genau das gleiche (von den aufbau der Zeilen, bei dem einen heißt das "Memo1.Lines" bei den anderen "Listbox1.Items" )
Und da alles reinschreiben was du drucken willst.
Wie man 2 Einträge kombiniert stand ja schon im letzten post.

Code: Alles auswählen

Signatur := nil;

stay
Beiträge: 4
Registriert: Sa 21. Apr 2012, 11:16

Re: Werte von zwei Listboxen addieren und ausgeben

Beitrag von stay »

Ich versuch das nachher mit dem "nebeneinander schreiben" nochmal... ich denke das bekomme ich hin, danke!!

Zum Drucken habe ich jetzt:

Code: Alles auswählen

begin
if Printdialog1.Execute then
begin
// Da weiß ich nicht was rein muss
end;
end;
Wenn ich jetzt das ganze Formular drucken möchte... was schreibe ich dann?

Ich habe jetzt zum Beispiel versucht nur das Label mit meinem Gesamtpreis auszudrucken...
also:

Code: Alles auswählen

begin
Label1.caption;
end;
Aber wenn ich dann auf den Button drucken gehe, öffnet er mir das Fenster wo ich den Drucker auswählen kann, aber es passiert nichts... -.-

stay
Beiträge: 4
Registriert: Sa 21. Apr 2012, 11:16

Re: Werte von zwei Listboxen addieren und ausgeben

Beitrag von stay »

Okay... Schade, dass mir jetzt niemand helfen konnte. Ich hätte für das nächste Mal gern gewusst, wie ich es richtig machen kann...

Dennoch danke für die Hilfe.

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Werte von zwei Listboxen addieren und ausgeben

Beitrag von theo »

Weder ein Printdialog noch eine Listbox "können" drucken.
Du kannst bestenfalls einen Screenshot der Listbox drucken. Das geht aber nur für die Zeilen, die auf dem Bildschirm zu sehen sind.

Man sollte das getrennt lösen.
Wie man prinzipiell Text druckt, siehst du z.B. hier:
http://wiki.freepascal.org/Using_the_printer" onclick="window.open(this.href);return false;
S.a.
http://lazarus-ccr.sourceforge.net/docs ... inter.html" onclick="window.open(this.href);return false;

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Werte von zwei Listboxen addieren und ausgeben

Beitrag von MAC »

Dann würd ich an deiner stelle es folgender maßen versuchen:
1) was billiges , einfaches zu mit lazarus zu drucken.
2) Deine Listbox in ein Image zeichnen. Bzw nicht die Listbox sondern einfach die Einträge in ein sichtbares Image zeichnen.
(Image1.Canvas.TextOut(x,y,string); )
3) dann musst du eigentlich nur noch mit der Klasse Printer sagen das das Bild in Image1 gedruckt werden soll (Image1.Picture.Bitmap)

Code: Alles auswählen

Signatur := nil;

Antworten