Ver Mensaje Individual
  #4  
Antiguo 28-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Neeruu.

Una forma de hacer lo que buscas podría ser esta:

Form que invoca:
Código Delphi [-]
...
implementation
uses Unit2;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
                 Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbRight then  // Botón derecho
    TForm2.PopUp(ActiveControl.Left,ActiveControl.Top); // Mostrar ventana contextual
end;

procedure TForm1.FormClick(Sender: TObject);
begin
  if Assigned(Form2) then
    Form2.Close;  // Cerrar ventana contextual
end;

Form contextual:
Código Delphi [-]
...
implementation


class procedure TForm2.PopUp(ALeft,ATop: Integer);
begin
  if not Assigned(Form2) then
  begin
    Form2:= TForm2.Create(nil);
    with Form2 do
    begin
      FormStyle:= fsNormal;
      BorderIcons:=[];
      BorderStyle:= bsSingle;
    end;
    Form2.Left:= Form2.Left + ALeft;
    Form2.Top:= Form2.Top + ATop;
  end;
  Form2.Show;
end;

....

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
   Form2:= nil;
end;
Pero no se comporta como un TPopupMenu ya que no se puede asignar a un control determinado y sólo responde a los eventos OnMouseDown y OnClick
del form invocante...

Tal vez te sirva de base para elaborar alguna otra idea...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 28-05-2011 a las 21:39:40.
Responder Con Cita