![]() |
AW: Objekt an Trackbar Position ausrichten
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe, damit ich das Projekt wiedererkennen kann, ihm den Namen TestTrackbar gegeben also nicht wundern ;)
|
AW: Objekt an Trackbar Position ausrichten
Hmm, ich weiß nicht recht, was Du da erreichen willst.
Auf jeden Fall solltest Du Dein Ziel etwas einfacher angehen. Je einfacher, desto besser nachvollziehbar und wartbar. Ich denke, Dein Problem liegt in dem
Delphi-Quellcode:
.
max div 60)div max
Wenn max > 60 ist dann hat das natürlich deutliche Auswirkungen. Aber für eine bessere Lösung müsste man wissen, was Du erreichen willst. Sind die Timer aktuell nur für Tests da? Willst Du die Trackbar später mit der Maus einstellen oder brauchst Du eher eine ProgressBar, die einen Fortschritt anzeigt? |
AW: Objekt an Trackbar Position ausrichten
Ich möchte das sie als Fortschrittsanzeige dient aber auch später verschoben werden kann
|
AW: Objekt an Trackbar Position ausrichten
Ok, dann mach einfach etwas Ordnung.
Folgende Eigenschaften brauchst Du: MinValue, MaxValue für Minimal- und Maximalwert. Position für den aktuellen Wert. Width für die Breite der Trackbar. XPosition für den Mittelwert des Schiebers in der Horizontalen. XPosition errechnest Du prozentual zu Width wie Position zu (MaxValue - MinValue) und zwar immer dann wenn eine der anderen Eigenschaften geändert wird (also in einer Prozedur CalcXPosition, die Du von unterschiedlichen Stellen aus aufrufen kannst). Wenn Du das Ganze funktionsfähig hast, dann kannst Du Dich auch mit der Komponentenentwicklung befassen. Dann wird so etwas nicht im Formularcode umgesetzt sondern in einer Komponente gekapselt (wie eben der TTrackBar), die dann überall einsetzbar ist. |
AW: Objekt an Trackbar Position ausrichten
Irgendwie stehe ich gerade auf dem Schlauch... Ich werde einmal eine Nacht drüber schlafen, mal sehen ob ich's morgen hin bekomme ;)
|
AW: Objekt an Trackbar Position ausrichten
Zitat:
|
AW: Objekt an Trackbar Position ausrichten
... und dazu mal für alle Eigenschaften "Setter" vorsehen in folgender Form:
Delphi-Quellcode:
Natürlich musst Du die beiden Methoden dann auch noch deklarieren.
procedure Form1.SetMaxValue(aValue: Integer);
begin if MaxValue <> aValue then begin CalcXPosition; PaintTrackbar; end; end; Das ist etwas mehr Schreibarbeit aber so ist das gut nachvollziehbar und Du weist auch später noch, was Du da programmiert hast. Die Werte änderst Du dann durch SetMaxValue(100), SetPosition(50) usw. Im Grunde hast Du dann schon fast die Funktionsweise einer echten Komponente. ;-) |
AW: Objekt an Trackbar Position ausrichten
Hier mal eine Methode um ein Control an der Position der TrackBar auszurichten
Delphi-Quellcode:
Du willst ein Image daran ausrichten, dann einfach
procedure TForm1.ControlOnTrackBarPosition( AControl : TControl; ATrackBar : TTrackBar );
const C_TRACKBAR_BORDER_LEFT = 12; C_TRACKBAR_BORDER_RIGHT = 12; var LLeft : Integer; begin LLeft := ATrackBar.Left + C_TRACKBAR_BORDER_LEFT + Round( ( ATrackBar.Width - C_TRACKBAR_BORDER_LEFT - C_TRACKBAR_BORDER_RIGHT ) * ATrackBar.Position / ( ATrackBar.Max - ATrackBar.Min ) ); AControl.Top := ATrackBar.Top - AControl.Height; AControl.Left := LLeft - AControl.Width div 2; end;
Delphi-Quellcode:
und schon wandert das Image ganz brav an der TrackBar entlang, zentriert über dem Pinörpel ;)
procedure TForm1.TrackBar1Change( Sender : TObject );
begin ControlOnTrackBarPosition( Image1, Sender as TTrackBar ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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