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

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 02-11-2010
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 cocute.

La lista que se despliega en un Combo/List Box es una ventana diferente que la que maneja windows para el Combo/List Box.
Según entiendo, la lista deriva de TCustomListControl, clase base que aprovechan TComboBox, TListBox, etc. y no implementa
eventos. Desde el ComboBox, al menos yo, no veo manera de acceder.

Despues de muchas pruebas logré que la maldita lista del PopupMenu apareciera y se quedara quieta hasta que se elija algo del
Menu. No probé el código exaustivamente, así que te recomiendo que lo hagas hasta que te salte el primer error... .

Bueno, quizá te dé alguna idea o te sirva de base para mejorarlo:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    PopupMenu1: TPopupMenu;
    UNO1: TMenuItem;
    DOS1: TMenuItem;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1DropDown(Sender: TObject);
    procedure ComboBox1CloseUp(Sender: TObject);
    procedure UNO1Click(Sender: TObject);
    procedure DOS1Click(Sender: TObject);
  private
    FRect: TRect;        // Area de lista desplegada
    FComboOpen: Boolean; // CloseUp On/Off
    FItemIndex: Integer; // ItemIndex del ComboBox
    procedure MouseEvent(var Msg: TMsg; var Handled: Boolean);
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

(* Evento Mouse *)
procedure TForm1.MouseEvent(var Msg: TMsg; var Handled: Boolean);
var
  P: TPoint;
begin
  FComboOpen:= False;  // Activar CloseUp
  if Msg.message = WM_RBUTTONDOWN  then
  begin
     P:= Mouse.CursorPos;   // Obtener posición del mouse
     if (P.X >= FRect.Left)and(P.Y >= FRect.Top)and
        (p.X <= FRect.Right)and(P.Y <= FRect.Bottom) then
        begin
          FComboOpen:= True;  // Cancelar CloseUp
          with ComboBox1 do
          begin
            FItemIndex:= ItemIndex;  // Obtener índice
            Text:= Items[ItemIndex]; // Copiar seleccionado
          end;
          PopupMenu1.Popup(FRect.Right, FRect.Bottom);
        end
  end;
end;

(* FormCreate *)
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage:= MouseEvent; // Asignar evento
end;

(* Obtener Area de la lista *)
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
  P: TPoint;
begin
  P:= ClientToScreen(ComboBox1.ClientOrigin);
  with ComboBox1 do
  begin
    // Obtener Esquina sup. izquierda
    FRect.Left:= ClientOrigin.X;
    FRect.Top:=  ClientOrigin.Y + Height;
    // Obtener Esquina inf. derecha;
    FRect.Right:= ClientOrigin.X + Width;
    FRect.Bottom:= ClientOrigin.Y + Height*(DropDownCount-2); 
  end;
end;

(* Habilitar/deshabilitar CloseUp *)
procedure TForm1.ComboBox1CloseUp(Sender: TObject);
begin
  SendMessage(ComboBox1.handle,CB_SHOWDROPDOWN,Integer(FComboOpen), 0);
end;

(* MenuItem 'UNO' OnClick *)
procedure TForm1.UNO1Click(Sender: TObject);
begin
   with ComboBox1 do
    Edit1.Text:= Items[FItemIndex];
end;

(* MenuItem 'DOS' OnClick *)
procedure TForm1.DOS1Click(Sender: TObject);
begin
  with ComboBox1 do
    Memo1.Lines.Add(Items[FItemIndex]);
end;
...

Espero que te sirva.

Saludos.

Última edición por ecfisa fecha: 02-11-2010 a las 07:20:58.
Responder Con Cita
 


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
Genero comboBox en dbgrid y cuando hago dos veces click desaparece el comboBox. mcalmanovici Varios 1 29-02-2012 15:09:15
El PopupMenu skinnerpro OOP 4 16-10-2007 01:47:30
Delphi For PHP: popupmenu ¿funciona? maro PHP 1 04-10-2007 17:32:45
como mostrar la ventana de lenar inten de un combobox en tiempo de un combobox gulder Varios 3 19-05-2007 19:55:58
popupMenu jorodgar Varios 7 20-04-2005 17:16:22


La franja horaria es GMT +2. Ahora son las 19:46:32.


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