Einzelnen Beitrag anzeigen

Benutzerbild von Orakel-von-Delphi
Orakel-von-Delphi

Registriert seit: 27. Jan 2004
Ort: Mittelhessen
45 Beiträge
 
Delphi 2007 Professional
 
#15

Solved

  Alt 21. Mai 2012, 12:55
Die ca. 15 - 20 Fremdkomponenten können nicht einfach aus mehreren 100.000 Zeilen Code entfernt werden.

Deshalb habe ich die oben angesprochene Mimik
Code:
.
.

procedure TMain.PopupListWndProc(var Message: TMessage);
begin
  with Message do
  begin
    case Msg of
      WM_ENTERMENULOOP:
        if evPopAvail.WaitFor(0) = wrSignaled then
          begin
           evPopAvail.ResetEvent();
           .
           <Subroutine mit Application.ProcessMessages>
           .
          end
        else
          begin
           Exit;
          end;
      WM_EXITMENULOOP:
        evPopAvail.SetEvent();
    end;
   Result := CallWindowProc(OldPopupListWndProc, PopupList.Window, Msg, WParam, LParam);
  end;
end;

.
.
im Hauptfenster der Applikation implementiert. Seitdem ist das Problem verschwunden. Der TEvent sorgt zusammen mit WM_ENTERMENULOOP und WM_EXITMENULOOP auf jeden Fall sicher dafür, dass nicht aus irgendwelchen Gründen (bspw. Hintergrund-Threads) zwei mal zur gleichen Zeit ein Popup aufgehen kann.
Michael
  Mit Zitat antworten Zitat