Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pequeña inquietud sobre los popup menues (https://www.clubdelphi.com/foros/showthread.php?t=28912)

federiconqn21 06-01-2006 13:40:15

Pequeña inquietud sobre los popup menues
 
Hola a Todos:quisiera manifestar una inquietud,a ver quien me la podria responder.
estoy trabajando con una listbox y un popup menu.la idea es que con el popup menu,al hacer click derecho sobre un elemento de la lista,se despliegue mostrandome distintas operaciones a realizar como por ejemplo eliminar un elemento,renombrarlo,etc.
hasta aca todo bien,el tema es que para que haga click derecho sobre un elemento de la lista,primero deberia estar seleccionado ese elemento(con click izquierdo),porque con el click derecho no se selecciona(solo abre el popup menu) y si no hay elemento alguno de la lista seleccionado,me aparecera un error que me dice que el indice esta fuera de rango,o algo asi.Quisiera saber como hacer para que en el mismo click derecho,se desplieque el popup menu y se seleccione el item de mi lista.Gracias a quien me pueda ayudar
Salu2

dec 06-01-2006 14:40:59

Hola,

Lo que puedes hacer es aprovechar el evento "OnPopup" del menú. Ese evento se dispara justo antes de mostrarse el menú, con lo cual puedes verificar que existe algún elemento seleccionado en la lista, por ejemplo, de tal manera que actualizes los items del menú que sean menester: habilitándolos o no según se precise.

También podrías hacer uso del componente "TActionList". Puedes asociar items del menú a diferentes "TActions", con la particularidad de que estas acciones cuentan con un evento "OnUpdate" e incluso con una propiedad "Enabled": habilitando una acción estarás habilitando el item del menú correspondiente, y viceversa.

federiconqn21 06-01-2006 15:36:27

hola,lei atentamente tu respuesta,
quisiera saber como verifico que un elemento este seleccionado cuando se dispara el evento onpopup.La idea es que si dispono de una lista de n elementos,cualquier elemento en el que hago click derecho se debe seleccionar y mostrar el popup menu.

roman 06-01-2006 18:54:32

Creo que esto te puede funcionar. En el evento OnMouseDown del ListBox pones:

Código Delphi [-]
var
  Pt: TPoint;
  Index: Integer;

begin
  // Determinar si es el botón derecho
  if Button = mbRight then
  begin
    // Buscar el índice del elemento bajo el cursor del ratón
    Pt := Point(X, Y);
    Index := ListBox1.ItemAtPos(Pt, true);

    // Si hay elemento bajo el cursor...
    if Index <> -1 then
    begin
      // Seleccionarlo
      ListBox1.ItemIndex := Index;

      // y mostrar el menú
      Pt := ListBox1.ClientToScreen(Pt);
      PopupMenu1.Popup(Pt.X, Pt.Y);
    end;
  end;
end;

// Saludos


La franja horaria es GMT +2. Ahora son las 08:35:45.

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