AGB  ·  Datenschutz  ·  Impressum  







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

UpDown nur nullbasiert?

Ein Thema von Kalakmul · begonnen am 26. Aug 2012 · letzter Beitrag vom 26. Aug 2012
Antwort Antwort
Benutzerbild von Kalakmul
Kalakmul

Registriert seit: 11. Apr 2008
27 Beiträge
 
Delphi 2010 Professional
 
#1

UpDown nur nullbasiert?

  Alt 26. Aug 2012, 12:03
Hallo liebe Delphianer,

für eine Graphik, die in x- und y-Richtung nur bestimmte Abmessungen zulässt, versuche ich gerade, diese Abmessungen über ein UpDown in einem Editfeld darzustellen.

Die Graphik muss mindestens die Länge oder Breite von 12 Einheiten besitzen, von dort ausgehend kann sie jeweils um 8 Einheiten erweitert werden.

Dazu habe ich ein UpDown mit einem Editfeld assoziiert, dessen Position und Min-Wert auf 12 gesetzt, sowie das Increment auf 8.

Wenn ich jetzt den angezeigten Wert 12 durch Klick auf das UpDown um 8 inkrementieren will, erhöht sich dieser nicht wie beabsichtigt auf 20 sondern auf 24 , also so, als ob er von 0 ausgehend über 8 und 16 auf diesen Wert inkrementiert worden wäre.

Wie ist das zu erklären und kann ich dem UpDown doch noch das gewünchte Verhalten beibringen?

PS:
Natürlich könnte ich im Editfeld einfach die Anzahl der "Erweiterungsschritte" anzeigen lassen - also bei meinetwegen 0 angefangen jeweils um 1 inkrementieren, aber warum hat man beim UpDown die verschiedenen Einstellungsmöglichkeiten, wenn sie dann doch einen Workaround erfordern.

Wenn ich versuche, das ganze im OnClick-Ereignis des UpDown zu erledigen ...
Delphi-Quellcode:
  case Button of
    btNext: ud1.Position := ud1.Position + ud1.Increment;
    btPrev: ud1.Position := ud1.Position - ud1.Increment;
  end;
... sehe ich im Debugger, dass bei ud1.Position immer schon der falsch incrementierte Wert 24 ankommt und somit gar auf 32 inkrementiert wird. Stellt man Increment auf 0, wird offenbar das OnClick-Ereignis garnicht ausgelöst, sodass man dort auch keinen eigenen Wert setzen kann.

Vielen Dank für jeden Hinweis!
Wer fragt, ist ein Narr für 5 Minuten, wer nicht fragt, ist ein Narr ein Leben lang.
  Mit Zitat antworten Zitat
Benutzerbild von Kalakmul
Kalakmul

Registriert seit: 11. Apr 2008
27 Beiträge
 
Delphi 2010 Professional
 
#2

AW: UpDown nur nullbasiert?

  Alt 26. Aug 2012, 12:23
Hallo,

ich habe das Problem jetzt so gelöst, dass ich die anzuzeigende Position in der Tag-Eigenschaft des UpDown speichere und dann das Weitere im OnClick-Ereignis folgendermaßen regele ...

Delphi-Quellcode:
procedure TForm1.ud1Click(Sender: TObject; Button: TUDBtnType);
var
  AUpDown: TUpDown;
  Wert: Integer;
begin
  AUpDown := Sender as TUpDown;
  Wert := AUpDown.Tag;
  case Button of
    btNext: Wert := Wert + AUpDown.Increment;
    btPrev: Wert := Wert - AUpDown.Increment;
  end;
  AUpDown.Tag := Wert;
  AUpDown.Position := Wert;
end;
Gibt es noch eine bessere/elegantere Lösung?
Wer fragt, ist ein Narr für 5 Minuten, wer nicht fragt, ist ein Narr ein Leben lang.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.062 Beiträge
 
Delphi XE2 Professional
 
#3

AW: UpDown nur nullbasiert?

  Alt 26. Aug 2012, 16:05
Ich sehe folgende Möglichkeiten
Erstens mit dem UpDown
Setze Minimum= 0 und Increment=8 und addiere 12, wenn du den Wert abfragst.
Zweitens
Benutze eine ScrollBar
Setze Minimum=12, SmallChange=8 und LargeChange=8 und nutze eine Prozedur wie zum Beispiel nachstehende um Position in ein Edit zu stellen.
Delphi-Quellcode:
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
   Edit1.Text:=intTostr(TScrollBar(sender).Position);
end;
Zitat:
PS:
Natürlich könnte ich im Editfeld einfach die Anzahl der "Erweiterungsschritte" anzeigen lassen - also bei meinetwegen 0 angefangen jeweils um 1 inkrementieren, aber warum hat man beim UpDown die verschiedenen Einstellungsmöglichkeiten, wenn sie dann doch einen Workaround erfordern.
Weil deine Vorstellung, wie ein UpDown funktionieren sollte nicht allgemeingültig sind.
Ein Anderer mag andere Vorstellungen haben.
Die Entwickler des TUpDown, können kaum voraussehen welche Ideen die Nutzer des TUpDown irgendwann einmal entwickeln könnten (womit ich nicht sagen will, dass deine Vorstellungen unlogisch sind).
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  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 15:39 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