Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
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 18-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Gracias Amilius

Verás, intenté algo similar usado una variable booleana:

Código:
if not MenuAbierto then
begin
  MenuAbierto := true;
  PopupMenu.Popup(...);
  MenuAbierto := false;
end;
pero el problema es que para cuando vuelvo a hacer click en el botón, el Popup ya terminó y por tanto MenuAbierto vuelve a false.

// Saludos
Responder Con Cita
  #2  
Antiguo 13-12-2005
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 22
Ohcan Va por buen camino
Ya sé que es un hilo un poco antiguo, pero me he topado con él buscando sobre algo parecido a lo que plantea Roman... y yo lo tengo resuelto (creo).

Si tenemos un formulario (wPrincipal), un SpeedButton (btPruebas) y un PopupMenu (pmPruebas) al que le he añadido un par de Items..
Código Delphi [-]
//OnClick del botón
procedure TwPrincipal.btPruebaClick(Sender: TObject); 
var
  Punto:TPoint;
begin
  if btPrueba.Down then
    begin
      GetCursorPos(Punto);
      pmPrueba.Popup(Punto.X,Punto.Y);
      btPrueba.Down := False;
    end;
end;

//Se lo asigno al OnClick de ambos Items:
procedure TwPrincipal.ItemA1Click(Sender: TObject); 
begin
  //Sólo para que hagan algo
  ShowMessage('Item: ' + TComponent(Sender).Name);
  //Aquí puede ponerse btPrueba.Down := False; para que no se levante ...
end;

Creo que esto es lo que se busca...

Yo, partiendo de aquí, tengo otro problemilla... pero primero intentaré buscar (¡lo que se aprende buscando!) y si no consigo nada ya postearé un hilo para buscar ayuda
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
Responder Con Cita
  #3  
Antiguo 13-12-2005
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 22
Ohcan Va por buen camino
Wink

Bueno, pues ya está :
Código Delphi [-]
//OnClick del botón
procedure TwPrincipal.btPruebaClick(Sender: TObject); 
var
  Punto:TPoint;
begin
  if btPrueba.Down then
    begin
      GetCursorPos(Punto);
      pmPrueba.Popup(Punto.X,Punto.Y);
      Application.ProcessMessages; //Esto me faltaba
      btPrueba.Down := False; //Por si no selecciono nada del menu
    end;
end;

//Se lo asigno al OnClick de ambos Items:
procedure TwPrincipal.ItemA1Click(Sender: TObject); 
begin
  //Sólo para que hagan algo
  ShowMessage('Item: ' + TComponent(Sender).Name);
  //Aquí puede ponerse btPrueba.Down := False; 
  //para que no se levante ... o no hacerlo y así quedrá pulsado
  //mientras vemos el mensaje y se levantará al aceptarlo
end;
¿Porqué todo esto?
Tenía, como Román, un SpeedButton que me despliega un Popup y lo que quería: si no se seleccionaba nada en el menú, levantar el botón. Y si se seleccionaba algo que saliera un formulario pero que se viera que el botón seguía abajo...
Al principio, sin el ProcessMessages, puse un btPrueba.Down := False antes del ShowMessage del click del menu, pero eso causaba que se viera al botón levantarse y volverse a presionar... y no me gustaba.

Pues esa es la historia... espero que no haya aburrido a nadie

Saludos,
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
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


La franja horaria es GMT +2. Ahora son las 16:53:22.


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