AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TMenuItem mit OnSelect/MouseOver ?

Ein Thema von HPW · begonnen am 22. Sep 2007 · letzter Beitrag vom 24. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#1

TMenuItem mit OnSelect/MouseOver ?

  Alt 22. Sep 2007, 20:14
Hallo,

Ich möchte in einem Menü/PopupMenü einen Event wenn die MenuEinträge zwar selektiert aber noch nicht ausgewählt sind.
Manche Programme zeigen z.B. in der Statuszeile einen Hilfetext zum Menüeintrag.

TMenuItem hat aber nur OnClick.
Hans-Peter
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 22. Sep 2007, 20:20
TMenuItem hat aber die Eigenschaft Hint, dem einen Text zuweisen und die Hint-Anzeige umleiten (Statusbar etc.)
Karl-Heinz
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#3

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 22. Sep 2007, 20:24
>die Hint-Anzeige umleiten

Wie kann man denn die Anzeige umleiten?
Ausserdem hätte ich gerne einen generischen Event da die Anzeige in der Statuszeile nur ein Beispiel sein sollte.
Hans-Peter
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 22. Sep 2007, 21:54
Im Moment bin ich da jetzt auch überfragt, aber in den Delphi-Demos sind Beispiele, wo das auch vorkommt.
Stichwort Application.OnHint (oder Application.OnShowHint) lässt sich doch einer eigenen procedure zuweisen.
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#5

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 23. Sep 2007, 13:59
Wenns da nix fertiges gibt, einfach ne eigene Version ableiten und eigene Events für MouseEnter und MouseExit einbauen. Windows schickt jedem Fenster die MouseEnter-Message wenn der Mauscursor sich in das Fenster hineinbewegt und die MouseExit-Message wenn der Mauscursor den jeweiligen Fensterbereich wieder verlässt. So hab ich bei einigen meiner Controls ganz simpel einen Hovereffekt implementiert.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#6

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 24. Sep 2007, 07:21
Danke für die Info.

Zitat:
So hab ich bei einigen meiner Controls ganz simpel einen Hovereffekt implementiert.
Könnte man davon mal ein Code-Beispiel sehen, um auf den richtigen Weg zu kommen?
Hans-Peter
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#7

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 24. Sep 2007, 08:25
Kann ich nachher mal rauskramen, ist schon länger her dass ich das mal gebraucht hab, muesste aber noch irgendwo in meinem Codearchiv liegen
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#8

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 24. Sep 2007, 16:45
Hab mal versucht das hinzubekommen:
Delphi-Quellcode:
unit MenuItemEx;

interface

uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,
Dialogs,ExtCtrls, menus;

type
  TMenuItemEx=class (TMenuItem)
  private
  { Private declarations } 
  FOnMouseLeave:TNotifyEvent;
  FOnMouseEnter:TNotifyEvent;
  procedure CM_MouseEnter( var msg:TMessage); message CM_MOUSEENTER;
  procedure CM_MouseLeave( var msg:TMessage); message CM_MOUSELEAVE;
  protected
  { Protected declarations }
  procedure DoMouseEnter;dynamic;
  procedure DoMouseLeave;dynamic;
  public
  { Public declarations }
  published
  { Published declarations }
  property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
  property OnMouseLeave:TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;

procedure Register;

implementation

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

procedure TMenuItemEx.CM_MouseEnter( var msg:TMessage);
begin
  DoMouseEnter;
end;

procedure TMenuItemEx.CM_MouseLeave( var msg:TMessage);
begin
  DoMouseLeave;
end;

procedure TMenuItemEx.DoMouseEnter;
begin
  if Assigned( FOnMouseEnter) then FOnMouseEnter( Self);
end;

procedure TMenuItemEx.DoMouseLeave;
begin
  if Assigned( FOnMouseLeave) then FOnMouseLeave( Self);
end;

end.
Die Events feuern aber nicht.
Hans-Peter
  Mit Zitat antworten Zitat
pstruh
(Gast)

n/a Beiträge
 
#9

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 24. Sep 2007, 16:54
Moin, moin,

auch hier bin ich kein Experte, aber muss es nicht statt

Delphi-Quellcode:
procedure TMenuItemEx.DoMouseLeave;
begin
  if Assigned( FOnMouseLeave) then FOnMouseLeave( Self);
end;
so deklariert werden?

Delphi-Quellcode:
procedure TMenuItemEx.DoMouseLeave;
begin
  if @OnMouseLeave<>nil then OnMouseLeave(Self);
end;
Gruß
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: TMenuItem mit OnSelect/MouseOver ?

  Alt 24. Sep 2007, 17:07
Nö - wozu die Property nutzen, wenn er die Variable doch direkt handhaben kann auf die auch nur die Property zugreift? Durch deinen Code rufst nochmals zweimal den Getter der Property auf - um die direkt verwendbare - Variable zu erhalten.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:43 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