Einzelnen Beitrag anzeigen

gkoeder

Registriert seit: 15. Jun 2004
84 Beiträge
 
Delphi 2010 Professional
 
#4

Re: tForm ähnlich wie ein "Popup-Menü" verwenden

  Alt 30. Dez 2004, 10:23
Hab' die Idee gerade getestet. Leider bringt das nicht das gewünschte Ergebnis. Zum einen bekomme ich einen Stack-Overflow nach kurzer Zeit und da das zweite Fenster mit 'Show' aufgerufen wird, rennt die aufrufende Routine munter weiter und wartet nicht, bis ein Rückgabewert kommt.

Zitat von Joe24:
Wenn du die Methode MouseMove des "PopupForm" der folgenden
überschreibst, schließt das "PopupForm" beim Klicken außerhalb
dessen Clientrect.
Das "PopupForm"(Form2) mit Form2.Show aufrufen.

Delphi-Quellcode:
procedure TForm2.MouseMove( Shift : TShiftState; X, Y : Integer);
begin
  if ( ( ssLeft in Shift) or
       ( ssRight in Shift) or
       ( ssMiddle in Shift) or
       ( ssDouble in Shift)) and
     not PtInRect( ClientRect, Point( X, Y)) then
    begin
      SetCaptureControl( nil);
      Close;
    end;
  inherited MouseMove( Shift, X, Y);
end;

procedure TForm2.MouseUp( Button : TMouseButton; Shift : TShiftState; X, Y : Integer);
begin
  if GetCaptureControl = nil then
    SetCaptureControl( self);
  inherited MouseUp( Button, Shift, X, Y);
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  SetCaptureControl( self);
end;
  Mit Zitat antworten Zitat