Delphi-PRAXiS

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 Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006 (https://www.delphipraxis.net/71665-einige-mouse-events-fehlen-bei-delphi2005-gegenueber-2006-a.html)

Sascha L 19. Jun 2006 10:14


Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Hi,

ich habe eine Komponente entwickelt, die ich von TGraphicControl abgeleitet habe.

Ich habe die Komponente mit Delphi2006 entwickelt und nutze die beiden Events "OnMouseLeave" und "OnMouseEnter".


Das Problem tritt nun bei Delphi2005 ein, da meckert der Compiler, dass die Basisklasse diese beiden Eigenschaften nicht besitzt.

Ich dachte dass die beiden Versionen sich nicht viel tun und solche wichtigen Dinge nicht einfach mal so geändert werden.

Wie bekomm ich nun am schnellste und einfachsten diese beiden Ereignisse in meine Komponente?

Gruß
Sascha

EDIT:

Ach Mist, jetzt wo ich mein Projekt mit diese Komponente öffne, stelle ich fest, dass ja etliche Komponenten diese beiden Events unter Delphi 2006 haben und jetzt bei 2005 noch nicht, sodass es 100erte Fehlermeldungen hagelt :(

Sascha L 27. Jun 2006 10:36

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
*push*

Muetze1 27. Jun 2006 10:43

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Moin!

Grosses Unverständnis meinerseits. Du hast eine Komponente entwickelt die Ereignisse verwendet? Wie bitte? Warum denn dies? Dann würde ja bei deiner Komponente ein zuweisen von Ereignissen im Objektinspektor für diese Ereignisse gar nicht mehr möglich sein! Warum verwendest du nicht die virtuellen Funktionen welche die Ereignisszuweisungen aufrufen statt dessen (so sollte es im Normalfall gemacht werden)? Ansonsten, falls es diese auch nicht unter D2005 gibt, dann nutze Botschaftsbehandlungsroutinen für die VCL Notify Botschaften CN_MOUSEENTER und CN_MOUSELEAVE. Diese existieren schon in Delphi 5.

MfG
Muetze1

Sascha L 27. Jun 2006 10:47

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Nein.

Was ich meine ist folgendes:

TGraphicControl (ich hab mir das nun nicht genau angeguckt, wie weit das zurück geht) hat bei Delphi2006 die Eigenschaften/Ereignisse "OnMouseLeave" und "OnMouseEnter".

Wenn ich nun eine Komponente entwickle und diese davon natürlich ableite, dann kann ich diese Ereignisse ja verwenden, indem ich im publish-Teil diese einfach reinsetze, sodass sie dann z.B. auch im OI erscheinen.

Das blöde ist nun, dass Delphi2005 diese Ereignisse noch nicht kennt.

Muetze1 27. Jun 2006 10:51

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Aso, du willst sie also einfach nur publishen - das ist ja was anderes als sie zu verwenden. Nun, dann kann deine Komponente unter D2005 nunmal nicht solche Ereignisse mit anbieten. Und um den Fehler mit dem Compiler unter Delphi vor 2006 zu umgehen, könntest du diese nur dann veröffentlichen, wenn der Compiler mindestens D2006 ist.

Delphi-Quellcode:
  ...
  Published
    Property Anchors;
    Property Align;
{$IFDEF VER180}
    Property OnMouseEnter;
    Property OnMouseLeave;
{$ENDIF}
Hierbei müsste noch einer kurz vermelden, welche Version D2006 hat - das weiss ich nicht. Daher müsste halt VER180 noch angepasst werden...

jbg 27. Jun 2006 11:53

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Bei BDS < 2006 kann man die CM_MOUSEENTER und CM_MOUSELEAVE Botschaften abfangen und OnMouseEnter/OnMouseLeave damit selbst implementieren.

Sascha L 27. Jun 2006 12:03

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Ja das wird wohl das einzige sein, was mir übrig bleibt.

Ist aber trotzdem dämlich, dass Borland an den Standard-Controls noch Änderungen vornimmt.

Das Problem ist nämlich, dass die Komponente diese beiden Eigenschaften haben soll und die Komponente mit Delphi2006 entwickelt wurde und man daher davon ausgegangen ist, dass diese Eigenschaften zur Verfügung stehen. Da die Komponente aber auch unter Delphi2005 verwendet wird, muss ich nun diese beiden Messages selber abfangen und implementieren :(

Trotzdem danke :)

mquadrat 27. Jun 2006 13:05

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Zitat:

Zitat von Sascha L
Ist aber trotzdem dämlich, dass Borland an den Standard-Controls noch Änderungen vornimmt.

Also ich finde es nicht dämlich Komponenten weiter zu entwickeln..

Sascha L 27. Jun 2006 13:31

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Ja OK.

Sagen wir, es ist ein Fehler in Delphi2005, denn etliche Komponenten haben diese beiden Ereignisse spendiert bekommen und Borland hat es nur vergessen es konsequent bei allen Komponenten hinzuzufügen.

Sie könnten wenigstens das in einem Update korrigieren und nicht erst in der nächsten Version.

Flocke 27. Jun 2006 14:07

Re: Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
 
Du kannst die Events auch selbst definieren, viel Code gehört nicht dazu (ungetestet):

Delphi-Quellcode:
//...

interface

type
  TMeinControl = class(TAnderesControl)
  private
    //...
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    //...
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
    //...
  published
    //...
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
    //...
  end;

implementation

//...

procedure TMeinControl.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  if (Message.LParam = 0) and Assigned(FOnMouseEnter) then
    FOnMouseEnter(Self);
end;

procedure TMeinControl.CMMouseLeave(var Message: TMessage);
begin
  inherited;
  if (Message.LParam = 0) and Assigned(FOnMouseLeave) then
    FOnMouseLeave(Self);
end;
Das sollte eigentlich auch unter BDS2006 laufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz