AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

MouseEnter

Ein Thema von taktaky · begonnen am 21. Okt 2007 · letzter Beitrag vom 22. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2   
taktaky
(Gast)

n/a Beiträge
 
#1

MouseEnter

  Alt 21. Okt 2007, 00:54
Hallo

der Funktioniert bei Panel wollte stattdessen Image verwenden, geht es leider nicht !


Delphi-Quellcode:

  private
  procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;


procedure TForm1.CMMouseEnter(var Message: TMessage);
var
  ptWork : TPoint;
begin
  GetCursorPos(ptWork);
//if WindowFromPoint(ptWork) = Image1.handle then // error !!!
  if WindowFromPoint(ptWork) = Panel1.Handle then // ok
  begin
       Showmessage('hello');;
  end;
end;
Warum funktioniert bei Image1 nicht aber bei Panel1 ja ?
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: MouseEnter

  Alt 21. Okt 2007, 01:29
Nur Nachfahren von TWinControl besitzen ein eigenes Fensterhandle, ansonsten verwaltet die VCL das Element selbst - TPanel stammt von TWinControl ab, TImage nur von TControl.

Du kannst deinen Code so abwandeln:
if Form1.ControlAtPos(Form1.ScreenToClient(ptWork), False, True, True) = Image1 then
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

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

Re: MouseEnter

  Alt 21. Okt 2007, 12:42
Hallo,

ab Delphi 10 gibt es auch bei einem TImage das Ereignis onMouseEnter, ansonsten könnte man es auch selber machen. Das wäre imho die bessere Variante als es über das onMouseEnter des Formulars zu machen.
Angehängte Dateien
Dateityp: zip imagemouseenter_966.zip (62,0 KB, 27x aufgerufen)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#4

Re: MouseEnter

  Alt 21. Okt 2007, 13:01
Hallo zusammen

der Code von @Flocke
if Form1.ControlAtPos(Form1.ScreenToClient(ptWork), False, True) = Image1 then ... und auch der Code in Demo von Dir @bitsetter funktionieren sehr gut und genau was ich gerne wollte.

Besten Dank!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: MouseEnter

  Alt 21. Okt 2007, 13:35
Ich würde empfehlen das "Form1." in der IF Abfrage noch wegzulassen.
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#6

Re: MouseEnter

  Alt 21. Okt 2007, 14:11
Zitat von Muetze1:
Ich würde empfehlen das "Form1." in der IF Abfrage noch wegzulassen.
Das stimmt, "Form1" ist nicht nötig und es funktioniert ohne :
if {Form1.}ControlAtPos(Form1.ScreenToClient(ptWork), False, True) = Image1 then ...
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#7

Re: MouseEnter

  Alt 21. Okt 2007, 21:40
Nun habe ich ein kleines Problem

ich möchte den Cursor mit sleep() deactivieren solang er drauf bewegt

Ich möchte aber keine Zeit eingeben.

Ist das möglich ?
Delphi-Quellcode:
procedure TForm1.CMMouseEnter(var Message: TMessage);

var
  ptWork : TPoint;

begin
  GetCursorPos(ptWork);
  if ControlAtPos(Form1.ScreenToClient(ptWork), False, True) = Image1 then

  begin

    sleep(); // hier möchte ich keine Zeit eingeben
  end;
end;
Hat jemand eine Idee?
  Mit Zitat antworten Zitat
Konse

Registriert seit: 20. Feb 2007
Ort: Bayern
27 Beiträge
 
Delphi 7 Professional
 
#8

Re: MouseEnter

  Alt 21. Okt 2007, 21:49
hi

Zitat von taktaky:
Nun habe ich ein kleines Problem

ich möchte den Cursor mit sleep() deactivieren solang er drauf bewegt

Ich möchte aber keine Zeit eingeben.

Ist das möglich ?
Hat jemand eine Idee?
nein das ist nicht möglich, damit legst du den ganzen thread schlafen.
Wenn der cursor nichts klicken soll musst du die mouseevents abfangen in diesem bereich,
sowas wie onmousemove oder onclick.
Wenn du lieber anstatt den cursor ne eieruhr haben möchtest, dann solltest du dort den cursor wechseln.


Gruß Konse
Warum ich Klingonische Programmierer so liebe:
- A true Klingon programmer does not comment his code
- You cannot truly appreciate Dilbert unless you´ve read in the original klingon
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#9

Re: MouseEnter

  Alt 21. Okt 2007, 22:19
mouseevents schaft sowas nicht.
Ich habe fast alles erledigt, wieso ändere ich alles!
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: MouseEnter

  Alt 21. Okt 2007, 22:34
Zitat von taktaky:
Hallo zusammen

der Code von @Flocke
if Form1.ControlAtPos(Form1.ScreenToClient(ptWork), False, True) = Image1 then ... und auch der Code in Demo von Dir @bitsetter funktionieren sehr gut und genau was ich gerne wollte.

Besten Dank!
Man beachte den Schluss vom Satz, funktionierender Code ist schon was feines
Ich konnts mir einfach nicht verkneifen - Sorry
Blackheart
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:16 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