Ein Slider, mal testen

Zur Vorstellung von Komponenten und Units für Lazarus
wennerer
Beiträge: 585
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Ein Slider, mal testen

Beitrag von wennerer »

Hallo Geronimo,
an dem Projekt arbeite ich schon länger nicht mehr. Ich habe mittlerweile meine Komponenten in ein Package eingefügt. Dort befindet sich auch ein Nachfolger dieses Sliders.
Wenn es dich interessiert findest du hier mehr Infos:

viewtopic.php?p=125633#p125633

Dennoch bin ich immer an Verbesserungen interessiert, eventuell kann ich deine Information ja in aktuelleren Projekten gut gebrauchen.
Von daher immer her damit.

Viele Grüße
Bernd

Geronimo
Beiträge: 7
Registriert: Sa 1. Feb 2025, 23:22
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.0)
CPU-Target: 64Bit

Re: Ein Slider, mal testen

Beitrag von Geronimo »

Hallo Bernd,
ich habe mir dein Package angeschaut. Wahrscheinlich haben sich alle Sachen, die ich jetzt schreibe schon lange erledigt.
However, könnte ja sein, dass jemand mit dem hier zuletzt geposteten Release 5 weiter arbeiten möchte.
Beim Testen des Release 5 habe ich festgestellt, dass sich das Programm nicht mehr schließen lässt (zumindest auf Windof 10), sobald man mit
dem Textlabel hantiert. Das tritt sowohl bei deinem Testprogramm als auch bei einem neuen Form mit dynamisch erzeugten Slidern auf.

Nach etwas Suchen gefunden:

Die Procedure TTextLabel.SetVisible muss nichts weiter tun, als das Label unsichtbar zu machen und das Neuzeichnen des Sliders veranlassen.

Code: Alles auswählen

procedure TTextLabel.SetVisible(Value: Boolean);
begin
  inherited setvisible(Value);
  TCustomControl(Owner).Invalidate;
end; 
Man vermeide im Painter alles, was ein Neuzeichnen bewirkt (Endlosschleife), z.B. den Aufruf von Invalidate in der procedure CalculateTextLabel.

Code: Alles auswählen

procedure CalculateTextLabel;
begin
  ...
  Invalidate;
  ...
End;  
Mit diesen Änderungen lässt sich das Form dann immer schließen.

Noch Kosmetik: Globale Variablen braucht man in einer Komponenten-Unit m.E. nicht. Die Kommunikation zwischen
den Komponenten kann man mit den Properties und Events gut realisieren.

Code: Alles auswählen

var
   Pos   : array [1..3] of integer; //Position der 3 Knöpfe
   wi    : integer;                   //Breite,Höhe der Komponente
   vert  : boolean;               //Orientation
...
was ich aber eigentlich wollte, ist ein Slider mit einer Beschriftung der Skala ähnlich einer Diagramm-Achse.
Kann deine Komponente aus der Package das?

Mit freundlichen Grüßen
Geronimo

wennerer
Beiträge: 585
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Ein Slider, mal testen

Beitrag von wennerer »

Hallo Geronimo,
du schriebst:
mit dem hier zuletzt geposteten Release 5
Das letzte gepostet Release ist die Nummer 8. Befindet sich im ersten Beitrag (ist vielleicht etwas unübersichtlich).
Ich hab aber nicht getestet bzw. kann ich mich nicht mehr erinnern ob der Fehler darin behoben ist.

Bei dem Slider durfte ich dank der Hilfe (und der Gedult) hier im Forum vieles über Komponentenentwicklung lernen.
In den nachfolgenden Projekten habe ich versucht manches gleich besser zu machen. Aber Fehler kann ich natürlich auch da nicht ausschließen.
Auf globale Variablen verzichte ich mittlerweile komplett. Bin da mal mächtig auf die Schnautze gefallen. :D
was ich aber eigentlich wollte, ist ein Slider mit einer Beschriftung der Skala ähnlich einer Diagramm-Achse
Naja, ich weiß natürlich nicht was du dir da genau vorstellst. Hier ein Screenshot von meinem MultiplexSlider:
MultiplexSlider.png
MultiplexSlider.png (65.34 KiB) 142 mal betrachtet
Für das Package ist eine deutsche und eine englische Hilfe-Pdf verfügbar.
Hier der Link zum Ansehen: https://github.com/wennerer/Multis/blob ... tis_de.pdf
bzw. zum Download: https://github.com/wennerer/Multis/tree/main/help

Wenn du möchtest kannst du ja einfach mal damit herum probieren.

Viele Grüße
Bernd

Antworten