Wie zu erstellen "Nicht Aktivieren" form, in Firemonkey
In XCode durch das hinzufügen der folgenden Methoden, um Ihre NSView subclass kann verhindern, dass das Fenster immer aktiv sein, wenn Sie auf ihn klicken:
- (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent )theEvent {
return YES;
}
- (BOOL)acceptsFirstMouse:(NSEvent )theEvent {
return YES;
}
- (void)mouseDown:(NSEvent )theEvent {
[[[NSApp]] preventWindowOrdering];
}
In der Windows-Plattform, Es ist getan, indem Sie diesem einfachen code:
HWND hWnd = FindWindowW((String("FM") + fmxForm->ClassName()).c_str(),
fmxForm->Caption.c_str());
SetWindowLong(hWnd, GWL_EXSTYLE,
GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_NOACTIVATE);
Wie kann ich NSView subclass um zu verhindern, dass meine FMX TForm immer aktiv, wenn Sie auf ihn klicken?
Wie kann ich schaffen "Nicht Aktivieren" form, in firemonkey?
- Nicht sicher, ob es gilt für Firemonkey, wie gut, oder wenn Sie die Antwort auf Ihre Frage richtig, aber möchten Sie vielleicht einen Blick auf dieses Beispiel: delphi.about.com/od/delphitips2008/qt/ex_noactivate.htm
- Danke, aber es ist nur für Windows und die einfachere Möglichkeit ist meine oben beschriebene Lösung von "SetWindowLong", Die Frage ist, über MacOS.
- Link: stackoverflow.com/questions/9048346/...
- Devon: Wie dieser link könnte mir helfen?
- Dank der WBAR, es ist die zweite bounty!
- Kein problem, aber immer noch können Sie nicht eine Antwort bekommen :/
- Fügen Sie Ihren code in einen timer - so bleibt das Fenster immer deaktiviert - hoffe das ist für firemonkey!
- Ich verlangte ein neues feature auf QualityCentral, bitte bewerten Sie es:qc.embarcadero.com/wc/qcmain.aspx?d=116611
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich, mit NSPanel mit NSNonactivatingPanelMask Flagge. Die NSView der fmx-form sollte Kind NSPanel. Ich habe geschrieben eine Helfer-Klasse, die funktioniert sowohl für Windows-und Mac-Plattformen (Funktioniert auf XE4):
Verwendung der oben genannten Einheit:
Wenn frmKeyboard ist Ihre Wichtigste Form dann nicht über code im Formular-Konstruktor, Es wird empfohlen, um es in OnShow.
Hinweis: WindowHandleToPlatform scheint nicht zu existieren, in XE3, so dass die Linie kann ersetzt werden durch
Können Sie schalten Sie die Formulare, Maus-handling, um zu verhindern, dass es fokussiert ist. Vorausgesetzt, das Formular myform:
Es ist ein leichtes problem in, dass es gar nicht aufhören mit dem rechten Mausklick. Wenn das ein problem ist, werden Sie reagieren müssen das mousedown-Ereignis im Formular, und nennen Sie die wichtigsten Formen mousedown, so dass es nicht verlieren, das mouse-Ereignis. Da die Rechte Maus gedrückt wird, und nehmen Sie dann die Maus-Ereignisse aus, die Sie auch dann reagieren müssen, um die Maus bewegen und die Maus, Veranstaltungen zu - Weiterleitung auf Ihrem Haupt-form. Obwohl es fängt die Maus auf der rechten Maustaste, wird es noch nicht den Fokus des Formulars.
Dave Peters
DP Software