Speziellen Wert in T(Float)SpinEditEx darstellen

Für Fragen rund um die Ide und zum Debugger
Antworten
piula
Beiträge: 12
Registriert: Sa 2. Jan 2016, 21:25

Speziellen Wert in T(Float)SpinEditEx darstellen

Beitrag von piula »

Hallo zusammen,

ich suche eine Möglichkeit, den Max- oder Min-Wert in einem TSpinEditEx oder TFloatSpinEditEx abweichend darzustellen.

Also z.B. für ein TSpinEdit mit dem Bereich 1–11 sollen die angezeigten Werte "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, inf" lauten. D.h. der Wert soll zwar weiterhin 11 sein, aber als "inf" angezeigt werden.

Gibt es da eine einfache Möglichkeit, das umzusetzen oder muss ich eine abgeleitete Klasse erstellen?

Besten Dank :)

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Speziellen Wert in T(Float)SpinEditEx darstellen

Beitrag von Winni »

piula hat geschrieben:
Mo 2. Mai 2022, 18:36


Gibt es da eine einfache Möglichkeit, das umzusetzen oder muss ich eine abgeleitete Klasse erstellen?

Besten Dank :)
Hi!

Da es infinity in Pascal nicht gibt, musst Du Dir wohl selbst etwas schnitzen.

Winni

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Speziellen Wert in T(Float)SpinEditEx darstellen

Beitrag von wp_xyz »

piula hat geschrieben:
Mo 2. Mai 2022, 18:36
Also z.B. für ein TSpinEdit mit dem Bereich 1–11 sollen die angezeigten Werte "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, inf" lauten. D.h. der Wert soll zwar weiterhin 11 sein, aber als "inf" angezeigt werden.

Gibt es da eine einfache Möglichkeit, das umzusetzen oder muss ich eine abgeleitete Klasse erstellen?
Nimm ein TEdit und ein TUpDown, kopple die beiden über die Associate-Eigenschaft des UpDown zusammen. TUpDown.Min=1 und TUpDown.Max=11 setzen. Und schließlich bekommt das TEdit den folgenden OnChange-Handler:

Code: Alles auswählen

procedure TForm1.Edit1Change(Sender: TObject);
begin
  if Edit1.Text = '11' then
    Edit1.Text := 'inf';
end;

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Speziellen Wert in T(Float)SpinEditEx darstellen

Beitrag von PascalDragon »

Winni hat geschrieben:
Mo 2. Mai 2022, 20:46
Da es infinity in Pascal nicht gibt, musst Du Dir wohl selbst etwas schnitzen.
Dann hast du wohl noch nie entsprechend mit Fließkommazahlen gearbeitet, da für diese sowohl +Inf als auch -Inf gültige Werte sind und auch entsprechend vom TFloatSpinEditEx akzeptiert werden. ;)

Ändert allerdings nichts daran, dass plula da tatsächlich selbst tätig werden muss, wenn nur ein bestimmter Bereich abgedeckt werden soll.
FPC Compiler Entwickler

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Speziellen Wert in T(Float)SpinEditEx darstellen

Beitrag von theo »

So geht erst mal:

Code: Alles auswählen

uses Math;
  FloatSpinEditEx1.Value:=Infinity;
  FloatSpinEditEx1.Value:=NegInfinity;
Zeigt "+Inf" an im FloatSpinEditEx.

Löst nat. das Problem des OP nicht direkt.

piula
Beiträge: 12
Registriert: Sa 2. Jan 2016, 21:25

Re: Speziellen Wert in T(Float)SpinEditEx darstellen

Beitrag von piula »

wp_xyz hat geschrieben:
Mo 2. Mai 2022, 23:00
Nimm ein TEdit und ein TUpDown, kopple die beiden über die Associate-Eigenschaft des UpDown zusammen. TUpDown.Min=1 und TUpDown.Max=11 setzen. Und schließlich bekommt das TEdit den folgenden OnChange-Handler:
Danke für den Tipp! Das funktioniert auch mit dem SpinEditEx, wenn man NullValue=12 und NullValueBehavior=nvbMaxValue setzt 👍

Antworten