Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TEdit und dergleichen
Silent Bob - Di 29.10.02 15:03
Titel: TEdit und dergleichen
Hallo
nun... ich hätte ein Frage zu den Edit-Feldern in Delphi. Die TEdit Komponente ist ja schön und recht, doch kann man (soviel ich weiss) nur Strings in sie schreiben bzw. von ihr lesen (über das Text-property). Gibt es in Delphi auch Controls wie z.B in LabWindows bei welchen man den Datentyp (z.B. integer, double, etc) angeben kann sowie den gültigen Bereich (ideal wären Felder die falsche Tasten gleich ignorieren ... als bei einem integer jede Art von Zeichen die keine Zahl ist)
Ich habe bisher die TEdit-Komponenten mangels mir bekannten Alternativen auch für Integer-Felder verwendet. Doch die dauernde Prüf-und Wandlerei dieser Werte in einen String ist mir unsympatisch.
Besten Dank für die Hilfe und einen schönen Tag
Delete - Di 29.10.02 15:11
Gibts nichts anderes. Mit dem Umwandeln mußt du dich wohl abfinden.
Und hier mit ersparst du dir das Prüfen beim Auslesen:
Quelltext
1: 2: 3: 4: 5:
| procedure Tf_PrimTabelle.txtOGrenzeKeyPress(Sender: TObject; var Key: Char); begin if not (Key in [#8,#46,#48 .. #57]) then Key := #0 end; |
Frage am Rande: Von welcher Programmiersprache kommst du? Visual Basic?
Delete - Di 29.10.02 15:21
Wenn es bei Integer-Feldern (ohne Komma!) bleibt, dann kann man mit Hilfe der API dafür sorgen, dass das TEdit nur Zahlen akzeptiert. Das hier gehört ins "OnCreate"-Ereignis der Form:
Quelltext
1: 2:
| SetWindowLong(Edit1.Handle,GWL_STYLE, GetWindowLong(Edit1.Handle,GWL_STYLE) or ES_NUMBER); |
Damit werden nur noch Zahlen angenommen. Alles andere wird schon durch das System abgeblockt, so dass du dich in deinem Programm nicht mehr darum kümmern musst. Da es aber nach wie vor ein String ist, musst du -wie Luckie schon sagte- die Umwandlung selbst vornehmen. Aber das dürfte in dem Fall das kleinere Übel sein.
Klabautermann - Di 29.10.02 15:32
Hallo,
ein bisschen Arbeit hat Borland dir schon abgenommen.
Für Integer Felder kannst du z.B. tSpinEdit aus der Komponentenpalette Beispiele nehmen. Dieses Akkzeptiert nur ganzzahlige Werte in einem Festzulegenden Bereich. Die liest du dann mit SpinEdit1.Value aus.
Unter Zusätzlich findest du dann noch tMaskEdit, dieses erlaubt dir über einen Formatierungsstring Festzulegen wie die eingabe aussehen muss. Unter umständen musst du dan immernoch mit Funktionen wie StrToFloat konvertieren, du kannst aber die Gefahr der Fehleingaben minimieren.
Beide Komponenten sind natürlich nachfolger des "normalen" Edit Feldes (tCustomEdit), du kannst das also auch selber implementieren - wenn du das lieber machst.
Gruß
Klabautermann
Silent Bob - Di 29.10.02 16:45
Besten Dank erstmal für die Antworten .... werde es wohl so wie Luckie vorgschlagen hat lösen .... da ich auch double-Eingabefelder benötige
@ Luckie ..... ich komme aus der C-Ecke und habe meist auf der Entwicklungumgebung LabWindows programmiert. Bin erst seit kurzem auf Delphi zu Hause.
Delete - Di 29.10.02 16:55
Aber selbst C kennt unterschiedliche Datentypen. In so fern wundert mich deine Frage etwas.
Silent Bob - Di 29.10.02 17:19
mhmm ... tut mir leid Luckie ich kann Dir jetzt nicht folgen .... natürlich kennt "selbst" C versch. Datentypen ... nur hatte die Entwicklungumgebung LabWindows Controls für jegliche Art von Datentypen inkl. Bereichs- und Eingabeüberwachung und dergleichen als netten Zusatz .... ich suchte nur diese Controls (anscheinend vergeblich) bei Delphi .... deshalb die Frage ...
Gruss und einen erholsamen Abend
Delete - Di 29.10.02 17:26
ach so.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!