Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-11-2013
Toni-2006 Toni-2006 is offline
Miembro
 
Registrado: ene 2007
Posts: 11
Poder: 0
Toni-2006 Va por buen camino
Smile Hacer que aparezca el PopUpMenu encima del elemento seleccionado

Hola a todos.

Tengo un PopUpMenu dentro de un FileListBox que se activa siempre y cuando haya seleccionado un elemento del FileListBox (sin MultiSelect). El problema es que no se hacer que aparezca el PopUpMenu encima del elemento seleccionado y no en la posición donde esté el cursor.

Muchas gracias y un saludo.
Responder Con Cita
  #2  
Antiguo 26-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 Toni-2006.

Se me ocurre que podrías hacer:
Código Delphi [-]
// Desactivar selección múltiple y desasociar popupmenu
procedure TForm1.FormCreate(Sender: TObject);
begin
  with FileListBox1 do
  begin
    MultiSelect:= False;
    PopupMenu  := nil;
  end;
end;;

// Obtener el ítem seleccionado
function SelectedItemIndex(FLB: TFileListBox): Integer;
var
  i: Integer;
begin
  Result:= -1;
  for i:= 0 to FLB.Items.Count-1 do
   if FLB.Selected[i] then
   begin
     Result:= i;
     Exit;
   end;
end;

procedure TForm1.FileListBox1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  P : TPoint;
  SI: Integer;
begin
  SI :=  SelectedItemIndex(FileListBox1);
  if (ssRight in Shift) and (SI <> -1) then
  begin
    P.X:= FileListBox1.Left + X;
    P.Y:= FileListBox1.Top + SI * FileListBox1.ItemHeight + FileListBox1.ItemHeight;
    P  := ClientToScreen(P);
    PopupMenu1.Popup(P.X, P.Y);
  end;
end;

Otra opción es usar el evento OnMouseMove para que el ítem quede seleccionado cuando el mouse pasa por encima:
Código Delphi [-]
procedure TForm1.FileListBox1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  with Sender as TFileListBox do
   ItemIndex := ItemAtPos(Point(x,y), True);
end;
Pero de este modo no se seleccióna el ítem mediante el clíck del mouse...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 27-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Toni-2006,

Cita:
Empezado por Toni-2006
...no se hacer que aparezca el PopUpMenu encima del elemento seleccionado y no en la posición donde esté el cursor...
Esta es una variante del código sugerido en el Msg #2:
Código Delphi [-]
procedure TForm1.FileListBox1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
   P : TPoint;
   SI: Integer;
begin
   SI :=  SelectedItemIndex(FileListBox1);
   if (ssRight in Shift) and (SI <> -1) then
   begin
      P.X:= FileListBox1.Width - FileListBox1.Left + 40;
      // Popup Menu Sobre el Item Seleccionado
      P.Y:= FileListBox1.Top + SI * FileListBox1.ItemHeight - 50;
      P  := ClientToScreen(P);
      PopupMenu1.Popup(P.X, P.Y);
   end;
end;
El código anterior muestra un TPopupMenu sobre un Item seleccionado en un TFileListBox como se muestra en la siguiente imagen:



Espero sea útil

Nelson.
Responder Con Cita
  #4  
Antiguo 27-11-2013
Toni-2006 Toni-2006 is offline
Miembro
 
Registrado: ene 2007
Posts: 11
Poder: 0
Toni-2006 Va por buen camino
Mucha gracias, me quedo con la opción del OnMouseMove. Es la ideal para mi.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Elemento seleccionado de un ListBox Tecnic2 OOP 12 22-05-2007 11:39:18
Ültimo elemento seleccionado en un combobox verodelphi Lazarus, FreePascal, Kylix, etc. 3 27-11-2006 14:44:47
Saber el elemento seleccionado en un treeview Manuel Varios 3 23-10-2006 18:25:31
Elemento seleccionado en un ComboBox verodelphi Lazarus, FreePascal, Kylix, etc. 2 25-09-2006 14:53:04
Elemento seleccionado de un ListView Tecnic2 OOP 4 09-06-2005 16:09:29


La franja horaria es GMT +2. Ahora son las 06:01:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi