Einzelnen Beitrag anzeigen

OLLI_S

Registriert seit: 20. Aug 2006
19 Beiträge
 
Delphi 7 Architect
 
#6

Re: Verhalten diverser Komponenten ändern

  Alt 16. Okt 2006, 20:01
Hallo,

danke für die vielen Anregungen!
Ich denke ich werde das mit OnMouseMover machen, da man damit nur ein mal klicken muss und sich für mehrere Komponenten die Hilfe anzuzeigen (also der Button aktiviert und deaktiviert den Hilfemodus, bei MouseOver zeige ich den Hilfetext an).
Ist der Hilfemodus aktiv, kann ich über alle Komponenten drüber fahren und bekomme so eine Hilfe angezeigt.

Habe mal ein wenig bei TControl ein wenig geschaut und mir dort Code geklaut.
Funktioniert!

Falls es auch andere User interessiert, hier der Quelltext einer Componente, die von TComboBox abgeleitet ist und den event "MouseMove" hat.
Die Inhalte sind wie gesagt von TControl geklaut.....

Delphi-Quellcode:
unit ComboBoxWithMouseMove;

interface

uses
   SysUtils, Classes, Controls, StdCtrls, Messages;

type
   TComboBoxWithMouseMove = class(TComboBox)
   private
      FOnMouseMove: TMouseMoveEvent;
      procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
   protected
      procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;
   public
      { Public-Deklarationen }
   published
      property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
   end;

procedure Register;

implementation

uses
   Forms;

{------------------------------------------------------------------------------}

procedure Register;
begin
   RegisterComponents('OLLI', [TComboBoxWithMouseMove]);
end;

{------------------------------------------------------------------------------}

procedure TComboBoxWithMouseMove.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
   if Assigned(FOnMouseMove) then FOnMouseMove(Self, Shift, X, Y);
end;

{------------------------------------------------------------------------------}

procedure TComboBoxWithMouseMove.WMMouseMove(var Message: TWMMouseMove);
begin
   if not (csNoStdEvents in ControlStyle) then
      with Message do
         if (Width > 32768) or (Height > 32768) then
            with CalcCursorPos do
               MouseMove(KeysToShiftState(Keys), X, Y)
         else
            MouseMove(KeysToShiftState(Keys), Message.XPos, Message.YPos);
end;

{------------------------------------------------------------------------------}

end.


Gruß


OLLI
  Mit Zitat antworten Zitat