![]() |
ListBox ausgewähltes Item
Also ich hab folgendes Problem in meiner Listbox stehen Zahlen (24, 36, 48, 54).
So jetzt muss ich eine Leasingrate berechnen, und je nach Laufzeit ist der Kalkulationsfaktor anders. So jetzt wollt ich das mit
Delphi-Quellcode:
machen, um nicht dauern
case ... of
Delphi-Quellcode:
schreiben zu müssen. Mit
if, then else
Delphi-Quellcode:
hab ichs schon probiert, aber das funzt nicht. Hat jemand nen Tipp für mich?
Case Listbox1.ItemIndex of
|
Re: ListBox ausgewähltes Item
Hi
versuchs mal so:
Delphi-Quellcode:
Gruß
case ListBox1.ItemIndex of
0: // erstes Item ausgewählt 1: // zweites Item ausgewählt else // nichts von allem end; Neutral General |
Re: ListBox ausgewähltes Item
Obwohl ich aufgrund der unglücklichen Fragestellung nur raten kann:
Delphi-Quellcode:
if ListBox.ItemIndex > -1 then
Faktor := StrToIntDef(ListBox.Items[ListBox.ItemIndex], 1); |
Re: ListBox ausgewähltes Item
@ Neutral General: das hab ich schon ausprobiert
@ DeddyH: Der Faktor steht ja nicht in der ListBox sondern in einer ini. In der ListBox stehtn nur die Monate weil das rechen scahut dan so aus
Delphi-Quellcode:
lbmonatsrate.Caption := FloattoStr((StrtoFloat(lbmehrwertsteuer3.Caption))*((StrtoFloat(ini.ReadString('Kalkulationsfaktor bis 5000', '24 Monate', '')))/100));
|
Re: ListBox ausgewähltes Item
Moin, Moin,
also möchtest du je nach ausgewähltem Eintrag in der Listbox den passenden Faktor aus der INI-Datei lesen? |
Re: ListBox ausgewähltes Item
Ach, das soll die Laufzeit sein? Dann versteh ich aber nicht, wieso die case-Abfrage nicht funktionieren soll, bzw. was nicht funktioniert. Poste doch mal ein bisschen Code.
|
Re: ListBox ausgewähltes Item
Hmmm.. also wenn du wie gesagt von taaktaak dass machen willst geht das relativ einfach nämlich so :
Delphi-Quellcode:
lbmonatsrate.Caption := FloattoStr((StrtoFloat(lbmehrwertsteuer3.Caption))*((StrtoFloat(ini.ReadString('Kalkulationsfaktor bis 5000',
ListBox.Items[Listbox.ItemIndex] + ' Monate', '')))/100)); |
Re: ListBox ausgewähltes Item
Zitat:
Im Projekt ....exe ist ein Exception der Klasse EStringListError mit der Meldung 'Listindex überschreitet das Maximum (-1) aufgetreten. |
Re: ListBox ausgewähltes Item
Dann mach mal ein
Delphi-Quellcode:
davor.
if ListBox1.ItemIndex > -1 then
|
Re: ListBox ausgewähltes Item
Das Problem is dann nur das ers dann wieder nicht rechnet und ich soweit wie vorher bin
|
Re: ListBox ausgewähltes Item
Dann zeig endlich mal ein bisschen Code, wie lange sollen wir noch raten?
|
Re: ListBox ausgewähltes Item
Also das is der Code si noch nicht fertig und bitte nichts daran kritisiern (bezeichnung etc.)
Delphi-Quellcode:
procedure TForm3.bttberechnen1Click(Sender: TObject);
var Wert: Array[0..7] of Real; ini: TIniFile; begin if lbpreis1.Caption = '' then Application.MessageBox('Kein Preis vorhanden', 'Fehler', MB_OK or MB_Iconerror) else begin Wert[1] := StrtoFloat(lbgesamtpreis1.Caption); if lbpreis2.Caption = '' then Wert[2] := 0 else Wert[2] := StrtoFloat(lbgesamtpreis2.Caption); if lbpreis3.Caption = '' then Wert[3] := 0 else Wert[3] := StrtoFloat(lbgesamtpreis3.Caption); if lbpreis4.Caption = '' then Wert[4] := 0 else Wert[4] := StrtoFloat(lbgesamtpreis4.Caption); if lbpreis5.Caption = '' then Wert[5] := 0 else Wert[5] := StrtoFloat(lbgesamtpreis5.Caption); if lbpreis6.Caption = '' then Wert[6]:= 0 else Wert[6] := StrtoFloat(lbgesamtpreis6.Caption); Wert[7] := Wert[1]+Wert[2]+Wert[3]+Wert[4]+Wert[5]+Wert[6]; lbgesamt1.Caption := FloattoStr(Wert[7]); if edversand.Text = '' then Application.MessageBox('Kein Preis für Versand vorhanden', 'Fehler', MB_OK or MB_Iconerror) else begin if edverpackung.Text = '' then Application.MessageBox('Kein Preis für Versand vorhanden', 'Fehler', MB_OK or MB_Iconerror) else begin lbzwischensumme1.Caption := FloattoStr((StrtoFloat(lbgesamt1.Caption))+(StrtoFloat(edverpackung.Text))+(StrtoFloat(edversand.Text))); end; end; lbmehrwertsteuer3.Caption := FloattoStr(((StrtoFloat(lbzwischensumme1.Caption))*(19/100))); lbrechnungsbetrag2.Caption := FloattoStr(((StrtoFloat(lbzwischensumme1.Caption))+(StrtoFloat(lbmehrwertsteuer3.Caption)))); if StrtoFloat(lbmehrwertsteuer3.Caption) < 5000 then begin if ListBox1.ItemIndex > -1 then lbmonatsrate.Caption := FloattoStr((StrtoFloat(lbmehrwertsteuer3.Caption))*((StrtoFloat(ini.ReadString('Kalkulationsfaktor bis 5000', ListBox1.Items[Listbox1.ItemIndex] + ' Monate', '')))/100)); end; end; end; |
Re: ListBox ausgewähltes Item
Ist denn ein Eintrag in der Listbox ausgewählt? Und weshalb ist Wert als
Delphi-Quellcode:
deklariert, aber Wert[0] wird nie benutzt (oder hab ich was übersehen)?
Wert: Array[0..7] of Real;
|
Re: ListBox ausgewähltes Item
Puh, sehr gewöhnungsbedürftige Codeformatierung.
Die ganzen If-Befehle kannst Du alle abkürzen:
Delphi-Quellcode:
// Aus dem:
if lbpreis2.Caption = '' then Wert[2] := 0 else Wert[2] := StrtoFloat(lbgesamtpreis2.Caption); // Mach das: Wert[2] := StrToFloatDef(lbgesamtpreis2.caption, 0); Hast Du Dir mal anzeigen lassen, was er bei dem ReadString ausliest? Warum nimmst Du nicht gleich ReadFloat? Detlef: Nein, ich seh es auch nicht. |
Re: ListBox ausgewähltes Item
@ DeddyH: Der war früher mal drinn is jetzt aber nicht merh in Benutzung
@ Die Muhkuh: Er kommt ja nicht mal zum einlesen hab extra einen halte punkt gesetzt Edit: @ DeddyH: Sorry ne war nichts ausgewält hab nicht gewusst das man auch noch reinklicken muss. Aber jetzt kireg ich ne Zugriffsverletzung |
Re: ListBox ausgewähltes Item
Wo springt er raus?
|
Re: ListBox ausgewähltes Item
bei lbmonatsrate.Caption :=
|
Re: ListBox ausgewähltes Item
Trenne doch erstmal die Logik von der Darstellung.
|
Re: ListBox ausgewähltes Item
Edit: ok mach ich
|
Re: ListBox ausgewähltes Item
Zitat:
Liegt wohl an der Ini-Datei. Ich sehe keine Instanziierung davon. |
Re: ListBox ausgewähltes Item
ich meinte die zugriffsverletzung
|
Re: ListBox ausgewähltes Item
Zitat:
Delphi-Quellcode:
[edit] Also etwa so:
TIniFile.Create
Delphi-Quellcode:
[/edit]
if ListBox1.ItemIndex > -1 then
begin ini := TIniFile.Create(Pfad_zur_Ini); try lbmonatsrate.Caption := FloattoStr((StrtoFloat(lbmehrwertsteuer3.Caption))*((StrtoFloat(ini.ReadString('Kalkulationsfaktor bis 5000', ListBox1.Items[Listbox1.ItemIndex] + ' Monate', '')))/100)); finally ini.Free; end; end; |
Re: ListBox ausgewähltes Item
Man ich bin so hol Das Tinifile.Create hat mir gefehlt sry :wall: :wall: :wall:
|
Re: ListBox ausgewähltes Item
Deswegen gewöhne Dir eine bessere Codedarstellung an und trenne die Logik von der Darstellung, dann hättest Du das bestimmt viel früher gesehen.
|
Re: ListBox ausgewähltes Item
In meiner Codedarstellung kenn ich mich aus weil ich die so mag, aber ich geb zu an der stelle is er ziemleich un geordnet.
Danke an alle die mir geholfen haben jetzt gehts. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 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