Tworzenie własnego komponentu - progressbar

Earglass
2011-01-22 18:26
Earglass
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 :(

Pozostało 580 znaków

2011-01-22 18:29

Rejestracja: 14 lat temu

Ostatnio: 10 miesięcy temu

0

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


Pozostało 580 znaków

Earglass
2011-01-22 18:39
Earglass
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.)?

Pozostało 580 znaków

Earglass
2011-01-22 20:02
Earglass
0

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

Pozostało 580 znaków

Earglass
2011-01-23 11:52
Earglass
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?

Pozostało 580 znaków

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