Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-08-2006
elcaracas elcaracas is offline
Miembro
 
Registrado: ene 2005
Posts: 26
Poder: 0
elcaracas Va por buen camino
repeticion de código pulsando un TButton.

Hola me estoy volviendo loco, porque no se como ejecutar un código repetidas veces, hasta que suelte el boton izquierdo del ratón.
he probado con otras clases de botones pero nada...

¿Hay alguien que se apiade de mi?

Gracias
Responder Con Cita
  #2  
Antiguo 21-08-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 12
nemesio Va por buen camino
¿Qué quieres que mientras mantengas el botón presionado se ejecute un código? Se me ocurre que coloques un Timer y que evalue cada cierto tiempo si el botón está presionado, si esto ocurre que haga lo que deseas.

Saludos
Responder Con Cita
  #3  
Antiguo 21-08-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 13
OSKR Va por buen camino
Si el problema es repetir còdigo, q tiene q ver el botòn?
Ademàs del consejo de nemesio...si lo q qieres es durante el movimiento entonces puedes usar el event OnMOuseMOve del control y verificas el paràmetro TShifState...ahí veràs si el mouse se está movimiendo con un botón hundido
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
  #4  
Antiguo 22-08-2006
elcaracas elcaracas is offline
Miembro
 
Registrado: ene 2005
Posts: 26
Poder: 0
elcaracas Va por buen camino
Cita:
Empezado por nemesio
¿Qué quieres que mientras mantengas el botón presionado se ejecute un código? Se me ocurre que coloques un Timer y que evalue cada cierto tiempo si el botón está presionado, si esto ocurre que haga lo que deseas.

Saludos
Si eso funciona. Pero, al igual que si mantienes una tecla pulsada y pones el código dentro de un KeyPress se repite mientras la tienes mantenida, ¿exise alguna forma directa para que te repita el código?.
Lo que hace el programa es dibujar ciertos elementos y con botones ("Flechas") voy desplazando esos objetos por la imágen. pero tengo que pulsar repetidas veces para que se vaya desplazando. Me gustaría que mientras tengo pulsado el botón se vaya ejecutando constantemente.

Gracias
Responder Con Cita
  #5  
Antiguo 22-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.534
Poder: 26
dec Va camino a la famadec Va camino a la fama
Hola,

Bueno. Que yo sepa no existe el evento "OnBetwenUserDontUpKey"... sin embargo, digo que yo que todo puede hacerse... ¿no? Lo que no sé es si quedaría algo elegante, curioso, limpio, usable y efectivo al mismo tiempo.

Quiero decir, que, a bote pronto, se me ocurre algo como esto...

Código Delphi [-]
unit UfrmPrincipal;

interface

uses
  Forms, StdCtrls, Classes, Controls;

type
  TfrmPrincipal = class(TForm)
    mPruebas: TMemo;
    Button1: TButton;
    btnCerrar: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btnCerrarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  private
    FBotonPulsado: boolean;
  end;

var
  frmPrincipal: TfrmPrincipal;

implementation

{$R *.dfm}

procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
  // Inicialmente...
  FBotonPulsado := false;
end;

procedure TfrmPrincipal.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  // Al cerrarse el formulario...
  FBotonPulsado := false;
end;

procedure TfrmPrincipal.Button1MouseUp(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  // Si se "deja de pulsar" en el botón...
  FBotonPulsado := false;
end;

procedure TfrmPrincipal.Button1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  FBotonPulsado := not FBotonPulsado;
  // Mientras el botón esté "pulsado"...
  while FBotonPulsado do
  begin
    mPruebas.Lines.Append('$');
    Application.ProcessMessages;
  end;
end;

procedure TfrmPrincipal.btnCerrarClick(Sender: TObject);
begin
  Close;
end;

end.
Archivos Adjuntos
Tipo de Archivo: zip ejemplo.zip (1,6 KB, 13 visitas)
__________________
David Esperalta
www.davidesperalta.com

Última edición por dec fecha: 22-08-2006 a las 18:12:26.
Responder Con Cita
  #6  
Antiguo 22-08-2006
elcaracas elcaracas is offline
Miembro
 
Registrado: ene 2005
Posts: 26
Poder: 0
elcaracas Va por buen camino
Muchas gracias
Responder Con Cita
  #7  
Antiguo 22-08-2006
elcaracas elcaracas is offline
Miembro
 
Registrado: ene 2005
Posts: 26
Poder: 0
elcaracas Va por buen camino
Lo he probado en Builder y funciona, aunque solo he utilizado:


Código:
bool apretado;
void __fastcall TForm1::Button2MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
apretado=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
apretado =!apretado;
// Mientras el botón esté "pulsado"...
while (apretado)
{
Memo1->Lines->Add("a");
Application->ProcessMessages();
}
}

Muchas Gracias otra vez
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
buscar dentro de una cadena con repetición jzginez Varios 4 12-05-2006 22:40:18
Repetición en Rave Reports 6.0 paufra Impresión 0 03-06-2005 11:54:19
TButton Humberto Pertuz API de Windows 3 17-12-2003 20:04:13
insertar pulsando + maruenda Varios 1 08-12-2003 20:24:42
Report master/detall falla hay repeticion. kia Impresión 2 19-10-2003 22:24:43


La franja horaria es GMT +2. Ahora son las 09:46:15.


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