SpinEdit mit Increment ändern

Rund um die LCL und andere Komponenten
Antworten
HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

SpinEdit mit Increment ändern

Beitrag von HobbyProgrammer »

Hallo,
ich hoffe Ihr seid alle gut ins neue Jahr gekommen.
Ich bräuchte mal eure Hilfe. In meinem Projekt habe ich mehrere SpinEdits. Eines davon soll nun aber nicht in konstantem Increment arbeiten, also z.B. 1, 2, 3 usw. , sondern entsprechend der binären Wertigkeit von Bitpositionen, also z.B. 2, 4, 8, 16. Im Source des SpinEdit gibt es die Protected Funktionen 'SaveInc' und 'SaveDec'. Kann ich diese irgendwie ohne viel Aufwand überschreiben? Ich würde gerne vermeiden dafür extra eine Componente/Package schreiben zu müssen.

Grüße
HobbyProgrammer
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

relocate
Beiträge: 61
Registriert: Di 24. Jan 2012, 11:47
OS, Lazarus, FPC: Win (L- FPC 2.4.4 + 2.6.4)
CPU-Target: 32Bit

Re: SpinEdit mit Increment ändern

Beitrag von relocate »

Man kann doch dem Spinedit ein Value zuweisen. Entsprechend auf das OnChange Ereignis reagieren.
Würde ich die Dinge so wie alle anderen machen, hätte ich so manche Probleme nicht.

Aber das wäre langweilig.

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

Re: SpinEdit mit Increment ändern

Beitrag von wp_xyz »

Ich würde kein TSpinEdit nehmen, sondern ein TUpDown mit einem TEdit kombinieren. Das UpDown muss man via Associate kurz mit dem Edit verbinden, damit es sich zum Edit hin anordnet. Aber dann muss man in diesem speziellen Fall die Verbindung wieder lösen, damit das Edit nicht vom UpDown beeinflusst werden kann. Schließlich würde ich einen Eventhandler für TUpDown.OnClick schreiben, in dem der Wert des UpDown (Eigenschaft Position) entsprechend umgerechnet wird:

Code: Alles auswählen

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
  Edit1.Text := IntToStr(1 shl UpDown1.Position);
end; 
Zuletzt geändert von wp_xyz am Di 12. Jan 2021, 18:47, insgesamt 2-mal geändert.

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: SpinEdit mit Increment ändern

Beitrag von HobbyProgrammer »

Das TUpDown sieht interessant aus. Ist mir in der Komponenten Palette auch schonmal aufgefallen, hab ich aber noch nie ausprobiert.
Damit werde ich es auf jeden Fall mal versuchen.
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: SpinEdit mit Increment ändern

Beitrag von HobbyProgrammer »

So, nun habe ich es mit einem TUpDown versucht, und es funktioniert perfekt. :)
Vielen Dank für den Tipp. :D
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Antworten