Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

stahli 28. Mär 2014 13:20

AW: Objekt an Trackbar Position ausrichten
 
Etwas genauer wäre vermutlich noch:

pos := ((Trb.Position * (Trb.Width - Links - Rechts)) div 100))+ Links - (Image.Width div 2);
// (Image.Width div 2) wenn das Image zentriert über dem Strich sitzen soll

Wobei Links und Rechts der Abstand des ersten und letzten Strichs zum Rand wäre.

lbccaleb 28. Mär 2014 15:36

AW: Objekt an Trackbar Position ausrichten
 
Du kannst die Area des Silders mit TBM_GETTHUMBRECT herausfinden. Diese ist bezogen auf die TrackBar Area. Damit kannst du dir die Pos. auf der Form errechnen.


http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Luki206 28. Mär 2014 15:42

AW: Objekt an Trackbar Position ausrichten
 
Hmm.. ich habe eigentlich versucht den Sachen von Microsoft aus dem Weg zu gehen da ich nicht weiß wie ich das in Delphi benutzen muss.. Gibt es dann dazu irgendwelche Beispiele?

lbccaleb 28. Mär 2014 15:44

AW: Objekt an Trackbar Position ausrichten
 
Ähh Google?

Gleich der erste Treffer:

http://www.delphigroups.info/2/bf/405793.html

Luki206 31. Mär 2014 20:15

AW: Objekt an Trackbar Position ausrichten
 
Ok ich habe jetzt in wenig herum gebastelt. Ich habe mir jetzt gedacht, zeichne dir doch einfach eine eigene Trackbar mit vier TImages. Zwei Enden, ein Mittelteil und ein Schieber. Alles schön und gut nur stehe ich jetzt vor dem Problem, wie mache ich das mit dem Max bzw. Min. Ich habe jetzt einmal folgendes probiert und es kommt eigentlich kein schlechtes Ergebnis dabei raus:
Delphi-Quellcode:
ImgSlide.Left := ImgSlide.Left+(((ImgEck1.Left+ImgEck2.Left+32)+ max div 60)div max); (* Das Ganze liegt in einem Timer mit dem Interval 100, max wurde durch ein Edit definiert und liegt in private & der Rest erklärt sich von selbst (falls nicht hier meine Erklärung: ImgSlide= Schieber, ImgEck1= Linkeecke & ImgEck2= Rechteecke)*)
Gibt es nicht noch eine elegantere Methode das zu lösen?
Danke
Luki :)

PS: Bei größeren Zahlen als 60 Sekunden bewegt sich der Schieber nicht mehr

lbccaleb 1. Apr 2014 05:56

AW: Objekt an Trackbar Position ausrichten
 
Keiner weiß, was du da genau machst. Wie wäre es mal mit dem Code Abschnitt im ganzen?
Hier kann keiner Hellsehen...:glaskugel:

Luki206 1. Apr 2014 14:04

AW: Objekt an Trackbar Position ausrichten
 
Ich werde es glaub ich nie lernen.. :wall: hier:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.pngimage, Vcl.ExtCtrls,
  Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    ImgEck1: TImage;
    ImgSlideGro: TImage;
    ImgEck2: TImage;
    ImgSlide: TImage;
    Timer1: TTimer;
    LblTest: TLabel;
    Ed1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Timer2: TTimer;
    Label1: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private-Deklarationen }
    max : Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not (Ed1.Text = '') then begin
  max := StrToInt(Ed1.Text) * 10;
  Timer1.Enabled := true;
  Timer2.Enabled := true;
end else begin
  Application.MessageBox('Bitte eine Maximal-Zahl eingeben!', 'MAX ZAHL', MB_ICONWARNING or MB_OK);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := false;
Timer2.Enabled := false;
Label1.Caption := '0';
ImgSlide.Left := ImgEck1.Left;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var maxwi: Integer;
begin
if (ImgSlide.Left = ImgEck2.Left) or (ImgSlide.Left > ImgEck2.Left+5) then begin
  ImgSlide.Left := ImgEck1.Left;
end else begin
  ImgSlide.Left := ImgSlide.Left+(((ImgEck1.Left+ImgEck2.Left+32)+ max div 60)div max);
end;            
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
Label1.Caption := IntToStr(StrToInt(Label1.Caption)+1);
end;

end.

lbccaleb 1. Apr 2014 19:04

AW: Objekt an Trackbar Position ausrichten
 
Schau mal hier hab ich mal vor langer Zeit dran rumprobiert, vllt. kann dir das ja helfen...
http://www.delphipraxis.net/130916-t...-erzeugen.html

Luki206 1. Apr 2014 19:58

AW: Objekt an Trackbar Position ausrichten
 
Hmm.. Da wird ja die Trackbar in einem neuen Fenster geöffnet/erzeugt nur ich möchte ja eigentlich nur errechnen wie die Trackbar sich bewegt bei unterschiedlicher Länge eines Integer Wertes der Breite der 'gebauten' Trackbar und die Position des Schiebers.

Edit: Und wenn der Wert größer als 70 sek. hängt sich das ganze auf und der Schieber bewegt sich nicht mehr..

stahli 1. Apr 2014 20:43

AW: Objekt an Trackbar Position ausrichten
 
Mir erschließt sich nicht, was Du mit den Timern machst.
Häng doch mal Dein Testprojekt als Zip an.
Vielleicht kann dann ja jemand mal drauf schauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr.
Seite 2 von 3     12 3      

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