![]() |
SpinEdit; Wie Komma-Zahlen beibringen?
Hallöchen,
wie kann ich dem SE beibringen, das er auch z.B. 0.05, oder 0.1 oder 0.15 usw. akzeptiert? Geht das überhaupt? Grüsse, Daniel :hi: |
So, wie es ist gar nicht. Also neu schreiben, oder den Wert einfach immer hinterher durch 100, 1000... teilen, und in das Edit den 100-fachen Wert schreiben.
|
Hmm, das ist nicht so einfach.
Das ding müsste Strings können. Ich muss 0.05 bis 2.00 einstellen können. Das sind 40 Erhöhungsschritte. Jeder Schritt ist also 0.05. Immer wenn man auf den Pfeil nach oben oder unten klickt, dann soll eben 0.05 addiert, oder 0.05 subtrahiert werden. Das ist alles. Grüsse, Daniel :hi: |
Entweder machst du es so, wie gesagt mit nachträglicher Umrechnung. Oder du verwendest den Sourcecode, der sogar bei der Personal mitgeliefert wird, um ein paar kleine Änderungen vorzunehmen...
|
Zitat:
Das ding wird nicht von alleine Strings zusammen zählen können. Im mom. macht es: Value := Value + FIncrement; Einfache Strings würde noch gehen, man könnte auch noch bei IsValidChar den . aufnehmen, aber wie dann weiter machen? Grüsse, Daniel :hi: |
Hallo,
Warum änderst du die Propertys für Value, FIncrement inclusive der zugehörigen Methoden nicht auf den Wert Extended in einem vererbten Object von TSpinEdit? Das macht zwar etwas Arbeit, müßte dann aber problemlos gehen. Über die neuen Eigenschaft Increment vom Typ Extended kannst du dann auch problemlos Deine Schrittweite im Kommabereich einstellen. Gruß oki |
Hallo DanielB,
der kleinste Aufwand wäre dann wohl ein Edit und ein SpinnButton.
Code:
eed ist vom Typ TEnhEdit, geht aber auch mit einem Edit.
const
eedmax = 2; eedmin = 0; inkr = 0.05; var wert : real; procedure TFBrowser.SpinButton1UpClick(Sender: TObject); begin eed.Value := eed.Value + inkr; if eed.Value > eedmax then eed.Value := eedmax; wert := StrToFloat(Edit1.Text) + inkr; if wert > eedmax then wert := eedmax; Edit1.Text := FloatToStr(wert); end; procedure TFBrowser.SpinButton1DownClick(Sender: TObject); begin eed.Value := eed.Value - inkr; if eed.Value < eedmin then eed.Value := eedmin; wert := StrToFloat(Edit1.Text) - inkr; if wert < eedmin then wert := eedmin; Edit1.Text := FloatToStr(wert); end; Evtl. muß noch Edit ausgewertet werden, wenn man es auch durch Eingeben eines Wertes ändern darf. mfg eddy |
Hallo,
Zitat:
Mir geht es rein ums Optische, rechnen tue ich im Hintergrund eh was ganz anderes damit. Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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