AGB  ·  Datenschutz  ·  Impressum  







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

Anwendung von PtInRegion()

Ein Thema von luckystar85 · begonnen am 17. Apr 2007 · letzter Beitrag vom 17. Apr 2007
Antwort Antwort
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#1

Anwendung von PtInRegion()

  Alt 17. Apr 2007, 10:35
Hey,

ich habe ein Problem bei der Anwendung von PtInRegion. Mein Programm besteht aus einer MainForm, auf dieser MainForm sind dann verschiedene Forms drauf und ausgerichtet (Menü, Buttonbar, Arbeitsfläche). Die Arbeitsfläche macht etwa 2/3 der gesamten MainForm aus. Auf dieser Arbeitsfläche kann nun auch eine zusätzliche Form eingeblendet werden, die detailierte Informationen ausgibt. Diese Form ist Enabled := False und wird nur unter bestimmten Bedingungen aktiviert. Das besondere an dieser Form ist, dass sie nicht rechteckig ist, sondern ein Polygon. Wenn ich mit dem Cursor über den Arbeitsbereich gehe dann bekommt diese eine bestimmte Form. Da die meine Polygon-Form nun nicht Enabled ist, wird wenn ich mit der Maus darüber gehe auf der Form kein MouseMove-Event ausgelöst sondern von der Form darunter. Aber ich bin ja mit dem Cursor auf der Polygon-Form. Durch das Auslösen des MouseMove-Event wird nun der Cursor auch auf meiner Polygon-Form gesetzt. Das ist aber nicht richtig so, denn die soll den normalen Cursor haben.
Ich dachte mir dazu, dass ich nun einfach im MouseMove des Arbeitsbereiches ein
If ( PtInRegion(fForm.Handle, X, Y) Then stelle und dann den Cursor setze. Aber die Abfrage ergibt immer False. Ich habe auch schon die Koordinaten vorher mit fForm.ScreenToSclient auf die Koordinaten der Form konvertiert. Dies bringt aber auch keinen Erfolg. Habt ihr Erfahrungen mit PtInRegion über mehrere Forms hinweg?

P.S. Das, dass Konzept mit den mehreren Forms nicht gerade das beste ist weiß ich. Frames wären dort wahrscheinlich besser.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Anwendung von PtInRegion()

  Alt 17. Apr 2007, 12:02
Hallo Michael,

die Windows-Funktion PtInRegion() erwartet ein Handle einer Region, du übergibst ihr aber das Fenster-Handle des Formulars. Ich vermute, daß dies der Grund für den unerwarteten Rückgabewert ist. Erzeuge dir aus den Polygondaten deiner Form mit MSDN-Library durchsuchenCreatePolygonRgn eine gültige Region und versuche es damit.

Gruß Hawkeye
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Anwendung von PtInRegion()

  Alt 17. Apr 2007, 12:51
Vielen Dank für den Hinweis. Meine Form besteht ja aus der Region. Ich erzeuge meine Region mit Region1 := CreateRectRGN(0, 0, Bmp.Width, Bmp.Height); . Anschließend entferne ich einige Pixel aus der Region mit CombineRGN(Region1, Region1, Excl, RGN_DIFF); damit sie gewünschte Form bekommt. Nun weiße ich die Region meiner Form zu mit SetWindowRGN(Handle, Region1, True); . Ich habe jetzt als Parameter für meine PtInRegion-Abfrage Region1 verwendet.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  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 00:18 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