![]() |
Objekt an Trackbar Position ausrichten
Hi DP, ich stehe vor einem Problem nämlich will ich ein Objekt zur Laufzeit erzeugen und dieses dann an der Trackbarposition ausrichten. Es soll also genau da entstehen wo der Trackbar Regler im Moment steht. Das ganze dient dazu Positionen aus der Trackbar zu speichern und später wieder aufzurufen. Hier ist mein bisheriger Code:
Delphi-Quellcode:
Ich hole mir die Position der Trackpar in Pixeln mit dem:
procedure TForm1.Button1Click(Sender: TObject);
var Img: TImage; pos, top: Integer; h: Cardinal; res: TResourcestream; Graphic: TGraphic; begin if not Cut1 then begin eins := Trb.Position; pos := Trb.Position * Form1.Width div 100; Img := TImage.Create(self); Img.Width := 32; Img.Height := 32; Img.Top := Trb.Top-30; Img.Left := pos-16; h := LoadLibrary('test.dll'); res := Tresourcestream.CreateFromID(h, 8, RT_RCDATA); Graphic:= TPngImage.Create; try Graphic.LoadFromStream(res); Img.Picture.Assign(Graphic); finally res.Free; Graphic.Free; end; self.InsertControl(Img); cut1 := true; end else begin Second := eins; Trb.Position := eins; end; end;
Delphi-Quellcode:
das ist aber nicht das Gelbe vom Ei da die Position nicht stimmt bzw. sehr stark abweicht.
pos := Trb.Position * Form1.Width div 100;
Wie kann ich eine 'elegantere' Methode benutzen falls es eine gibt :mrgreen: Danke Luki :) |
AW: Objekt an Trackbar Position ausrichten
Geht die TrackBar denn über die gesamte Breite der Form?
Übrigens fehlt zu dem LoadLibrary ein entsprechender FreeLibrary-Aufruf. Und die Rückgabe von LoadLibrary sollte ebenfalls ausgewertet werden. MfG Dalai |
AW: Objekt an Trackbar Position ausrichten
Ja, nur ist der Anchor akRight aktiv deshalb habe ich auch ein Problem mit den erzeugten Images aber egal, ich werte doch das LoadLibrary mit
Code:
aus oder verstehe ich gerade etwas falsch?
h := ...
|
AW: Objekt an Trackbar Position ausrichten
Was machst du, wenn's Test.dll nicht gibt oder er aus irgendwelchen anderen Gründen die DLL nicht laden konnte?
![]()
Delphi-Quellcode:
if (h = 0) then ... Fehler
|
AW: Objekt an Trackbar Position ausrichten
Ach so, ups.. Und wie kann ich das mit der Trackbar machen wenn sie über die ganze Form geht also Align alBottom?
|
AW: Objekt an Trackbar Position ausrichten
Da es TrackBar.SchiebereglerPositionX m.E. nicht gibt wird es wohl schwierig werden.
Du könntest ggf. eine eigene Komponente ableiten und die obige (neu hinzu zu fügende) Eigenschaft innerhalb der Zeichenfunktion selbst belegen. Ansonsten kannst Du vielleicht die Position selbst über Prozente von Width ermitteln, aber das kann dann durchaus Abweichungen enthalten. |
AW: Objekt an Trackbar Position ausrichten
Eventuell verstehe ich die Frage falsch, dann den Tipp ignorieren.
So wie es verstanden habe willst du ein Objekt an einem anderen Objekt aurichten. Das Beispiel (siehe Anhang) hier: ![]() |
AW: Objekt an Trackbar Position ausrichten
Mit Align alBottom (TrackBar geht über die gesamte Breite der Form, sofern sie darauf liegt) müsste der vorhandene Code doch schon passen. Nehmen wir an, die Form ist 1000 Pixel breit, die TrackBar hat Max=100 Schritte und der Slider steht bei Position=40. Dann kommt bei der Rechnung mit obigem Code ein Left-Wert von 400 raus, was 40 Prozent entspricht:
Code:
Oder überseh ich was?
Trb.Position * Form1.Width div 100;
40 * 1000 / 100 = 400 MfG Dalai |
AW: Objekt an Trackbar Position ausrichten
Der Schieberegler, bzw. dessen Mitte wird ja nicht über die gesamte KomponentenLlänge verschoben.
Am Anfang und Ende gibt es ein Offset, welches man natürlich noch mit einrechnen muß. |
AW: Objekt an Trackbar Position ausrichten
Ok danke für die Hilfe :thumb: Ich habe das jetzt einmal ausprobiert und habe mit ein paar Zahlen jongliert und kam dann auf folgenden Code:
Delphi-Quellcode:
Und wenn ich dann jetzt das Objekt erzeuge ist es ziemlich genau zur Trackbar Position ;)
pos := (Trb.Position * (Trb.Width div 100))+25; //pos ist die Position für das Image, Trb ist die Trackbar
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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 by Thomas Breitkreuz