AGB  ·  Datenschutz  ·  Impressum  







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

OnMouseLeave für die TPaintbox?

Ein Thema von xZise · begonnen am 27. Mär 2007 · letzter Beitrag vom 27. Mär 2007
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

OnMouseLeave für die TPaintbox?

  Alt 27. Mär 2007, 09:03
Ich habe in D2k6 eine TPaintbox benutzt, welche das Event "OnMouseLeave" hatte. Aber wenn ich mit (z.b) D6 pogrammiere, kennt er das Ereignis nicht. Gibt es irgendwie eine mögklihckeit das selber hinzubekommen?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: OnMouseLeave für die TPaintbox?

  Alt 27. Mär 2007, 10:32
Hallo,

so geht es bei mir:
Delphi-Quellcode:
  private
    OldPbWindowProc: TWndMethod;
    procedure PbSubClassWndProc(var Message: TMessage);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PbSubClassWndProc(var Message: TMessage);
begin
  if Message.Msg= CM_MouseLeave then
  begin
    beep;//Demo

  end;
  OldPbWindowProc(Message);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldPbWindowProc:= PaintBox1.WindowProc;
  PaintBox1.WindowProc:= PbSubClassWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  PaintBox1.WindowProc:= OldPbWindowProc;
end;
Oder eine eigene PaintBox Komponente erstellen.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#3

Re: OnMouseLeave für die TPaintbox?

  Alt 27. Mär 2007, 10:39
is gar nicht soo schwer...

1. zum start des Programms:

aktuelle Mausposition ermitteln und daraus bestimmen, ob die maus in der paintbox liegt (über Mouse.Position.x, Mouse.Position.y, PaintBox1.Left, PaintBox1.Top, PaintBox1.Width, PaintBox1.Heigth kann man das bestimmen und dann in den Wahrheitswert INPAINTBOX1: boolean schreiben)

2. modifiziere das Ereignis ONMouseMove deines Formulars folgendermaßen:

mach das gleiche wie unter 1., schreibe das ergebnis (also ob die maus in der paintbox liegt) aber in eine andere variable, z.B. INPAINTBOX2: boolean;

3. Vergleiche INPAINTBOX1 und INPAINTBOX2

wenn INPAINTBOX1=true und INPAINTBOX2=false
dann ...(hier folgen deine anweisungen für das ereignis OnPaintBoxMouseLeave)

jetzt noch den Wert von PAINTBOX2 in PAINTBOX2 schreiben und fertig

4. fast vergessen: das ereignis ONMouseMove des Formulars musst du auch noch dem Ereignis OnMouseMove der PaintBox1 zuordnen.

wenn du einen expliziten Quelltext brauchst sag nochma bescheid... muss ich ein paar Formulierungen nachschaun
  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 22:01 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