AGB  ·  Datenschutz  ·  Impressum  







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

TUpDown Limitierung auf SmallInt

Ein Thema von anse · begonnen am 23. Aug 2009 · letzter Beitrag vom 23. Aug 2009
Antwort Antwort
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
197 Beiträge
 
Delphi 11 Alexandria
 
#1

TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 10:09
Ein TUpDown ist mit seinen Werten auf 16 Bit Zahlen, also -32767 bis +32767 limitiert. Aus diesem Grund kommt dessen Verwendung für viele Situationen nicht in Frage, wenn man höhere Werte braucht. Muß ich einen Descendent basteln der Integer Werte akzeptiert oder bin ich auf das TSpinEdit angewiesen?

Bei QualityCentral wurde das als Bug gemeldet aber auch schon wieder geschlossen, ohne dass es eine Lösung gäbe.
Ansgar Becker
https://www.heidisql.com
Wenn du loslässt, hast du zwei Hände frei.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 10:56
Warum nutzt du nicht die Events und zählst selbst?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 11:06
TUpDown nutzt halt noch die alten 16-Bit-Messages, aber es gibt von einigen Anbietern auch komponenten, welche die "neueren" Messages verwendet.


zu Muetze1 (also die Hauptfuntion):
Delphi-Quellcode:
procedure TForm1.UpDown1ChangingEx(Sender: TObject;
  var AllowChange: Boolean; NewValue: Smallint;
  Direction: TUpDownDirection);
begin
  UpDown1.Tag := UpDown1.Tag + NewValue;
  Edit1.Text := IntToStr(UpDown1.Tag);
  AllowChange := False;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  UpDown1.Tag := StrToInt(Edit1.Text);
end;

// Starteinstellungen:
// Edit1.Text = '0'
// ansonsten sind die beiden Komponenten nicht miteinander verbunden
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
197 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 12:05
Danke für den Tip. Sind ja nur wenige Code Zeilen von daher ein verschmerzbarer Hack.
Ansgar Becker
https://www.heidisql.com
Wenn du loslässt, hast du zwei Hände frei.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#5

Re: TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 12:26
Hallo,

vielleicht sollte man noch prüfen, ob wirklich Zahlen im Editfeld eingegeben wurden...
(die manuelle Eingabe ist ja trotz UpDown noch möglich)

Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var
  i: Integer;

begin
  If TryStrToInt(Edit1.Text, i) then
    UpDown1.Tag := i;
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 13:20
wobei ich es dann eher so erweitern würde
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  if (Trim(Edit1.Text) <> '') and (Trim(Edit1.Text) <> '-') then
    UpDown1.Tag := StrToInt(Edit1.Text);
end;
hatte oben absichtlich auf die Try- und Def-Version verzichtet, damit man bei Falscheingabe mit entsprechenden Fehlermeldungen "bombardiert" wird

PS: völlig unoptimierte Zugriffe, aber sowas ist hier auch nicht unbedingt nötig ... soooooo schnell tippt ja eh keiner

[add]
aber was eventuell nicht schaden könnte, wäre noch die Abfrage der Cursortasten für Hoch und Runter, im Edit, damit auch da die Taastatursteuerung wie "normal" funktioniert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
197 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 14:03
Ja, die Cursor Tasten würden sogar noch funktionieren, wenn man MeinUpDown.Associate = MeinEdit belässt. Leider gibt es dann aber den Effekt dass das MeinUpDown sein .Value auf MeinEdit überträgt sobald es zum ersten mal gemalt wird. Also lieber das Associate entfernen und die Cursortasten per OnKeyDown behandeln.
Ansgar Becker
https://www.heidisql.com
Wenn du loslässt, hast du zwei Hände frei.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 18:39
@Muetze1:
so schlau war ich auch schon
und jetzt rate mal, wofür das AllowChange := False; da drinnen ist

NewValue gibt ja den "neuen" Wert an, also einen Positiven für hoch und einen Negativen für runder, da ist das Direction vollkommen egal, da dieses immer ausgehend von der Ausgangs-0 geschieht
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: TUpDown Limitierung auf SmallInt

  Alt 23. Aug 2009, 18:43
Zitat von himitsu:
@Muetze1:
so schlau war ich auch schon :angel2:
und jetzt rate mal, wofür das AllowChange := False; da drinnen ist :zwinker:
Ich habe meinen Beitrag direkt nach dem Schreiben einem Moderator gemeldet zum Löschen, da ich dies auch erst nach dem Senden gesehen habe. Und dank deines Beitrages ist dies nun hinfällig, also editier ich ihn selbst...
  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 04:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz