AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SpinEdit MinValue

Ein Thema von thomas2009 · begonnen am 11. Apr 2011 · letzter Beitrag vom 12. Apr 2011
Antwort Antwort
thomas2009
(Gast)

n/a Beiträge
 
#1

SpinEdit MinValue

  Alt 11. Apr 2011, 21:34
Hi
Ich verstehe nicht, warum ich 0 in SpinEdit eintippen kann,
obwohl SpinEdit.MinValue=1
Nur wenn SpinEdit1 den Focus verliert, dann wird der Value von 0 zu 1 verändert

Ich darf in SpinEdit kein 0 eintippen. Ich habe versucht inEvent Onchange :
Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
if (SpinEdit1.Value>0) and (SpinEdit1.Text<>'') then begin
SpinEdit2.Text:=IntToStr(Trunc(x / SpinEdit1.Value));

end else begin
exit; end;
end;
Trotzdem bekomme ich Fehler ! wenn ich 0 eintippe oder den Wert in SpinEdit1 lösche !

Geändert von thomas2009 (11. Apr 2011 um 21:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: SpinEdit MinValue

  Alt 11. Apr 2011, 22:02
Was zum Teufel programmierst du denn da? Hast du dir deinen Quellcode schon mal durchgelesen? Langsam wirds echt lustig mit dir...

Wenn ein User etwas eintippt kann nicht live geprüft werden, ob der eingegebene Wert korrekt ist. Das ist erst bei der OnExit-Methode möglich. Daher kann ein User auch eine 0 eingeben! Stell dir mal vor, du beschränkst das SpinEdit auf das Interval [3-20] und der User will 20 eingeben, dann würde schon bei der Eingabe der 2 sein Wert korrigiert werden.

Alternativ könntest du dir mal die Property EditorEnabled anschauen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#3

AW: SpinEdit MinValue

  Alt 11. Apr 2011, 23:15
OnExit-Methode funktioniert Ohne Fehler. Das ist eine Lösung, wenn es nicht möglich ist, Online (Onchange) die Werte zu berechnen
Ich möchte die Änderung Live sehen Onchange und nicht nur wenn ich ausserhalb wo anderes zu klicken !
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: SpinEdit MinValue

  Alt 11. Apr 2011, 23:31
Hast du überhaupt gelesen, was ich dir geschrieben habe? Den Eindruck macht es jedenfalls keineswegs... Du wirst doch wohl nicht glauben, dass dir die Mitglieder hier auf die Dauer noch viel helfen werden, wenn du schon das ignorierst was da steht. Ein wenig darüber nachdenken, was da steht und warum ein SpinEdit so funktioniert, wie es funktioniert, würde schon nicht schaden. Ich habe dir ja auch einen Lösungsweg beschrieben, der dich sichtlich gar nicht interessiert. Passt dir daran irgendwas nicht? Oder wo liegt denn bitte das Problem?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#5

AW: SpinEdit MinValue

  Alt 11. Apr 2011, 23:44
Alles was ich machen wollte ist folgendes
Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
if (SpinEdit1.Text='') or (SpinEdit1.Value<1) then begin
ShowMessage('Bitte einen Wert von 1 bis 10000 eingeben'); end else begin
bla bla
Ich möchte unbedingt Live die Werte berechnen und nicht OnExit
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: SpinEdit MinValue

  Alt 11. Apr 2011, 23:47
Das geht nicht, wenn du dem User erlaubst via Tastatur Werte einzugeben! Nochmals schreibe ich das nicht hin. Der Grund, warum es nicht geht steht weiter oben. Ich habe dir auch eine Property genannt mit der du dem User verbieten kannst Werte direkt einzugeben. Er muss daher die Pfeiltesten (Tastatur) nutzen oder eben die Pfeil-Button mit der Maus klicken.

Oder du überlegst dir einfach, ein komplett anderes Control zu nutzen!

Wenn es sich um dein Scale-Dialog handelt sollte auch folgende Lösung funktionieren: du kannst beim OnChange prüfen, ob der eingegebene Werte korrekt ist. Wenn ja, dann lass den Ok- bzw. Übernehmen-Button aktiviert (Enabled = True), ansonsten setze Enabled bei ungültigen Werten auf False. So kann der User nie eine Aktion ausführen, die die fehlerhafte Daten vorliegen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (11. Apr 2011 um 23:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: SpinEdit MinValue

  Alt 12. Apr 2011, 00:00
Haie sind bissig!

Probier mal folgendes
Delphi-Quellcode:
  if SpinEdit.Value < SpinEdit.MinValue then
    SpinEdit.Value := SpinEdit.MinValue
  else
  if SpinEdit.Value > SpinEdit.MaxValue then
    SpinEdit.Value := SpinEdit.MaxValue;
Edit: Doch im Grunde hat der Hai recht!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (12. Apr 2011 um 00:03 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 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