AGB  ·  Datenschutz  ·  Impressum  







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

Handle einer Komponente zuweisen

Ein Thema von Baeuerle · begonnen am 1. Dez 2005 · letzter Beitrag vom 1. Dez 2005
Antwort Antwort
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#1

Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 12:22
Hallo,

ist es möglich, wenn ich ein Handle habe, und weiss was für eine Komponente dies ist, daraus eine neue Komponente zu machen.

So ungefähr:
MyKomp:=TPanel(Handle);
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 12:41
Nein, da wirst du um die WinAPI nicht drumrumkommen...
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 12:46
Ist ja kein Problem aber WIE ???
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 13:16
Hi,
Delphi-Quellcode:
function GetPanel(Handle: Hwnd): TPanel;
Var
  AControl: TWinControl;
begin
  Result := nil;
  AControl := FindControl(Handle);
  if Assigned(AControl) and (AControl is TPanel) then
    Result := TPanel(AControl);
end;
Das Panel aus dem Handle kannst du erhalten.
Nur, eine neue Komponente kannst du daraus nicht erzeugen. Das musst du schon im Code erledigen. Inwieweit die Methode Assign Einstellungen übernimmt, musst du testen.
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 13:47
Danke,

funktioniert gut.

ABER wenn das Handle aus einer anderen Anwendung kommt ist AControl immer NIL !!!

Hast du auch hierfür eine Lösung parat???
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 13:51
Da hast du etwas verpasst. Die Funktionfunction FindControl( Handle:THandle ):TControl; kann nur DELPHI TCONTROL-s innerhalb einer Delphi Anwendung eventuel finden. (fall es sie gibt). Eine fremde Anwendung muss nicht unbedingt mit Delphi geschieben sein und dann heisst es, es gibt keine TControl-s in deiser Anwendung.

EDIT:
Und wenn es eine Delphi-Anwendung gäbe, würde das auch nicht funktionieren. Das geht nur innerhalb der Anwendung, wo der Procedur "FindControl" aufgerufen wurde.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 13:57
Hmm,

wie soll ich den folgendes Problem sonst lösen.

Ich möchte meine Anwendung über einen Teil einer externen nicht selbst entwickelten Anwendung legen.

Meine Idee war:

1. Handle der Anwendung ermitteln
2. Handle der Komponente ermitteln
3. Prüfen des Komponentennamens <- weiß aber nicht wie ich diesen bekomme NICHT den TEXT, CAPTION ... -> WM_GETTEXT
4. GetWindowRect(HANDLE,r);
5. SetWindowPos(form.handle,....)

Habt Ihr andere Vorschläge ??
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 14:13
Hallo Baeuerle,

bist du sicher, dass du den Komponentennamen suchst? Das ist eine exklusive Eigenschaft der VCL Komponenten. Mir scheint du benötigst eher den Namen der Fensterklasse für das gegebene Handle.

Grüße vom marabu
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 14:18
Meinst du damit ich das Ergebnis "TPanel" oder "TLabel" bekomme?

Ist leider nicht eindeutig, wenn mehrere Panels eingebaut sind, weis ich nicht genau welches Panel ich überlagern soll. Ich muss die Komponente absolut eindeutig indentifizieren
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Handle einer Komponente zuweisen

  Alt 1. Dez 2005, 14:24
Da du die fremde Anwendung nicht programmiert hast, werden dort keine clues für dich zu finden sein. Ich würde es über die Geometrie (Rect) der fremden Anwendung versuchen. Vielleicht ist die Kette der Parents eindeutig oder die Schachtelung oder die siblings. Oder eines der child windows kann über WM_GETTEXT identifiziert werden.

marabu
  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 23:02 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