Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Kurze Frage zur ComboBox (https://www.delphipraxis.net/163010-kurze-frage-zur-combobox.html)

Vukloc 12. Sep 2011 20:37

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:
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  nachkomma:=StrToInt(ComboBox2.Text);
end;
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.

Nun die Frage wie kann ich dies einfach beheben?

Vielen Dank für die Hilfe im vorraus.

TiGü 12. Sep 2011 20:41

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.

Vukloc 12. Sep 2011 20:46

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.

Darlo 12. Sep 2011 20:46

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;

Daniela.S 12. Sep 2011 20:54

AW: Kurze Frage zur ComboBox
 
Oder aber StrToIntDef
Hier kannst du einen Default-Wert angeben wenn die Umwandlung fehl schlägt.

Vukloc 12. Sep 2011 21:00

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

Kalakmul 12. Sep 2011 21:01

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:
var
  nachkomma: Integer = 5;
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.

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").

Vukloc 12. Sep 2011 21:31

AW: Kurze Frage zur ComboBox
 
@ Kalakmul

Danke dir auch, bin jetzt nur leider etwas verwirrt.

Das hier habe ich noch verstanden:
Delphi-Quellcode:
var
  nachkomma: Integer = 5;
hier wird nachkomma auf 5 gesetzt (Datentyp Integer, also ganze Zahlen)
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)

scrat1979 12. Sep 2011 21:51

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

Vukloc 12. Sep 2011 22:01

AW: Kurze Frage zur ComboBox
 
Hab da mal ne Lösung hinbekommen ist aber nicht sonderlich schön sag ich mal

Delphi-Quellcode:
if StrToInt(ComboBox2.Text) >18 then ComboBox2.ItemIndex:=5;
  nachkomma:=ComboBox2.ItemIndex;
Aber ich glaube das passt zum restlichen Quellcode, der ist auch ich glaube sehr verworren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf