Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#7

Re: Klick auf Button simulieren nach dem Scrollen?

  Alt 8. Sep 2008, 08:45
Zitat von thomas2009:
Es hat tatsächlich geklappt Danke!
Trackbar hat auch den Event OnClick oder OnMouseDown nicht, kann man auch das Problem
lösen, genauso wie du OnMouseUp vorgeschalgen hast ?

_
Diese Ereignisse kannst du auch nachrüsten:

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, CommCtrl, StdCtrls;

// TTrackbar um ein OnChanged Ereignis erweitern
type
  TTrackBar = class(ComCtrls.TTrackBar)
  private
    FOnChanged : TNotifyEvent;
    procedure CNHScroll(var msg: TWMHScroll); message CN_HSCROLL;
  published
    property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
    property OnMouseDown;
    property OnMouseUp;
    property OnClick;
  public
end;


type
  TForm1 = class(TForm)
    TrackBar1: TTrackBar;
    Button1: TButton;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    procedure TrackBarChanged(Sender: TObject);
    procedure TrackBarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure TrackBarMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure TrackBarClick(Sender: TObject);
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TTrackBar.CNHScroll(var msg: TWMHScroll);
begin
  inherited;
  if Assigned(fOnChanged) then
    if (msg.ScrollCode in [TB_THUMBPOSITION, TB_LINEUP, TB_LINEDOWN, TB_PAGEUP, TB_PAGEDOWN]) then
    begin
       FOnChanged(Self);
    end;
end;

procedure TForm1.TrackBarChanged(Sender: TObject);
begin
  ListBox1.Items.Add('Position geändert ! ');
end;

procedure TForm1.TrackBarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ListBox1.Items.Add('TrackBar OnMouseDown');
end;

procedure TForm1.TrackBarMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ListBox1.Items.Add('TrackBar OnMouseUp');
end;

procedure TForm1.TrackBarClick(Sender: TObject);
begin
 ListBox1.Items.Add('TrackBar OnClick');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TrackBar1.OnChanged := TrackBarChanged;
  TrackBar1.OnMouseDown := TrackBarMouseDown;
  TrackBar1.OnMouseUp := TrackBarMouseUp;
  TrackBar1.OnClick := TrackBarClick;
end;
Thomas
  Mit Zitat antworten Zitat