AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006
Thema durchsuchen
Ansicht
Themen-Optionen

Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006

Ein Thema von Sascha L · begonnen am 19. Jun 2006 · letzter Beitrag vom 27. Jun 2006
Antwort Antwort
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#1

Einige Mouse-Events fehlen bei Delphi2005 gegenüber 2006

  Alt 19. Jun 2006, 10:14
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
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 27. Jun 2006, 10:36
*push*
Sascha
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

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

  Alt 27. Jun 2006, 10:43
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
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#4

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

  Alt 27. Jun 2006, 10:47
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.
Sascha
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

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

  Alt 27. Jun 2006, 10:51
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...
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

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

  Alt 27. Jun 2006, 11:53
Bei BDS < 2006 kann man die CM_MOUSEENTER und CM_MOUSELEAVE Botschaften abfangen und OnMouseEnter/OnMouseLeave damit selbst implementieren.
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#7

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

  Alt 27. Jun 2006, 12:03
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
Sascha
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#8

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

  Alt 27. Jun 2006, 13:05
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..
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#9

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

  Alt 27. Jun 2006, 13:31
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.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

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

  Alt 27. Jun 2006, 14:07
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.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.
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