AGB  ·  Datenschutz  ·  Impressum  







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

Fenster/Komponente über Handle bekommen

Ein Thema von S - tefano · begonnen am 4. Sep 2003 · letzter Beitrag vom 4. Sep 2003
Antwort Antwort
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#1

Fenster/Komponente über Handle bekommen

  Alt 4. Sep 2003, 02:15
Hi,

im OnHint meines ApplicationEvents möchte ich Text in eine Statusbar schreiben.
Dazu will ich wissen welche Komponente "gehintet" werden soll, wo also der Cursor gerade steht. Ich habe mir eine Funktion gemacht, mit der ich das Handle der Komponente bekommen kann.
Nicht direkt lang und kompliziert, aber so sieht sie aus:

Delphi-Quellcode:
function TForm1.CompoUnderMouse: HWND;
var
  p: TPoint;
begin
  getcursorpos(p);
  result:= windowfrompoint(p);
end;
So, jetzt prüfe ich die Komponenten für die ich Text anzeigen will nacheinander ab, ob sie das selbe Handle haben. Soweit kein Problem, so bei Edits, Comboboxen, Memos etc.
Aber diese verfluchten Speedbuttons... die Dinger haben (jedenfalls bei mir...) einfach keine Handle- Eigenschaft auf die ich zugreifen kann! Arg!
Kann ja eigentlich nicht sein, dass ein Button kein Handle hat. Problem dabei ist, dass der Speedbutton laut deklaration garkein Button ist...

Naja, jedenfalls hab ich zum Probieren mir mal das Ergebnis obiger Funktion als Messagebox anzeigen lassen. Und siehe da, fahre ich über den Speedbutton und löse die Funktion aus, bekomme ich tatsächlich einen Wert, einen Handle hat der Speedbutton (oder evtl. eins seiner "Mutterobjekte" von denen/von dem er abgeleitet wurde?) also doch. Habe mir dann zur Sicherheit dabei noch das Handle des Speedbutton.Parent anzeigen lassen, ist ein anderer Wert. Das Handle des ParentFensters "leuchtet" also nicht durch.
Aber wie kann ich jetzt herausfinden, dass der Wert den ich bekommen habe zum entsprechenden Speedbutton gehört, so ganz ohne Handle- Eigenschaft?

Ich hatte mir da überlegt anstatt jedes Handle einzeln zu überprüfen, vielleicht lieber ne Funktion à la Findwindow zu suchen, die einem anstatt anhand der Caption das jeweilige Handle, lieber anhand des Handles das entsprechende Objekt selbst zu übergeben.

Leider habe ich keine Idee, wie so eine Funktion heißen könnte, und in den verwandten Themen von Findwindow hab ich nichts gefunden, was mir weiterzuhelfen schien.

Gibt es so eine Funktion? Kennt jemand eine Möglichkeit das Handle eines Speedbuttons herauszubekommen? Oder gibts nen anderen Weg (außer dem, die Cursor Position mit der Position und Größe des Speedbuttons zu vergleichen)?

Danke schonmal,

S - tefano

Nachtrag: Hab gerade FindControl gefunden, übergebe ich der Funktion das Ergebnis von CompoUnderMouse während die Maus auf dem Speedbutton steht, liefert mir FindControl aber Form1... ist der Speedbutton kein "Derivat" (wenn mans denn so nennt) von TWinControl?
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Fenster/Komponente über Handle bekommen

  Alt 4. Sep 2003, 02:34
Der Speed-Button ist wohl von TGraphicControl abgeleitet und besitzt somit kein Handle. Was du da bekommst, weiß ich auch nicht.

Leider kann ich dir da im Moment auch nicht helfen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: Fenster/Komponente über Handle bekommen

  Alt 4. Sep 2003, 11:19
probier FindDragTarget().

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Fenster/Komponente über Handle bekommen

  Alt 4. Sep 2003, 14:30
Hey, cool - funktioniert!
Jetz kann ich das zwar nicht mit Handles vergleichen, aber geht ja wunderbar über den Namen des Controls das ich zurückbekomme.

Dankeschön!

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  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 14:52 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