Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Tupdown Button - warum nur aufwärts? (https://www.delphipraxis.net/119426-tupdown-button-warum-nur-aufwaerts.html)

Coder 26. Aug 2008 11:19


Tupdown Button - warum nur aufwärts?
 
Hallo, ich habe ein Edit.text -Feld und einen TupDOwn Button daneben platziert.
nun möchte ich, daß ich mit dem Button die Werte in dem Edit-Kasten erhöhen/ senken kann.

Wenn ich folgenden Code unter Tupdown-Button KLICK eingebe
kann ich nur zuvor eingegebene Werte erhöhen und bis auf diese wieder herunter erniedrigen, aber niemals tiefer gehen.
also zur Laufzeit: vorgegebene Eingabe im Edit.text:= '20';
dann kann ich mit dem Button 21,22,23,24,25,26, .. (down) 26,25,24,,23,22,21,20,20,20,20,20,20,20,20, (es geht nicht auf 19 oder 18 runter ...)

wenn ich 14 dann ebenfalls zur Laufzeit z.B: danach manuell 14 eintippe, kann ich niemals Werte wie 13 oder 12 durch klick auf diesen Button eingeben.

Ist das korrekt so? Muß ich damit leben? kann man das (hoffentlich ) ändern?

Delphi-Quellcode:
if button = btNext then
  begin
    Edit1.Text := IntToStr(StrToInt(Edit1.Text) + 1);
    UpDown1.Position := StrToInt(Edit1.Text);
  end;
  if button = btprev then
  begin
    Edit1.Text := IntToStr(StrToInt(Edit1.Text) - 1);
    UpDown1.Position := StrToInt(Edit1.Text);
  end;

soulies 26. Aug 2008 11:39

Re: Tupdown Button - warum nur aufwärts?
 
hoi,

setzt du vllt. vorher das minimum von Tupdown ?

setzt doch mal Tupdown.min := 0 und position :=0 am anfang des onclick ereignisses

(bei mir gehts sonst ohne probleme)

cya

gsh 26. Aug 2008 11:48

Re: Tupdown Button - warum nur aufwärts?
 
blöde frage aber warum verwendest du kein TSpinEdit?

Coder 26. Aug 2008 13:46

Re: Tupdown Button - warum nur aufwärts?
 
wie verwende ich das denn??
TSpinEdit?
da sind ja noch weniger Informationen zu zu finden.

Garfield 26. Aug 2008 13:58

Re: Tupdown Button - warum nur aufwärts?
 
Zitat:

Zitat von Coder
TSpinEdit?

Ist unter Beispiele zu finden und hat alles integriert, was Du da oben selbst machst.

rollstuhlfahrer 26. Aug 2008 16:43

Re: Tupdown Button - warum nur aufwärts?
 
HI,

du kannst aber auch den Up-Down Button an das Edit "kleben", indem du die Eigenschaft Associate verwendest. Dadurch wird es unnötig, die Werte über das Klick-Ereigniss auszuwerten.

Bernhard

Coder 26. Aug 2008 19:23

Re: Tupdown Button - warum nur aufwärts?
 
ich danke Dir .. das hilft!!!

dabei hatte ich gestern abend schon mit Assciate experimentiert und die Edits zugewiesen, aber irgendwas funktionierte nicht ganz.
Darum hatte ich dies wieder verworfen und von Hand versucht, das zu lösen.

Aber danke!

Namenloser 26. Aug 2008 19:26

Re: Tupdown Button - warum nur aufwärts?
 
TSpinEdit würde ich heute eh nicht mehr verwenden:

1) Sind die Buttons zu klein, und das ist hässlich.
2) Stammt das ganez aus einer Zeit, wo es noch keinen XP Style gab, weshalb normale Buttons verwendet wurden, und das ist auch hässlich. Unter XP und Vista ham UpDown-Buttons, aber einen anderen Style, nämlich blau.

mh18058 8. Sep 2012 00:49

AW: Tupdown Button - warum nur aufwärts?
 
Hallo,

offensichtlich ist in der Klasse TUpDown standardmäßig
UpDown1.Min:=0,
UpDown1.Max:=100 und
UpDown1.Position:=0
vorgegeben. :wink:

Mit z.B. UpDown1.Min:=-10 kann man dann auch 10 mal erfolgreich
nach unten klicken bis das untere Limit erreicht ist.
Mit UpDown1.Position:=10 hat man fast den gleichen Effekt, mit dem
Unterschied, daß das obere Limit dann schon nach 90 mal klicken
erreicht wird.
Damit lassen sich auch die zulässigen Benutzereingaben eingrenzen.
Die Eigenschaften Min,Max und Position sind übrigens vom Typ SmallInt.
Somit ist der zulässige Wertebereich jeweils -32768..32767 .
Aber wer klickt schon so oft da drauf? :roll:

Eigentlich sollte man die ganze Problematik elegant mit der Eigenschaft
UpDown1.Wrap:=true lösen können. Denn dann, so sagt es jedenfalls meine
Delphi-Hilfe, nimmt Position den Wert von Max an, wenn Min unterschritten
wird.
Blöderweise gibt es (zumindest in meinem Delphi 2006) aber den Effekt, daß
beim Überschreiten der Limits einmal in die falsche Richtung gezählt wird. :cry:
Offensichtlich ist da ein Bug im Delphi und ich lasse Wrap deshalb generell
auf false gesetzt und behelfe mich mit Min,Max und Position.

Gruß Martin


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