Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   En que objeto está parado el mouse? (https://www.clubdelphi.com/foros/showthread.php?t=13051)

Chelo 05-08-2004 02:57:16

En que objeto está parado el mouse?
 
Hola gente del foro.

A lo mejor Uds. me puedan ayudar....
Necesito saber como hacer para conocer sobre que componente (que los creará el usuario...por ejemplo un Tedit) está parado el mouse?
Esto lo pregunto por que necesito crear y borrar objetos del tipo Tedit y no sé como hacer para saber sobre cual está parado.

Desde ya muchas gracias.
Marcelo

jachguate 05-08-2004 03:26:33

No se como pretendes crear/borrar los componentes.. pero ciñendome a tu pregunta, te recomiendo la lectura de la ayuda sobre el método TWinControl.ControlAtPos.

Esto es aplicable para la forma, o el contenedor (parent) de cualquier control. Por ejemplo, un panel, o un ScrollBox.

Hasta luego.

;)

Neftali [Germán.Estévez] 05-08-2004 12:33:04

Cita:

Empezado por Chelo
Necesito saber como hacer para conocer sobre que componente (que los creará el usuario...por ejemplo un Tedit) está parado el mouse?
Esto lo pregunto por que necesito crear y borrar objetos del tipo Tedit y no sé como hacer para saber sobre cual está parado.

Supongo que lo que deseas hacer es que el usuario pueda borrar componentes igual que se hace en diseño (IDE de Delphi), por lo tanto supongo que cuando dices que el ratón está "parado" entiendo que es cuando el usuario selecciona un clontrol (hace un click sobre él).
Creo que en ese caso deberías intentar "cazar" los eventos de ratón sobre los componentes.
Por ejemplo al crear los componentes en runtime, "enganchas/capturas" uno de los eventos del componente (mouseDown, por ejemplo) a una rutina que te permita manejar la selección de éstos componentes (uno o varios y que por ejemplo los distinga de los no-seleccionados);

No se si me he explicado del todo bien, si no queda claro ya dirás...

Chelo 07-08-2004 23:10:31

Cita:

Empezado por Neftali
Supongo que lo que deseas hacer es que el usuario pueda borrar componentes igual que se hace en diseño (IDE de Delphi), por lo tanto supongo que cuando dices que el ratón está "parado" entiendo que es cuando el usuario selecciona un clontrol (hace un click sobre él).
Creo que en ese caso deberías intentar "cazar" los eventos de ratón sobre los componentes.
Por ejemplo al crear los componentes en runtime, "enganchas/capturas" uno de los eventos del componente (mouseDown, por ejemplo) a una rutina que te permita manejar la selección de éstos componentes (uno o varios y que por ejemplo los distinga de los no-seleccionados);

No se si me he explicado del todo bien, si no queda claro ya dirás...

Exactamente lo que quiero hacer es que el usr pueda crear tantos Tedit como quiera y si se le ocurre borrar alguno que lo pueda hacer activándolo y apretando en un botón.

Chelo 07-08-2004 23:11:32

Cita:

Empezado por Neftali
Supongo que lo que deseas hacer es que el usuario pueda borrar componentes igual que se hace en diseño (IDE de Delphi), por lo tanto supongo que cuando dices que el ratón está "parado" entiendo que es cuando el usuario selecciona un clontrol (hace un click sobre él).
Creo que en ese caso deberías intentar "cazar" los eventos de ratón sobre los componentes.
Por ejemplo al crear los componentes en runtime, "enganchas/capturas" uno de los eventos del componente (mouseDown, por ejemplo) a una rutina que te permita manejar la selección de éstos componentes (uno o varios y que por ejemplo los distinga de los no-seleccionados);

No se si me he explicado del todo bien, si no queda claro ya dirás...

Exactamente lo que quiero hacer es que el usr pueda crear tantos Tedit como quiera y si se le ocurre borrar alguno que lo pueda hacer activándolo y apretando en un botón que por ejemplo se llame quitar elemento.
Gracias-

Neftali [Germán.Estévez] 09-08-2004 09:59:09

Podrías hacerlo, por ejemplo:
* Con una nueva opción en el menú contextual del control de diga: "Borrar componente".
* Seleccionándolo y con un botón que diga: "Borrar componente"
* Con un combinación de taclas sobre el componente, por ejemplo. CTRL+DEL
* ...

Chelo 10-08-2004 06:10:53

Cita:

Empezado por Neftali
Podrías hacerlo, por ejemplo:
* Con una nueva opción en el menú contextual del control de diga: "Borrar componente".
* Seleccionándolo y con un botón que diga: "Borrar componente"
* Con un combinación de taclas sobre el componente, por ejemplo. CTRL+DEL
* ...

Ok..lo que me dices lo entiendo bien ahora lo que no me queda claro es como hacer para "enganchar/capturar" uno de los eventos del componente (mouseDown, por ejemplo) a una rutina que me permita manejar la selección de éstos componentes. Lo he intentado hacer y no me sale. :confused:
Desde ya gracias.

Neftali [Germán.Estévez] 10-08-2004 10:18:14

Cita:

Empezado por Chelo
....lo que me dices lo entiendo bien ahora lo que no me queda claro es como hacer para "enganchar/capturar" uno de los eventos del componente (mouseDown, por ejemplo) a una rutina que me permita manejar la selección de éstos componentes. Lo he intentado hacer y no me sale.

Supongo, por lo que me pareció entender en los mensajes, que los componentes los vas creando tú por código, pues cuando creas los componentes le asignas a un de sus eventos una rutina creada por tí (como pista la rutina debe tener la misma estructura que tiene el evento que vas a "enganchar");
Por ejemplo si quieres crear Edit's y enganchar los eventos OnExter y OnExit (para cambiar el color del control) a unos métodos creados por ti, sería algo así:

Código Delphi [-]
    // Defines los métodos en la parte privada
    procedure myEnter(Sender:TObject);
    procedure myExit(Sender:TObject);
 
...
 
  // la implementación seria así:
 
procedure TForm1.myExit(Sender: TObject);
begin
  // Compribar y cambiar el color.
  if (Sender is TEdit) then begin
    TEdit(Sender).Color := clWindow;
  end;
end;
procedure TForm1.myEnter(Sender: TObject);
begin
  // Compribar y cambiar el color.
  if (Sender is TEdit) then begin
    TEdit(Sender).Color := clInfoBk;
  end;
end;
 
// y una forma de crear los componentes y "enganchar" los eventos
// podría ser ésta:
 
...
var
  i:Integer;
  ed:TEdit;
begin
  for i := 0 to 3 do begin
    // Ejemplo sencillo que crea 4 edits
    ed := TEdit.Create(Self);
    ed.Parent := Self;
    ed.Name := 'Edit' + IntToStr(i);
    ed.Top := 100 + (i * 30);
    ed.Left := 300;
    // "enganchar" el método on Enter del control
    ed.OnEnter := myEnter;
    // "enganchar" el método OnExit del control
    ed.OnExit := myExit;
  end;


La franja horaria es GMT +2. Ahora son las 03:24:56.

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