Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi max. wert von editboxen (https://www.delphipraxis.net/126311-max-wert-von-editboxen.html)

AlexanderBrade 22. Dez 2008 18:03


max. wert von editboxen
 
Wie kann ich in Delphi den max. bzw. minimalen Wert von editboxen(es sind ca. 50) angeben?
Beim Eintippen einer zu großen bzw. zu kleinen Zahl soll er eine Warnung ausgeben bzw. diejeweilige Box rot einfärben!
Wie bekomme ich das möglichst schnell hin?
Vielen Dank im voraus!!!

mkinzler 22. Dez 2008 18:04

Re: max. wert von editboxen
 
Reagiere uaf Eingabe und Teste die Grenzen ab.

AlexanderBrade 22. Dez 2008 18:05

Re: max. wert von editboxen
 
Und wie mache ich das?

DeddyH 22. Dez 2008 18:07

Re: max. wert von editboxen
 
Z.B. OnChange oder OnExit mit TryStrToInt oder StrToIntDef in eine Zahl wandeln und prüfen.

AlexanderBrade 22. Dez 2008 18:09

Re: max. wert von editboxen
 
Damit kann ich schon etwas anfangen, aber wie lege ich die editbox, bzw. deren "Nummer " variabel fest um nicht 50 selbige Programmabläufe schreiben zu müssen?

DeddyH 22. Dez 2008 18:10

Re: max. wert von editboxen
 
Du schreibst das einmalig für das erste Edit und stellst diese Methode im OI für alle Edits ein. Wichtig ist dabei aber, dass Du keine statischen Komponentennamen verwendest, sondern den Sender-Parameter auswertest.

Noedel 22. Dez 2008 18:13

Re: max. wert von editboxen
 
erzeug sie in der laufzeit ?!

Delphi-Quellcode:
var neuesEdit:Tedit;
begin
neuesEdit:=TEdit.create(Form1);
neuesEdit.bla_bla_bla:=Wert_von_bla_bla_bla;
...
end;

AlexanderBrade 22. Dez 2008 18:13

Re: max. wert von editboxen
 
Über Sender habe ich noch nicht so viel gehört:
Schreibe ich dann eine Prozedur, wie?
Delphi-Quellcode:
trystrtoint(Sender);
if Sender{usw}

DeddyH 22. Dez 2008 18:15

Re: max. wert von editboxen
 
Ein Beispiel hatte ich doch bereits hier gepostet (gut, da ging es um Checkboxen, aber das Prinzip ist ja dasselbe).

AlexanderBrade 22. Dez 2008 18:22

Re: max. wert von editboxen
 
Und wie nenn ich die Prozedur dann?

Ich hab mir mal was überlegt:

Delphi-Quellcode:
procedure TNotifyEvent(Sender: TObject);
begin
if Sender is Tedit then
  begin
    if TEdit(Sender)<0{???} or TEdit(Sender)>15 then
        begin
        Tedit(Sender).Color:=clred;
end;
end;
trystrtoint-->wohin?

DeddyH 22. Dez 2008 18:24

Re: max. wert von editboxen
 
Das ist doch vollkommen unerheblich, solange das eine Methode (genauer: TNotifyEvent) ist, d.h. es muss eine Methode Deines Formulars sein und einen Parameter vom Typ TObject erwarten.

[edit] Lies noch einmal, was ich hier geschrieben hatte. [/edit]

Noedel 22. Dez 2008 18:31

Re: max. wert von editboxen
 
kurz gesagt, der name ist egal, nur nicht vergessen, sonst musst du immer wieder nachgucken :D :D :D

[Edit] Naja nicht ganz egal! Es dürfen nur buchstaben des eng. alphabets benutzt werden und namen die delphi schon in beschlag hat ("and","tag" usw...) nicht
Das wars auch schon an Regelungen [/Edit]

Zitat:

Zitat von AlexanderBrade
Delphi-Quellcode:
procedure Pruefung (Sender: TObject); // HAB ICH MAL SO GENANNT, WEIL DAS JA SCHON SCHWER ZU SEIN SCHEINT, EINEN NAMEN ZU FINDEN :D
begin
if Sender is Tedit then
  begin
    if TEdit(Sender).Text<0{???} or TEdit(Sender)>15 then //HIER FEHLT NOCH DAS "TEXT" =>Tedit(Sender).text
        begin
        Tedit(Sender).Color:=clred;
end;
end;


DeddyH 22. Dez 2008 18:32

Re: max. wert von editboxen
 
Noedel, das ist keine Methode ;)

AlexanderBrade 22. Dez 2008 18:37

Re: max. wert von editboxen
 
das mit dem Tedit(Sender).text klappt nicht! Ich will ja keine Strings sondern Zahlen vergleichen!
-->Irgendwie muss ich die Strings noch umwandeln...

DeddyH 22. Dez 2008 18:38

Re: max. wert von editboxen
 
:wall: Nochmal: lesen

AlexanderBrade 22. Dez 2008 18:39

Re: max. wert von editboxen
 
Aber wo schreibe ich das trystrtoint denn hin?

DeddyH 22. Dez 2008 18:41

Re: max. wert von editboxen
 
Wirf doch mal einen Blick in die Hilfe zu TryStrToInt. Ich helfe ja gerne, aber Denken musst Du schon selbst, das kann ich Dir nicht abnehmen.

AlexanderBrade 22. Dez 2008 18:47

Re: max. wert von editboxen
 
Das nutzt mir doch garnichts, ich will doch nicht wissen, ob die Eingabe einer Zahl entsprciht, sondern will festlegen, dass man minimal 0 bzw. maximal 15 als Werte eingeben kann! Wie kann ich denn strtoint für "Sender"/dieses allgemeine Prozedur festlegen?
Delphi-Quellcode:
strtoint(TEdit(Sender).text)<0
funktioniert nicht!

DeddyH 22. Dez 2008 18:53

Re: max. wert von editboxen
 
Doch, genauso, nur eben nicht nur mit StrToInt, sondern mit TryStrToInt prüfen, ob es sich überhaupt um eine Zahl handelt.

AlexanderBrade 22. Dez 2008 18:55

Re: max. wert von editboxen
 
Dabei fehlen ihm aber immer Parameter!Auch die Hilfe bringt mich da nicht weiter!

DeddyH 22. Dez 2008 18:59

Re: max. wert von editboxen
 
Ich habe gerade kein Delphi zur Verfügung, aber das müsste doch so gehen:
Delphi-Quellcode:
var Zahl: integer;
...
if not (TryStrToInt(TEdit(Sender).Text,Zahl) and (Zahl in [0..15])) then
  ShowMessage('Fehlerhafte Eingabe');
[edit] Da fehlten Klammern. [/edit]

Fussball-Robby 22. Dez 2008 19:09

Re: max. wert von editboxen
 
Erstmal an den Threadersteller: Du musst dringend mehr Eigeninitiative zeigen! Es geht so einfach nicht, dass du nach einem kurzen Blick in die Hilfe aufgibst, prober doch mal was aus. Lies nach, welchen Parameter TryStrToInt noch erwartet!
Lösen würde ich es dann so:
Delphi-Quellcode:
  Zahl := StrToIntDef(TEdit(Sender).Text, -1);//in Zahl umandeln, wenn es keine Zahl ist, kommt -1 raus (Nicht in 0..15)
  if not (Zahl in [0..15]) then//wenn die Zahl nicht zwischen 0 und 15 ist..
    ShowMessage('Fehlerhafte Eingabe');//.. ist es eine fehlerhafte Eingabe


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:28 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