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/)
-   -   Delphi ListBox ausgewähltes Item (https://www.delphipraxis.net/114580-listbox-ausgewaehltes-item.html)

PhilmacFLy 27. Mai 2008 20:01


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:
case ... of
machen, um nicht dauern
Delphi-Quellcode:
if, then else
schreiben zu müssen. Mit
Delphi-Quellcode:
Case Listbox1.ItemIndex of
hab ichs schon probiert, aber das funzt nicht. Hat jemand nen Tipp für mich?

Neutral General 27. Mai 2008 20:03

Re: ListBox ausgewähltes Item
 
Hi

versuchs mal so:

Delphi-Quellcode:
case ListBox1.ItemIndex of
  0: // erstes Item ausgewählt
  1: // zweites Item ausgewählt
  else // nichts von allem
end;
Gruß
Neutral General

DeddyH 27. Mai 2008 20:04

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);

PhilmacFLy 28. Mai 2008 12:42

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));

taaktaak 28. Mai 2008 13:18

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?

DeddyH 28. Mai 2008 13:20

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.

NickelM 28. Mai 2008 16:37

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));

PhilmacFLy 29. Mai 2008 12:57

Re: ListBox ausgewähltes Item
 
Zitat:

Zitat von NickelM
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));

Also das hab ich ausprobiert krieg aber nen fehler und zwar:
Im Projekt ....exe ist ein Exception der Klasse EStringListError mit der Meldung 'Listindex überschreitet das Maximum (-1) aufgetreten.

DeddyH 29. Mai 2008 13:00

Re: ListBox ausgewähltes Item
 
Dann mach mal ein
Delphi-Quellcode:
if ListBox1.ItemIndex > -1 then
davor.

PhilmacFLy 29. Mai 2008 13:05

Re: ListBox ausgewähltes Item
 
Das Problem is dann nur das ers dann wieder nicht rechnet und ich soweit wie vorher bin

DeddyH 29. Mai 2008 13:11

Re: ListBox ausgewähltes Item
 
Dann zeig endlich mal ein bisschen Code, wie lange sollen wir noch raten?

PhilmacFLy 29. Mai 2008 13:16

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;

DeddyH 29. Mai 2008 13:20

Re: ListBox ausgewähltes Item
 
Ist denn ein Eintrag in der Listbox ausgewählt? Und weshalb ist Wert als
Delphi-Quellcode:
Wert: Array[0..7] of Real;
deklariert, aber Wert[0] wird nie benutzt (oder hab ich was übersehen)?

Die Muhkuh 29. Mai 2008 13:22

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.

PhilmacFLy 29. Mai 2008 13:27

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

Die Muhkuh 29. Mai 2008 13:28

Re: ListBox ausgewähltes Item
 
Wo springt er raus?

PhilmacFLy 29. Mai 2008 13:36

Re: ListBox ausgewähltes Item
 
bei lbmonatsrate.Caption :=

DeddyH 29. Mai 2008 13:37

Re: ListBox ausgewähltes Item
 
Trenne doch erstmal die Logik von der Darstellung.

PhilmacFLy 29. Mai 2008 13:39

Re: ListBox ausgewähltes Item
 
Edit: ok mach ich

Die Muhkuh 29. Mai 2008 13:39

Re: ListBox ausgewähltes Item
 
Zitat:

Zitat von PhilmacFLy
bei lbmonatsrate.Caption :=

Da ist doch gar keine If-Abfrage? Oder meinst Du die Zugriffsverletzung?

Liegt wohl an der Ini-Datei. Ich sehe keine Instanziierung davon.

PhilmacFLy 29. Mai 2008 13:41

Re: ListBox ausgewähltes Item
 
ich meinte die zugriffsverletzung

DeddyH 29. Mai 2008 13:43

Re: ListBox ausgewähltes Item
 
Zitat:

Zitat von PhilmacFLy
:wiejetzt:

Die Labels sollen der Darstellung von Daten dienen und nicht der Speicherung. Statt also auf deren Caption zurückzugreifen und dann zu rechnen, definiere Dir Variablen des entsprechenden Typs und rechne damit. Ausgeben kannst Du diese ja dann wieder in Labels. Und was Manuel meint: da fehlt wohl ein
Delphi-Quellcode:
TIniFile.Create
[edit] Also etwa so:
Delphi-Quellcode:
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;
[/edit]

PhilmacFLy 29. Mai 2008 13:44

Re: ListBox ausgewähltes Item
 
Man ich bin so hol Das Tinifile.Create hat mir gefehlt sry :wall: :wall: :wall:

Die Muhkuh 29. Mai 2008 13:51

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.

PhilmacFLy 29. Mai 2008 13:54

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 11:35 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