Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Brauche OnMouseMove-Event + habe Problem mit ObjectInspector (https://www.delphipraxis.net/93985-brauche-onmousemove-event-habe-problem-mit-objectinspector.html)

daschaos 14. Jun 2007 10:05


Brauche OnMouseMove-Event + habe Problem mit ObjectInspector
 
Hi!

Ich habe eine Komponente erstellt, die von TGraphicControl erbt. Jetzt bräuchte ich aber auch das OnMouseMove - Event, dass es aber nur von der Vaterklasse von TGraphicControl TControl gibt. Erben die Unterklassen nich alles von der Oberklasse? Naja, auf jeden Fall meine Frage, wie komme ich daran oder was muss ich machen, damit ich dieses Event in meiner Komponente benutzen kann.

Außerdem dachte ich, würde man automatisch meine als published deklarierten Poperties im Obejct Inspector angezeigt bekommen. Allerdings zeigt er dort wirklich garnichts an. Muss ich da noch was beachten, angeben, wie auch immer? Die Anwendung bzw. das Formular, das meine Komponente benutzt ist das einzige was angezeigt wird :(...

Bin für jede Hilfe dankbar :)!

SirThornberry 14. Jun 2007 10:08

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
ganz einfach:
Delphi-Quellcode:
[...]
published
  property OnMouseMove;
[...]
Damit änderst du die sichtbarkeit von protected zu published

daschaos 14. Jun 2007 10:32

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
Tut mir leid für mein Unwissenheit, aber das versteh ich nich :wall:. Was hab ich jetzt davon, dass ich ein property hab, dass OnMouseMove heißt?

SirThornberry 14. Jun 2007 10:35

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
ich dachte du willst das property so haben das man es über den Objectinspektor zuweisen und benutzen kann :gruebel:

daschaos 14. Jun 2007 10:59

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
Ach, ich bin zu blöd mich in Worte zu fassen. Er kennt einfach das OnMouseMove nich. Also zum Beispiel die Methode Paint gibts bei TGraphicControl auch. Da muss ich dann zum Beispiel nur das schreiben:

Delphi-Quellcode:
public
    procedure Paint; override;
...

procedure TTreemapChart.Paint;
begin
  inherited;
  ...
end;
Und so hätte ich das auch gerne...

sirius 14. Jun 2007 11:56

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
Es gibt die procedure MouseMove (die das Event OnMouseMove auslöst) die du überschreiben könntest.
Delphi-Quellcode:
type Tx=class(TGraphicControl)
       procedure mousemove(Shift: TShiftState; X, Y: Integer);override;
end;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    x:Tx;
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  x:=tx.Create(self);
  x.parent:=self;
  x.Align:=alclient;
  canvas.MoveTo(0,0);
end;
procedure Tx.mousemove;
begin
  canvas.LineTo(x,y);
end;

daschaos 14. Jun 2007 12:12

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
Ja, genau so hab ich das auch gemacht, aber es läuft nich. Erstmal sagt er mir folgendes als Warnung:

Delphi-Quellcode:
[Warning] TreemapChart.pas(59): Method 'MouseMove' hides virtual method of base type 'TControl'
Er kompiliert aber, nur er reagiert nich auf die "Mouse Moves", es passiert einfach nichts. Wenn ich jetzt das override dazu schreibe, kompiliert er nich mehr und gibt mir folgende Fehlermeldung aus:

Delphi-Quellcode:
[Error] TreemapChart.pas(59): Declaration of 'MouseMove' differs from previous declaration
Damit kann ich dann garnichts mehr anfangen :(.

sirius 14. Jun 2007 12:15

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
Ja, dann solltest du mal deine Deklaration überprüfen :zwinker: Die muss schon übereinstimmen.

daschaos 14. Jun 2007 12:24

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
Aber das ist doch so okay, oder?

Delphi-Quellcode:
type
  TTreemapChart = class (TGraphicControl);

public
  procedure MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); override;

implementation

procedure TTreemapChart.MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
  ...
end;

sirius 14. Jun 2007 12:49

Re: Brauche OnMouseMove-Event + habe Problem mit ObjectInspe
 
Schau mal, was ich gemacht habe!

Du bist jetzt nicht beim event, sondern bei der methode, die das event auslöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr.
Seite 1 von 2  1 2      

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