Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Objekt an Trackbar Position ausrichten (https://www.delphipraxis.net/179728-objekt-trackbar-position-ausrichten.html)

Luki206 27. Mär 2014 14:59

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:
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;
Ich hole mir die Position der Trackpar in Pixeln mit dem:
Delphi-Quellcode:
pos := Trb.Position * Form1.Width div 100;
das ist aber nicht das Gelbe vom Ei da die Position nicht stimmt bzw. sehr stark abweicht.
Wie kann ich eine 'elegantere' Methode benutzen falls es eine gibt :mrgreen:
Danke
Luki :)

Dalai 27. Mär 2014 15:09

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

Luki206 27. Mär 2014 15:13

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:
h := ...
aus oder verstehe ich gerade etwas falsch?

nuclearping 27. Mär 2014 15:35

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?

MSDN-Library durchsuchenLoadLibrary

Delphi-Quellcode:
if (h = 0) then ... Fehler

Luki206 27. Mär 2014 15:37

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?

stahli 27. Mär 2014 15:42

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.

Popov 27. Mär 2014 16:11

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: http://www.delphipraxis.net/1253570-post9.html macht zwar etwas anderes, es richtet aber auch ein Fenster an einem Objekt aus. Evtl. reicht das schon.

Dalai 27. Mär 2014 16:19

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:
Trb.Position * Form1.Width div 100;
40           * 1000          / 100    = 400
Oder überseh ich was?

MfG Dalai

himitsu 27. Mär 2014 16:53

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ß.

Luki206 28. Mär 2014 12:56

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:
pos := (Trb.Position * (Trb.Width div 100))+25; //pos ist die Position für das Image, Trb ist die Trackbar
Und wenn ich dann jetzt das Objekt erzeuge ist es ziemlich genau zur Trackbar Position ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf