FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Obtener Nombre De Componente
Hola Necesito Obtener El Nombre Del Componente Sobre El Cual Posiciono El Puntero Del Mouse. Gracias
|
#2
|
||||
|
||||
Creo que la función FindVCLWindow de la unidad Controls es lo que buscas.
// Saludos |
#3
|
|||
|
|||
FindVCLWindow
me explicarias la sintaxis?. si tenes alguna sentencia de ejemplo te agradeceria.
|
#4
|
||||
|
||||
Pues la sintaxis exacta no sabría decírtela porque la sé para delphi, no para c++ builder, pero debe ser similar. Un ejemplo en Delphi:
// Saludos |
#5
|
||||
|
||||
Me acordé de que tengo instalado el turbo c++
Aquí el mismo ejemplo para c++: Código:
void __fastcall TForm1::AppEventsIdle(TObject *Sender, bool &Done) { TWinControl *Control; Control = FindVCLWindow(Mouse->CursorPos); if (Control) { this->Caption = Control->Name; } } /* Saludos */ |
#6
|
|||
|
|||
vcl
muchisimas gracias. esta perfecto, pero no funciona para lo que necesito porque no me toma en cuenta los TShape. Probé mostrando en un Edit el nombre de los componentes y me muestra todos menos los TShape. Si encuentras la forma por favor avisenme. Gracias.
|
#7
|
||||
|
||||
Pues por ahí hubiéramos empezado porque un Shape no es un WinControl. Lo único que se me ocurre es hacer un función que recorra todas las componentes del formulario y si es un Shape, vea si el ratón está sobre él:
No pongo ahora ejemplo en C porque mi turbo explorer se acaba de quedar congelado // Saludos |
#8
|
|||
|
|||
shapes
ok. te cuento bien como seria. Tengo 121 Shapes en el formulario. Necesito que al pasar el puntero del mouse por cada uno de ellos pueda saber de cual se trata para cambiarle las propiedades.
|
#9
|
||||
|
||||
Pues no veo cuál es el problema. Con la función que puse en mi mensaje anterior puedes hacerlo invcándola en el evento MouseMove del formulario. El MouseMove no se detecta cuando se pasa por un control pero sí cuandos e pasa por un shape.
// Saludos |
#10
|
|||
|
|||
shapes
Agradeceria que pusieran el codigo de c++, porque no entiendo muy bien el de Delphi. Se que es similar la fuente, pero no pude traducirla. Gracias
|
#11
|
|||
|
|||
a
Esta linea: como sería en c++?
if Components[i] is TShape then |
#12
|
||||
|
||||
Buena pregunta, al parecer en C++ es distinto, no hay operador is.
Aquí ya no tengo el C++ para probar pero intentemos a ciegas: Código:
TShape * __fastcall TForm1::FindShape(TPoint Pos) { integer i; for (i = 0; i < this->ComponentCount; i++) { if (dynamic_cast<TShape *>(this->Components[i])) { if PtInRect(((TShape *)this->Components[i])->BoundsRect, Pos) { return ((TShape *)this->Components[i]); } } } return NULL; } |
#13
|
|||
|
|||
Gracias!!!!!!!!!!
Estoy muy agradecido. Me salvaron totalmente. La verdad es que sos un capo por la disposición que tenés al escribir el código aunque sea "a ciegas". El código en C++ corregidos unos pequeños detalles sería:
Código:
TShape * __fastcall TForm1::FindShape(TPoint Pos) { for (int i = 0; i < this->ComponentCount; i++) if ( dynamic_cast < TShape * > (this->Components[i])) if (PtInRect(((TShape *)this->Components[i])->BoundsRect, Pos) ) return ((TShape *)this->Components[i]); return NULL; } Hasta la próxima. Última edición por dec fecha: 10-11-2006 a las 07:13:14. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Obtener el nombre de la tabla | jzginez | Conexión con bases de datos | 1 | 18-08-2006 23:32:03 |
obtener version y nombre de aplicacion | droguerman | OOP | 2 | 10-06-2006 17:25:57 |
Obtener el nombre del Adaptador de Red | wpolanco | Redes | 0 | 17-05-2006 06:16:01 |
Obtener el nombre de mi ejecutable | jorch_yr | Varios | 3 | 29-05-2004 21:23:34 |
¿Se puede obtener el nombre de un handle? | Al González | API de Windows | 5 | 23-12-2003 17:48:55 |
|