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

AW: SpinEdit MinValue

  Alt 12. Apr 2011, 00:13
Er muss daher die Pfeiltesten (Tastatur) nutzen oder eben die Pfeil-Button mit der Maus klicken.
Was wäre, wenn der User statt 1, den Wert 200 eingeben will?
Muss er 199 mals die Pfeil-Taste drücken

Oder du überlegst dir einfach, ein komplett anderes Control zu nutzen!
Es gibt in Delphi keine weitere Kontrole ausser Edit und SpinEdit

Wenn es sich um dein Scale-Dialog handelt sollte auch folgende Lösung funktionieren: du kannst beim OnChange prüfen ...
Ja aber das Ergebnis muss Live gesehen werden

Hier ist zum Beispiel von einem anderen Programm, wenn ich 0 eingebe

Probier mal folgendes
...
Wenn Du deinen Code in Onchange hin legst, dann bekommt Du Fehler
Angehängte Grafiken
Dateityp: jpg MinValue.jpg (9,0 KB, 36x aufgerufen)

Geändert von thomas2009 (12. Apr 2011 um 00:28 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SpinEdit MinValue

  Alt 12. Apr 2011, 06:49
Du wirst kaum verhindern können, dass der Anwender eine Null eintippt, weil Du nicht wissen kannst, ob daraus vielleicht ein "03" wird. Das Einzige, was Du tun kannst, ist, später in Deiner Verarbeitung auf die Null (nicht) zu reagieren, indem Du in diesem Fall intern mit einer "1" oder einem anderen sinnvollen Wert weiterrechnest. Spätestens im OnExit-Ereignis wird die GUI ja wider glatt gezogen.

Im OnChange-Ereignis könntest Du bei einem Wert, der nicht dem gewünschten Wertebereich entspricht, das Eingabefeld anders färben. Sobald Du aber anfängst, den eingegebenen String im OnChange-Ereignis zu verändern, wirst Du den Anwender in 9 von 10 Fällen verärgern, weil Du nicht vorhersehen kannst, was er eigentlich wollte und daher keine Korrektur in seinem Sinne vornehmen kannst.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: SpinEdit MinValue

  Alt 12. Apr 2011, 07:56
Man könnte auch ein UpDown nehmen, der Wertebereich von SmallInt sollte hier reichen.

Im assoziierten Edit-OnChange prüft man mit TryStrToInt ob die Eingabe im Werte-Bereich ist und aktualisiert UpDown.Position.

Die Live-Anzeige wird nur im UpDown.OnChanching ausgelöst.

Delphi-Quellcode:
procedure TForm1.UpDown1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  Label1.Caption := IntToStr(UpDown1.Position);
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
  i : Integer;
begin
  if TryStrToInt((Sender as TEdit).Text, i) then
  begin
    if (i >= UpDown1.Min) and (i <= UpDown1.Max) then
      UpDown1.Position := i;
  end;
end;
Wichtig ist in der Combo die Unabhängigkeit der Ereignisse, wobei die Abhängigkeit der unabhängigen Komponenten abhängig von der Anwendung, unschön ist, ganz unabhängig vom Nutzen der Methode.

€: Oder man leitet vom SpinEdit ab und publiziert ein OnTextChange-Ereignis bzw. bastelt sich da ein Live-Update von Value rein, dann hat man wieder alles in einer Hand.

PS: Ich glaube der TS muss die ganzen Antworten übersetzen, weshalb wohl ein Teil der Antworten einfach untergeht.

Geändert von Satty67 (12. Apr 2011 um 08:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#4

AW: SpinEdit MinValue

  Alt 12. Apr 2011, 08:28
Man kann die Maus- und Cursortasten auch festhalten ... dann schaltet dieses SpinEdit nach kurzer Zeit in einen "SpeedModus" um.

Und dann gibt es (ich glaub z.B. bei den JEDI) auch noch andere "SpinEdits", da ist soein kleines "Strich" zwischen den SpinButtons, welchen man für eine schnelles "Scrollen" nutzen kann.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#5

AW: SpinEdit MinValue

  Alt 12. Apr 2011, 08:39
Oder du überlegst dir einfach, ein komplett anderes Control zu nutzen!
Es gibt in Delphi keine weitere Kontrole ausser Edit und SpinEdit
Da kannst Du doch jetzt nicht das Gegenteil behaupten
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#6

AW: SpinEdit MinValue

  Alt 12. Apr 2011, 09:46
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.
Richtig. Aber das TJvSpinEdit arbeitet trotzdem so.


PS: Es gibt in Delphi nur TEdit und TSpinEdit als Controls? Warum ist dann aber meine Komponentenliste sooooooo lang?
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#7

AW: SpinEdit MinValue

  Alt 12. Apr 2011, 10:09
Man könnte auch den TSpinButton lose mit einem TEdit verküpfen,
also via Code und sich das gewünschte Verhalten so zusammenbasteln. (PS: in der Win3.1-Abteilung oder war's in den beigelegten Demos gibt es nochein anderes SpinControl)

PS: TSpinedit ist nur ein Beispiel, wie man sowas machen kann ... will man mehr/andere Funktionsweisen, dann kann man sich daraus leicht etwas passendes selber basteln.
Nicht umsonst liegt dieses Control in der Abteilung "Sambles".


TEdit + TUpDown wäre die aktuellere Variante, welche auch gewissermaßen dem Windowsstandard entspricht.
Oder man nimmt eben Komponenten von Drittanbietern. (JEDI, DevExpress und Co.)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Apr 2011 um 10:13 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 11:31 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