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 upDown-Button mit float-Werten (https://www.delphipraxis.net/73874-updown-button-mit-float-werten.html)

LokutusvB 25. Jul 2006 07:37


upDown-Button mit float-Werten
 
Hallo Leute,

ich bin noch ein Delphi-Anfänger und habe da mal eine Frage. Ich brauche für ein Edit-Feld ein UpDown-Button, da gibt es ja verschiedene unter Delphi. Jedoch habe ich keinen gefunden, mit dem man auch Komma-Zahlen eintragen kann und in 0.1-Schritten nach oben bzw. unten zählen kann. Am besten wäre auch noch, hinter die zahl eine Einheit eintragen zu können. Wie stelle ich das am besten an?

marabu 25. Jul 2006 09:03

Re: upDown-Button mit float-Werten
 
Herzlich willkommen in der Delphi-PRAXiS.

Wenn das Edit-Feld nicht direkt manipuliert werden muss, dann erreichst du dein Ziel über die Komponente TUpDown recht einfach:

Delphi-Quellcode:
procedure TDemoForm.UpDownChanging(Sender: TObject;
  var AllowChange: Boolean);
begin
  with Sender as TUpDown do
    Edit.Text := Format('%.1f mm', [Position / 10]);
end;
Soll der Benutzer das Edit-Feld auch direkt bearbeiten können, dann ist mehr Aufwand zu treiben.

Freundliche Grüße vom marabu

LokutusvB 25. Jul 2006 09:07

Re: upDown-Button mit float-Werten
 
Nein, der Nutzer soll das feld nicht direkt bearbeiten können. Er soll lediglich Werte zwischen 0.1 und 3.0 in 0.1 er Schritten auswählen können, also 0,1 W bis 3 W.


EDIT:

Nun soll auch noch zusätzlich ein aus einer TextDatei herausgelesener Wert automatisch eingetragen werden können. Geht das dann ganz einfach mit der Textfunktion des Edit-Feldes oder muß ich da noch mehr beachten?

marabu 25. Jul 2006 16:26

Re: upDown-Button mit float-Werten
 
Zitat:

Zitat von LokutusvB
Geht das dann ganz einfach mit der Textfunktion des Edit-Feldes oder muß ich da noch mehr beachten?

Nein - du musst die Eigenschaft Position des UpDown-Controls mit diesem Wert belegen:

Delphi-Quellcode:
function Before(const s, subStr: String): String;
var
  i: Integer;
begin
  i := Pos(subStr, S);
  if i = 0
    then Result := S
    else Result := Copy(S, 1, Pred(i));
end;

const
  DEFAULT_WATT = 1.7;

procedure Initialize(UpDown: TUpDown; const startValue: String);
var
  d: Double;
begin
  // startValue := '2,4 W'; // eingelesener Wert
  if not TryStrToFloat(Before(startValue, ' '), d) then
    d := DEFAULT_WATT;
  with UpDown do
    // Eine Dezimalstelle, deshalb mal 10
    Position := Round(10 * d);
end;
Getippt und nicht getestet.

marabu

LokutusvB 26. Jul 2006 07:00

Re: upDown-Button mit float-Werten
 
Ok, danke für die Hilfe! :thumb: . Werde damit mal experimentieren.

martinf16 28. Okt 2008 22:18

Re: upDown-Button mit float-Werten
 
Wie genau verbindet man die Initialize-Funktion mit dem TUpDown?!


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