Announcement

Collapse
No announcement yet.

Modal, nicht Modal, daß ist hier die Frage ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Modal, nicht Modal, daß ist hier die Frage ?

    Hallo,<br>
    wie kann man ein Formular, welches nicht Modal über Form.Show gestartet wurde, zur Laufzeit während das Formular angezeigt wird, auf Modal umschalten.<br>
    Dietmar.

  • #2
    überhaupt nicht ! normalerweise

    Hast Du die Sourcen von Forms.pas ? dann schau mal in die Methode ShowModal. Kopiere den Inhalt in Deine neue ShowModal Methode, ändere alles was NICHT funktionieren kann, also lokale Variablenzugriffe etc.

    es müsste dann ungefähr so aussehen:

    <pre>

    function TCustomForm.ShowModal: Integer;

    procedure CloseModal;
    var
    CloseAction: TCloseAction;
    begin
    try
    CloseAction := caNone;
    if CloseQuery then
    begin
    CloseAction := caHide;
    if Assigned(OnClose) then OnClose(Self, CloseAction);
    end;
    case CloseAction of
    caNone: ModalResult := 0;
    caFree: Release;
    end;
    except
    ModalResult := 0;
    Application.HandleException(Self);
    end;
    end;

    var
    WindowList: Pointer;
    SaveCursor: TCursor;
    begin
    CancelDrag;
    if GetCapture <> 0 then SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
    ReleaseCapture;
    SaveCursor := Screen.Cursor;
    Screen.Cursor := crDefault; // oder crArrow ?
    WindowList := DisableTaskWindows(Handle);
    try
    SendMessage(Handle, CM_ACTIVATE, 0, 0);
    ModalResult := 0;
    repeat
    Application.HandleMessage;
    if Application.Terminated then ModalResult := mrCancel else
    if ModalResult <> 0 then CloseModal; // private ?
    until ModalResult <> 0;
    Result := ModalResult;
    SendMessage(Handle, CM_DEACTIVATE, 0, 0);
    finally
    Screen.Cursor := SaveCursor;
    EnableTaskWindows(WindowList);
    end;
    end;

    </pre>

    Aber, FormState enthält kein fsModal !! Kann man mit Tricks auch ändern, ich weiß aber nicht ob das für Dich von Belang ist.

    Gruß Hage

    Comment

    Working...
    X