Werte von zwei Listboxen addieren und ausgeben
Werte von zwei Listboxen addieren und ausgeben
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
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
-
- 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
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:
Wie genau sind die in den beiden Listboxen verteilt und wie willst du das kombinieren, am besten ein Beispiel: wie zum beipsiel:
(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...)
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:
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)stay hat geschrieben:Ich habe beides versucht und es will einfach nicht gelingen.
Vielleicht gibt es auch eine andere Lösung...
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"
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;
Re: Werte von zwei Listboxen addieren und ausgeben
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:
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?
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;
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?
-
- 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
Jop das geht, siehe in meinen post obenstay 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...

Ich glaube jastay hat geschrieben: Das klingt nun wahnsinnig kompliziert... ich hoffe du verstehst was ich meine...

Wie genau du das an den Drucker schickst kann ich dir nicht sagen.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?
Mein Zipp wäre aber. Ein Button zu machen der ein PrinDialog öffnet (benutzer wollen immer irgendwas einstellen können

Code: Alles auswählen
// müsste so gehen
PrintDialog1.Execute
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;
Re: Werte von zwei Listboxen addieren und ausgeben
Ich versuch das nachher mit dem "nebeneinander schreiben" nochmal... ich denke das bekomme ich hin, danke!!
Zum Drucken habe ich jetzt:
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:
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... -.-
Zum Drucken habe ich jetzt:
Code: Alles auswählen
begin
if Printdialog1.Execute then
begin
// Da weiß ich nicht was rein muss
end;
end;
Ich habe jetzt zum Beispiel versucht nur das Label mit meinem Gesamtpreis auszudrucken...
also:
Code: Alles auswählen
begin
Label1.caption;
end;
Re: Werte von zwei Listboxen addieren und ausgeben
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.
Dennoch danke für die Hilfe.
Re: Werte von zwei Listboxen addieren und ausgeben
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;
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;
-
- 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
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)
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;