![]() |
Delphi-Version: 7
Kurze Frage zur ComboBox
Hallo erstmal an alle, bin neu hier und habe auch direkt mal ne Frage.
Problem: Habe mir ein kleines Programm geschrieben um anhand von eingegebenen/ausgewählten Werten was auszurechnen. Nun wollte ich noch die Nachkommastellen noch änderbar machen (in der Regel reichen 5 Nachkommastellen manchmal sind es aber zu viele oder zu wenig). Aus diesem Grunde wollte ich mir eine ComboBox erstellen und hier einfach die Anzahl der möglichen Nachkommastellen eingeben. Dieser Wert soll nun einfach übertragen werden und dort im FloatToStrF benutz werden um die Stellen zu begrenzen. Das klappt auch alles soweit. Nun habe ich aber folgendes Problem, wollte als Voreinstellung 5 Nachkommastellen haben, dafür habe ich einfach den Text der ComboBox auf 5 gestellt und lese die ComboBox folgendermaßen aus:
Delphi-Quellcode:
Nun ist leider das Problem das wenn in der ComboBox nichts umstellt das die Nachkommastellen auf 0 gesetzt werden anstelle der 5 die ich gerne hätte.
procedure TForm1.ComboBox2Change(Sender: TObject);
begin nachkomma:=StrToInt(ComboBox2.Text); end; Nun die Frage wie kann ich dies einfach beheben? Vielen Dank für die Hilfe im vorraus. |
AW: Kurze Frage zur ComboBox
Prüfe doch lieber die Nachkommastelle in der Methode, die die Berechnung auslöst.
Des Weiteren ist ein TryStrToInt in der Regel eher zu empfehlen. |
AW: Kurze Frage zur ComboBox
Na da sag ich doch mal ganz lieb Danke.
Hab die Prüfung verschoben, nun klappt das ganz super. TryStrToInt muss ich mir mal später ansehen, bin erst eingestiegen in Delphi und hab noch nicht so den durchblick hoffe aber das sich das ändert. |
AW: Kurze Frage zur ComboBox
Setze nicht den Text auf 5 sondern die Eigenhaft Itemindex der ComboBox.
Code:
procedure TForm1.ComboBox2Change(Sender: TObject);
begin nachkomma:=ComboBox2.Itemindex; //Bzw. +1 jenachdem mit welchen Werten du anfängst end; |
AW: Kurze Frage zur ComboBox
Oder aber StrToIntDef
Hier kannst du einen Default-Wert angeben wenn die Umwandlung fehl schlägt. |
AW: Kurze Frage zur ComboBox
Owei hier werde ich ja total von Informationen zugehauen.
Find ich super nett von euch allen, jetzt muß ich mir nur mal die Zeit nehmen um das alles durchzulesen. Bin ja erstmal froh das mein Progrämmchen soweit läuft |
AW: Kurze Frage zur ComboBox
Hallo Vukloc,
falls "nachkomma" eine globale Variable ist (also nicht in einer Procedure oder Function deklariert), kann man diese mit folgendem Code gleich im Variablendeklarationsteil des Formulars initialisieren:
Code:
Auch eine Initialisierung der globalen Variable im OnCreate-Ereignis des Formulars ist möglich.
var
nachkomma: Integer = 5; Wird dann der Wert im OnChange-Ereignis gegenüber der Initialisierung geändert, wird er wie beabsichtigt in die Variable übertragen. Alternativ wäre auch die Verwendung eines einfachen Edit-Feldes, das mit einem TUpDown kombiniert wird, möglich (in den älteren Delphiversionen - z. B. Delphi 4; Delphi 7 habe ich nicht zur Verfügung - entspricht dem die Komponente TSpinButton im Reiter "Beispiele"). |
AW: Kurze Frage zur ComboBox
@ Kalakmul
Danke dir auch, bin jetzt nur leider etwas verwirrt. Das hier habe ich noch verstanden:
Delphi-Quellcode:
hier wird nachkomma auf 5 gesetzt (Datentyp Integer, also ganze Zahlen)
var
nachkomma: Integer = 5; und wird dann wenn später in der ComboBox eine auswahl getätigt wird geändert. Hier bin ich dann leider ausgestiegen: (werde mir das aber noch zu gemüte fügen) Auch eine Initialisierung der globalen Variable im OnCreate-Ereignis des Formulars ist möglich. Wird dann der Wert im OnChange-Ereignis gegenüber der Initialisierung geändert, wird er wie beabsichtigt in die Variable übertragen. Habe aber noch eine kurze Frage zur ComboBox (wird anderst wohl ziemlich identisch sein): Und zwar wenn man den Text-Inhalt der ComboBox löscht, und dieser nun übergeben werden soll entshet ja ein Fehler (ist ja logich versuch mal mit "nichts" zu rechnen), was kann man den hiergegen tun, also wenn der Text der Box gelöcht wird das dort automatisch wieder ein Text reingeschrieben wird? (Hoffe das war verständlich) |
AW: Kurze Frage zur ComboBox
Einfach im OnChange-Event prüfen, ob eine korrekte Eingabe in der Combobox vorhanden ist (z.B. auf Text <> "" und valide Zahl)...
|
AW: Kurze Frage zur ComboBox
Hab da mal ne Lösung hinbekommen ist aber nicht sonderlich schön sag ich mal
Delphi-Quellcode:
Aber ich glaube das passt zum restlichen Quellcode, der ist auch ich glaube sehr verworren.
if StrToInt(ComboBox2.Text) >18 then ComboBox2.ItemIndex:=5;
nachkomma:=ComboBox2.ItemIndex; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 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