Thema: Delphi TUpDown: Floats

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

Re: TUpDown: Floats

  Alt 23. Nov 2009, 19:14
Man müßte nichtmal am Speichermanagement rumspielen
Delphi-Quellcode:
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var Value: Real;
begin
  Value := StrToFloatDef(Edit2.Text, 0);
  case Button of
    btNext: Value := Value + 0.1;
    btPrev: Value := Value - 0.1;
  end;
  Edit2.Text := FloatToStrF(Value, ffNumber, 1, 1);
end;
PS:
* krallt sich das bei .Associate eingetragene Edit
* Ereignis kann für beliebig viele UpDown-Buttons genutzt werden, da keine externen Variablen verwendet werden
* der Wertebereich kann begrennzt werden > .Min und .Max des jeweiligen UpDowns ( x / 10 )
Delphi-Quellcode:
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
  Assert(Sender is TUpDown);
  If TUpDown(Sender).Tag = 0 Then Begin
    TUpDown(Sender).Tag := Integer(TUpDown(Sender).Associate);
    TUpDown(Sender).Associate := nil;
    Assert(TObject(TUpDown(Sender).Tag) is TEdit);
  End;
  TEdit(TUpDown(Sender).Tag).Text := FloatToStrF(TUpDown(Sender).Position / 10, ffNumber, 1, 1);
end;
* wenn .Position bei Programmstart <> 0 ist, dann sollte dieses Ereignis in {Form}.Create einmal aufgerufen werden, damit der angezeigte Wert stimmt
z.B.:
UpDown1.OnClick(UpDown1, btNext);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat