Einzelnen Beitrag anzeigen

sir-archimedes

Registriert seit: 2. Jan 2006
Ort: Münster
167 Beiträge
 
Delphi 2006 Professional
 
#6

Re: TComponent "unsichtbar" in eine Form einbauen

  Alt 12. Feb 2006, 16:15
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!
  Mit Zitat antworten Zitat