Tworzenie własnego komponentu - progressbar

0

Witam,
mam problem..
posiadam taki kod

 //ProgressBar1 OnMouseMove
 procedure TForm1.ProgressBar1MouseMove(
    Sender: TObject;
    Shift: TShiftState;
    X, Y: Integer) ;
 var
    newPosition : integer;
 begin
    if ssShift in Shift then
    begin
      ProgressBar1.Cursor := crHSplit;
      newPosition := Round(x * ProgressBar1.Max / ProgressBar1.ClientWidth) ;
      ProgressBar1.Position := newPosition;
    end
    else
    begin
      ProgressBar1.Cursor := crDefault;
    end;
 end;
 

Chciałem przerobić ten kod na własny komponent, ale nie wiem jak we własnym komponencie użyć onMouseMove :/
Chciałem żeby mój własny pasek miał zmienny postęp tak jak w tym kodzie, ale nie wiem, jak się za to zabrać...
Pomóżcie :(

0

Rozdział 15 - hasła Zdarzenia oraz Definiowanie własnych zdarzeń

0

czyli jak mam

 
type
 TProgressBarOWN = class(TprogressBar)

to zaraz pod tym mam wpisać drugi typ? coś takiego?

type
 TProgressBarOWN = class(TprogressBar)
 MouseMove = procedure (Sender: TObject; Shift: TShiftState; X, Y : Integer) of object;

coś potem jeszcze muszę zmienić (za wyjątkiem usunięcia ProgressBar1 przed cursor, max, clientwidth itd.)?

0

można w ogóle zrobić coś takiego?

0

Jako że nie mogę edytować postów to piszę kolejny..

Mam teraz tak:

 
unit ProgressBar;

interface

 uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls, ComCtrls, Buttons, ExtCtrls,
  WinTypes, WinProcs;

type
  TProgressBarOWN = class(TProgressBar)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
        procedure MouseMove(Shift: TShiftState;
  X, Y: Integer);
    { Public declarations }
  published
    { Published declarations }


 end;



procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TProgressBarOWN]);
end;

///////////////////////////////////////////////



  procedure TProgressBarOWN.MouseMove(Shift: TShiftState;
  X, Y: Integer);
var
    newPosition : integer;
 begin
    if ssShift in Shift then
    begin
      Cursor := crHSplit;
      newPosition := Round(x * Max / ClientWidth) ;
      Position := newPosition;
    end
    else
    begin
      Cursor := crDefault;
    end;
 end;



//////////////////////////////////////////////////////



end.

Kompiluje się i wszystko niby jest ok, ale kiedy wrzucam ten komponent do forma, to nie reaguje :/
Chodzi mi o to, żeby ta procedura wykonywała się po najechaniu myszką na komponent, bez wpisywania dodatkowych instrukcji w formie..
Co robię źle?

1 użytkowników online, w tym zalogowanych: 0, gości: 1