Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - [VisualCLX] Eingabe von Werten in Editfeld festlegen


Aquatinta - Mo 31.01.05 01:28
Titel: Eingabe von Werten in Editfeld festlegen
Hallo Forum,

ich habe eine Form mit 12 LabelEditfeldern (LabelEdit_AB, LabelEdit_CD, ...). Diese sollen so eingestellt sein daß:

1. nur Zahlen, Komma (Punkt zu Komma) und die Backspacetaste möglich sind.
(Zu diesem Punkt habe ich eine Lösung aus dem Forum. Will das nur sagen, weil ich als Anfänger nicht weiß ob das, wie der Mediziner sagt, zu Wechselwirkungen mit anderen Medikamenten, sprich Proceduren, führen kann :) )

2. Jedes der Felder soll einen festgelegten Bereich, zB. 1,5 - 3,0 oder 1000 - 10000 erhalten. wenn sich die Eingabe außerhalb befindet, soll eine Meldung erscheinen "Eingabe nur zwischen 1,5 - 3,0 möglich", "Eingabe nur zwischen 1000 - 10000 möglich", usw. (Hier hab ich schon an UpDown gedacht)

3. Wenn eines der Felder vergessen wurde, soll die Meldung "Bitte geben Sie den Wert für Feld AB ein!", "Bitte geben Sie den Wert für Feld CD ein!", usw.

Ich wäre froh, wenn ihr mir helfen würdet.

Christian


IngoD7 - Mo 31.01.05 12:21
Titel: Re: Eingabe von Werten in Editfeld festlegen
Aquatinta hat folgendes geschrieben:
3. Wenn eines der Felder vergessen wurde, soll die Meldung "Bitte geben Sie den Wert für Feld AB ein!", "Bitte geben Sie den Wert für Feld CD ein!", usw.
TLabeledEdit.Text kennst du doch, oder?

Die Abfrage, ob diese Eigenschaft leer ( = vergessen worden) ist, oder nicht, kann das Problem doch nicht sein.

An der Stelle, wo du das prüfst, würde ich auch die Zahlenwerte in den LabeledEdits prüfen (dein Punkt 2.). Dann brauchst du nicht jeden Tastendruck einzelnd zu überprüfen, sondern nur einmal am Ende der Eingaben, wo du sowieso nachschaust, ob eine Eingabe vergessen wurde. Zur Überprüfung der Zahlenwerte benutze dann z.B. StrToFloat.

Fang mal an. Und wenn du spezielle Fragen hast, kannst dich ja wieder melden.


Aquatinta - Do 03.02.05 03:15

ja ingo,
da hast du recht gehabt. ich hab jetzt die sache bücherwälzend+brillenglasbeschlagen geschafft.
was mir jetzt noch fehlt, ist die begrenzung der stellenzahl im editfeld.
also es soll nur 3,5 und bei einem anderem 12 (ganzzahlig)eingegeben werden können.

äh...hier gehört das wohl nicht zufällig rein?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure THauptfenster.KeyPressFloat(Sender : TObject; var Key : Char);

begin
  if Key = '.' then
    Key := ','
  if NOT (Key in [#8'0'..'9'',']) then
    Key := #0;
end;


gruß
christian


IngoD7 - Do 03.02.05 12:43

Aquatinta hat folgendes geschrieben:
äh...hier gehört das wohl nicht zufällig rein?
Doch, könnte da rein.

Du musst da dann prüfen, ob dein Edit schon die maximale Anzahl von Stellen enthält. Wenn ja, dann key auf 0.
Backspace ( #8 ) musst du natürlich immer durchlassen.

Stichworte:
- pos, um zu gucken, ob ein Komma im Edit steht
- copy, um Teile des Edits zu bekommen
- length, um z.B. zu gucken, ob der Teil hinter dem Komma, schon 2 Ziffern lang ist.

Siehe Online-Hilfe dazu.


jasocul - Do 03.02.05 13:08

Die wichtigsten Funktionen und Prozeduren zur Stringverarbeitung mit Erläuterungen findest du hier [http://www.jasocul.de/html/stringverarbeitung.html]
Eine Demo mit Sourcen findest du da auch.


Aquatinta - Fr 04.02.05 02:45

Hallo,
dank eurer denkanstöße hab ich es vollbracht.
alle punkte abgearbeitet.
danke
und auf wiederfragen :lol:
christian


IngoD7 - Fr 04.02.05 10:49

Aquatinta hat folgendes geschrieben:
dank eurer denkanstöße hab ich es vollbracht.
alle punkte abgearbeitet.
danke
und auf wiederfragen :lol:


Ah, das tut gut. :D Endlich mal wieder jemand, der sich seine Ergebnisse selbst erarbeitet. :beer: