Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 01-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Pon un label en un Form y un Memo, pega este código.
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Memo1: TMemo;
    procedure Label1Click(Sender: TObject);
    procedure Label1DblClick(Sender: TObject);
    procedure FormDblClick(Sender: TObject);
    procedure FormClick(Sender: TObject);
  private
    { Private declarations }
   old,now:Int64;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Label1Click(Sender: TObject);
begin
   now := GetTickCount;
  if now - old > GetDoubleClickTime then
  begin
   Memo1.lines.Add('uno');
  end;
  Memo1.lines.Add(IntToStr(now)+ ' ' +IntToStr(old)+' DIF ' +
 IntToStr(now-old)+ ' gettick ' + IntToStr(GetDoubleClickTime));
  old :=  GetTickCount;

end;

procedure TForm1.Label1DblClick(Sender: TObject);
begin
   Memo1.lines.Add('dos');
   old:= GetTickCount;
end;

procedure TForm1.FormDblClick(Sender: TObject);
begin
  Memo1.Lines.Add('compuesto')
end;

procedure TForm1.FormClick(Sender: TObject);
begin
Memo1.Lines.Add('simple')
end;

end.
La verdad es que GetDoubleClickTime es de 500 por tanto, si tardas en hacer el doble clic más de 500 milisegundos, el evento Onclic tambien se activará.

El problema no es tuyo, es de la VCL o de windows, de hecho, si haces un Doble clic en el Form verás que sale 'Simple' y 'Compuesto' es decir, ha detectado el clic y el doble clic, cuando solo debería coger el doble clic.

Modificando en el panel de control de windows la rapidez del doble clic puedes variar desde 200 hasta 900 (muy poco márgen). Podrías usar en tu aplicación SetDoubleClickTime(intervalo en milisegundos) Pero afectaría a todo windows, y al ser un componente.... no lo creo conveniente.

Tambien puedes chequear cuando entra el foco en tu componente, modificar el tiempo de doble clic y al perder el foco ponerlo todo como estaba .... tú verás si es posible.


Conclusión rápida: No se puede
Conclusión Exhaustiva: Varios días de prueba y error y con suerte lo sacas

Saludos
Responder Con Cita
 



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 22:09:00.


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