Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ereignise abfangen (https://www.delphipraxis.net/77103-ereignise-abfangen.html)

mimi 14. Sep 2006 17:33


Ereignise abfangen
 
Hallo,
ich möchte bestimmte ereignise abfangen in meinen fall währe es jetzt das OnMouseMove ereignis.
und zwar vom canvas. merh habe ich nicht.

ich habe ein form das ist eine paintbox drauf und ich möchte jetzt nicht einfach:
Paintbox.onmousemove schreiben. ich möchte "einfach" selbst ereingise abfangen die von form1 gesendet werden z.b. onmousemove, onMouseDown, up, und soweiter....

kann mir da jemmand weiter helfen ?

bin gerade dabei eine eigene listbox zu schreiben.
Mein ziel ist es: du musst sie nur mit Create erstellen und keine ereignise definieren... es soll wie bei der normalen listbox std. ereignise geben. die für das verhalten zuständig sind..

Ich hoffe ich konnte die frage richtig formulieren so das die verstänlich ist...
im moment suche ich nach mit google nach TCanvas onClick aber so recht werde ich leider nicht fündig :(

uwewo 14. Sep 2006 18:03

Re: Ereignise abfangen
 
Schau doch mal das hier an, sollte Dir helfen.

DP

mimi 14. Sep 2006 18:18

Re: Ereignise abfangen
 
danke für die antwort.

Sehe ich das richtig das ich nur von TWinControl ableiten müste in meinen fall ?
die frage währe nur: die TCaption klasse die ich geschrieben hat soll ja nicht die paintbox oder ein form sehen. aber ich werde es gleich mal versuchen... mal schauen !

mimi 14. Sep 2006 18:30

Re: Ereignise abfangen
 
es geht leider nicht. es wird kein ereignis ausgelöst:
Delphi-Quellcode:
constructor TmyCaption.Create(paint:TPaint;x,y,w,h:Integer; Caption:String);
begin
  fpaint:=paint;
  fCaption:=Caption;
  fpos.x:=x; fpos.y:=y; fsize.X:=w; fSize.y:=h;
  fpaint.bufferBmp.Canvas.Pen.Style:=psSolid;
  CaptionDir(1);
  isSel:=False;
//
  Left:=x;Top:=y;
  Width:=w; Height:=h;
  BoundsRect:=rect(x,y,w,h);

  OnMouseMove:= MouseMouse;
end;
habe ich werte vergessen ?brauche ich ein handel ?

mimi 14. Sep 2006 22:49

Re: Ereignise abfangen
 
habe was gefunden im internet:
Delphi-Quellcode:
procedure TMycaption.MM(var Msg: tagMSG;var Handled: Boolean);
var
  Point:Tpoint;
begin

  if msg.message = WM_MOUSEMOVE then begin
     Point.X:=( Msg.lParam        and $FFFF);
     Point.Y:=((Msg.lParam shr 16) and $FFFF);
     mx:=Point.x; my:=point.y;
     isSel:=GetSel(-1,-1);
  end;
end;

mimi 15. Sep 2006 00:30

Re: Ereignise abfangen
 
es geht leider doch nicht der grund es liegt an application.onmessage da wird das lezte erstelte objekt zugeiwesen.. ich bräuchte was allgmeines.. warum funktioniert das hier eigentlich nicht:
Delphi-Quellcode:
  private
    fPaint:TPaint;
    mx,my:Integer;
//    fMouseMove:TMouseMoveEvent;
    procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOVE;

.....

procedure TMycaption.WndProc(var msg: TMessage);
begin
 
  ShowMEssage('O');
  //case msg.Msg of
//    MY_MESSAGE: Showmessage(PChar(msg.LParam));
//  end;
end;

procedure TMycaption.WMMouseMove(var Message: TWMMouseMove);
begin
  ShowMEssage('O');
end;
tmycaption hat im moment nur TObject als vorfahren

mimi 15. Sep 2006 10:22

Re: Ereignise abfangen
 
mein eigentliches problem ist:
wie kann ich aus einem canvas objekt eine komponente machen ?
ich zeichne mit hilfe von canvas mehre objekte:
eine komplet eigene listbox. jeder eintrag ist eine klasse.

Und dieses objekt möchte ich als komponente defninieren mit alldrum und dran.
Und sie soll auch windows botschaften erhalten wie:
MouseMove, down und soweiter.

ich habe mir schon die jvcl komponenten angesehen aber der qullcode ist einfach viel zu umfangreich....

Ich hoffe die frage ist verstänlich geschrieben.

im internet finde ich leider einfach nichts !

mimi 15. Sep 2006 11:07

Re: Ereignise abfangen
 
habs hinbekommmen nach einigen probieren und suchen mit hilfe diesen beitrages:
http://www.delphipraxis.net/internal...t=message+hook
ich weiß nur nicht ob das der std. weg ist bei alle komponenten !


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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 by Thomas Breitkreuz