AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi OnMouseEnter/-Over/-Leave für beliebige Komponente?
Thema durchsuchen
Ansicht
Themen-Optionen

OnMouseEnter/-Over/-Leave für beliebige Komponente?

Ein Thema von MCXSC · begonnen am 21. Sep 2008 · letzter Beitrag vom 26. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2      
MCXSC
(Gast)

n/a Beiträge
 
#1

OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 21. Sep 2008, 23:31
Hallo Leute,

ich such nun schon etwas länger, finde aber irgendwie nichts brauchbares. Und zwar Suche ich etwas, was mir die Funktionen für ein OnMouseEnter, OnMouseOver und OnMouseLeave Event für eine beliebige Komponente (in meinem Fall eine TVirtualStringTree) bereitstellt...

...hat da jemand eine Idee oder ähnliches?

Danke,
MCXSC
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 22. Sep 2008, 05:41
Hallo Marcel

Probier's mal mit Hier im Forum suchenCM_MOUSEENTER resp. Hier im Forum suchenCM_MOUSELEAVE etc.
Thomas
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#3

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 22. Sep 2008, 07:47
Ja, ich habe ja folgendes getestet:

Delphi-Quellcode:
private
    { Private-Deklarationen }
    ControlOnMousePos: TControl;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  public
    { Public-Deklarationen }
  end;

var
  DemoForm: TDemoForm;

implementation

{$R *.dfm}

procedure TDemoForm.CMMouseEnter(var Message: TMessage);
var
  ptWork: TPoint;
begin
  GetCursorPos(ptWork);
  ControlOnMousePos := FindDragTarget(ptWork, TRUE);
  if Assigned(ControlOnMousePos) then
  begin
    Label1.Caption := ControlOnMousePos.Name;
  end;
end;

procedure TDemoForm.CMMouseLeave(var Message: TMessage);
begin
  ControlOnMousePos := NIL;
end;
Hier sagt mir Delphi aber bei:

Delphi-Quellcode:
{ Private-Deklarationen }
ControlOnMousePos: TControl;
Zitat:
Feld DemoForm.ControlOnMousePos besitzt keine entsprechende Komponente. Soll die Deklaration entfernt werden?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 22. Sep 2008, 10:24
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    vst: TVirtualStringTree;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    FoldVSTWndProc:TWndMethod;
    procedure VSTwndproc(var msg:TMessage);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FoldVstWndProc:=vst.WindowProc;
  vst.WindowProc:=vstwndproc;
end;

procedure TForm1.VSTwndproc(var msg: TMessage);
begin
  FoldVSTWndProc(msG);
  case msg.Msg of
    cm_mouseleave: memo1.lines.add('bye');
    cm_mouseenter: memo1.lines.add('hello');
  end;
end;
Das ganze etwas allegemeiner gehalten in einer Komponente hängt unten an. Dabei wird aber nicht die interne CM-xxx-nachricht verwendet, sondern die Kompenente achtet selber auf die Mouse (mit Mousecapture).
Angehängte Dateien
Dateityp: pas u_mouse_779.pas (6,6 KB, 7x aufgerufen)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#5

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 23. Sep 2008, 02:50
Danke, funktioniert soweit auch. Allerdings: Wenn ich ein Panel wechsel, wird die ganze Aktion wohl dauerhaft ausgeführt (siehe Demo-Projekt). Eine Idee?

(Kurze Erklärung: Ein VST, das fest auf einem "festen" Panel liegt, soll so vergrößert werden, dass es eben über "Panel 1" liegt - und auch wieder verkleinert wird.)
Angehängte Dateien
Dateityp: zip project2_584.zip (356,0 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 23. Sep 2008, 08:00
Hmmm???
Wenn ich deine Exe starte erkenne/sehe ich das Problem. Wenn ich aber den Code in Delphi 7 lade und starte, dann sieht alles ok aus (Exe im Anhang), denke ich zumindest.


Ich hab zwar noch folgendes geändert (zwecks OOP), hat aber auch ohne die Änderung funktioniert:
Delphi-Quellcode:
type ...
     ...
  private
    ...
    //Die Funktionen habe ich mal in Methoden umgewandelt..
    procedure VST_Expand;
    procedure VST_Minimize;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.VST_Expand;
begin
  //..Dadurch brauchst du dich hier nicht auf TForm2 zu beziehen
  VST.Align := alNone;
  VST.Width := 400;
  VST.Height := Panel2.Height -10;
  VST.Parent := Form2;
end;

procedure TForm2.VST_Minimize;
begin
  VST.Parent := Panel2;
  VST.Align := alClient;
end;
Angehängte Dateien
Dateityp: exe project2_802.exe (694,5 KB, 5x aufgerufen)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#7

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 23. Sep 2008, 10:11
Hmm, also bei mir schaut es so aus (siehe Video).

Komischerweise funktioniert deine EXE - liegt das vielleicht an Turbo Delphi?
Angehängte Dateien
Dateityp: zip problem_video_915.zip (39,3 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 23. Sep 2008, 10:16
Beim Laden des Projektes kommen noch ein paar Warnungend. Mein delphi kennt die Größen "ExplicitXXX" bei Panel1 und VST nicht. Aber ich kann mir nicht vorstellen, dass es daran liegt. Vielleicht wurde ja etwas anderes noch verändert. Ich habe bloß heute grad keine Zeit darüber nachzudenken.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#9

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 23. Sep 2008, 21:48
Hmmm.... Sonst hat keiner eine Idee?
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#10

Re: OnMouseEnter/-Over/-Leave für beliebige Komponente?

  Alt 24. Sep 2008, 19:07
Also, das Problem scheint irgendwo daran zu liegen, dass ich die VST auf ein anderes Panel übertrage. Wenn ich die mit "---> xyz <---" markierten Zeilen herausnehme, klappt es; aber das ist ja nicht Sinn der Sache (bzw. so funktioniert es nicht so, wie es soll, nämlich das die VST über das "feste" Panel hinausragt...

Delphi-Quellcode:
type ...
     ...
  private
    ...
    procedure VST_Expand;
    procedure VST_Minimize;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.VST_Expand;
begin
  VST.Align := alNone;
  VST.Width := 400;
  VST.Height := Panel2.Height -10;
  ---> VST.Parent := Form2; <---
end;

procedure TForm2.VST_Minimize;
begin
  ---> VST.Parent := Panel2; <---
  VST.Align := alClient;
end;
  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 05:37 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