2009-06-09 10 views
2

Dies ist eine Folge bis How can I get the Delphi IDE's Main Form?, die ich jetzt habe arbeiten.Wie kann ich feststellen, auf welchem ​​Monitor sich der Delphi IDE Object Inspector befindet?

Ich möchte noch einen Schritt weiter gehen und meinen Designer in das Formular des Objektinspektors stellen, für diejenigen, die das klassische undocked Desktop-Layout verwenden und den Objektinspektor möglicherweise auf einem anderen Bildschirm haben als die Delphi-IDE bilden.

Irgendwelche Ideen, wie ich den Object Inspector in meinem Design-Zeitpaket finde?

Antwort

5

sollte diese Arbeit, ob die Eigenschaft Inspektor verankert ist oder nicht, da es zurück zum Hauptformular für angedockten Fall fällt:

function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): Integer; stdcall; 
var 
    ClassName: string; 
    PID: Cardinal; 
begin 
    Result := 1; 
    GetWindowThreadProcessId(hwnd, PID); 
    if PID = GetCurrentProcessId then 
    begin 
    SetLength(ClassName, 64); 
    SetLength(ClassName, GetClassName(hwnd, PChar(ClassName), Length(ClassName))); 
    if ClassName = 'TPropertyInspector' then 
    begin 
     PHandle(lParam)^ := hwnd; 
     Result := 0; 
    end; 
    end; 
end; 

function GetPropertyInspectorMonitor: TMonitor; 
var 
    hPropInsp: HWND; 
begin 
    hPropInsp := 0; 
    EnumWindows(@EnumWindowsProc, LPARAM(@hPropInsp)); 
    if hPropInsp = 0 then 
    hPropInsp := Application.MainFormHandle; 
    Result := Screen.MonitorFromWindow(hPropInsp); 
end; 
+0

Dank. Was ist IDEForm in diesem Zusammenhang? Ich kenne den Namen nicht oder habe Zugriff auf das Objektinspektor-Handle. Das ist die Basis meiner Frage, wie man den Objektinspektor handhabt. –

+0

Entschuldigung, ich habe Ihre Nachricht ein bisschen zu schnell überflogen. Bearbeitet mit dem richtigen Code, der den Eigenschafteninspektor findet, wenn er schwebt und auf das Hauptformular zurückfällt, wenn es angedockt ist. –

+0

Dank Craig, das funktioniert gut. Im Interesse, einen Mann zum Fischen zu bringen ... :) Mich interessiert, wie du herausgefunden hast, dass der Klassenname TPropertyInspector war. Haben Sie einen Windows-Nachrichtenspion verwendet, um den Namen der Klasse zu finden? –

Verwandte Themen