[Delphi] TrackBar MouseUp event

Pagina: 1
Acties:
  • 662 views sinds 30-01-2008
  • Reageer

  • HammerT
  • Registratie: April 2004
  • Laatst online: 12-04 12:36
Een TrackBar heeft, zoals jullie waarschijnlijk wel weten ;) , geen OnMouseUp even. Nu heb ik dit event wel nodig, ik wil de trackbar weer naar het midden verplaatsen nadat je deze hebt losgelaten.

Ik heb het geprobeert door de OnMouseUp van het Form te gebruiken, maar die wordt niet uitgevoerd als je alleen op de TrackBar klikt. Ook met het uitvoeren van de Form procedure in de OnChange event van de TrackBar, maar dit werkt ook niet, de form registreert de hele muis dan niet.

Heeft iemand een idee hoe je dit zou kunnen oplossen :?

bedankt

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Het werkt allemaal al, maar je ziet alleen het event niet. Maak een eigen afgeleide waarbij je de events published maakt, zoals hieronder.
Delphi:
1
2
3
4
5
6
type
  TMyTrackBar = class(TTrackbar)
  published
    property OnMouseDown;
    property OnMouseUp;
  end; 

We adore chaos because we like to restore order - M.C. Escher


  • HammerT
  • Registratie: April 2004
  • Laatst online: 12-04 12:36
Ik kom er niet uit hoor :?

Delphi:
1
2
3
4
5
6
7
Scale = class(TTrackbar)
    procedure ScaleMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    published
      property OnMouseDown;
      property OnMouseUp;
    end;


ScaleMouseUp wordt niet aangeroepen... Zou je iets meer kunnen vertellen, ik heb nooit zo met costum events gewerkt.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Het zijn geen custom events. Je hebt nu een eigen afgeleide gemaakt van TTrackBar die wel gewoon werkende OnMouseDown en OnMouseUp events heeft. Die ScaleMouseUp method wordt natuurlijk nooit zomaar vanzelf aangeroepen, maar het is ook niet nodig. Als je nu zorgt dat de nieuwe afgeleide in een design time package komt en daar wordt geregistreerd kan je de nieuwe trackbar design time gebruiken, maar anders kan je het component altijd runtime aanmaken.

We adore chaos because we like to restore order - M.C. Escher


  • HammerT
  • Registratie: April 2004
  • Laatst online: 12-04 12:36
vervelend, maken biij runtime.. maar goed ik heb nu dit (even een testje)


Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, ComCtrls;


type 
  TMyTrackBar = class(TTrackbar)
  published
    property OnMouseDown;
    property OnMouseUp; 
  end;

  TForm1 = class(TForm)
    procedure MyTrackBarMouseUp(Sender: TObject; Button: TMouseButton; Shift:
      TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    FMyTrackBar : TMyTrackBar;
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.MyTrackBarMouseUp(Sender: TObject; Button: TMouseButton; Shift: 
TShiftState; X, Y: Integer); 
begin
  ShowMessage('MouseUp');
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  FMyTrackBar := TMyTrackBar.Create(Self);
  with FMyTrackBar do 
  begin 
    Parent := Self; 
    Left := 10; 
    Top := 10;
    OnMouseUp := MyTrackBarMouseUp; 
  end; 
end; 

end.


maar hij maakt geen trackbar :?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

De width en height zijn 0?

We adore chaos because we like to restore order - M.C. Escher


  • HammerT
  • Registratie: April 2004
  • Laatst online: 12-04 12:36
euh.. tja, nu dus niet meer :P

maar het heeft niet geholpen.... :/

Edit: Vrremd:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
  FMyTrackBar := TMyTrackBar.Create(Self);
  with FMyTrackBar do
  begin
    Parent := Self;
    Left := 10;
    Top := 10;
    Width := 200;
    Height := 50;
    Visible := True;
    OnMouseUp := MyTrackBarMouseUp;
  end;

als ik dit stukje onder een knopje zet plaatst hij hem wel op het form :?

[ Voor 72% gewijzigd door HammerT op 23-01-2006 13:11 ]

Pagina: 1