Zitat von
SirThornberry:
ist doch klar, schließlich schreibst du:
TApplicationEvents.Create(Self);
übergib als owner "nil" und schon trägt es sich nicht in die Components-List des Forms ein.
Oh ja, tatsächlich - das wars... Manchmal ist man einfach blind
Zitat von
SirThornberry:
im übrigen würde ich dir eher die messagehandler per extra-methode empfehlen da dein Application-Events auch die messages von anderen Forms abfängt. Wenn du also zwei von deinen forms nutzt wertest du die messages wohlmöglich doppelt aus. Richtiger wäre es doch aber wenn du wirklich nur die messages für das form auswertest oder nicht?
Stimmt schon - aber ich möchte eine Form quasi komplett sperren, um ein "modales
MDI-Fenster" zu erstellen. Das heißt, dass alle Klicks - auch auf Children der Form - geschluckt werden sollen und das modale
MDI-Fenster wieder aktiviert wird. Das mache ich so:
Delphi-Quellcode:
procedure TInstantiableForm.AppMessagesOnMessage(var Msg: tagMSG;
var Handled: Boolean);
var
Ctrl : TWinControl;
begin
if csDesigning in ComponentState then
exit;
if Assigned(RelativeModalForm) then
begin
if ((Msg.message >= WM_LBUTTONDOWN) AND (Msg.message <= WM_MOUSELAST)) then
begin
Ctrl := FindControl(Msg.hwnd);
while Assigned(Ctrl) do
begin
if Ctrl = Self then
begin
RelativeModalForm.BringToFront;
Handled := true;
Break;
end;
Ctrl := Ctrl.Parent;
end;
end;
end;
end;
Da sieht man auch, dass ich tatsächlich nur Messages an meine Form behandle
Hab es jetzt auf jeden Fall wie gewünscht am Laufen =)
Danke!