![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Funcion para leer compomentes
Buenas dilferos.
¿ Existe alguna funcion, procedimiento... que pueda leer todos los nombres de los compomentes visuales que existan en un From? Gracias. |
#2
|
||||
|
||||
Hola, mira a ver si esto es lo que necesitas.
Código:
procedure TForm1.Button1Click(Sender: TObject); var N: SmallInt; begin for N := 0 to ComponentCount - 1 do begin ShowMessage(Components[N].Name); end; end;
__________________
Be water my friend. |
#3
|
|||
|
|||
Gracias me sirve, pero como puedo leer dentro de ese componente sus propiedades como por ejemplo Height.
Lo que estoy intentando hacer es una funcion donde lo se paso los nombres de los componentes visuales y el me pueda leer y cambiar algunas propiedades. Lo hago para cuando se cambia la resolucion poder adaptar el from a el (No encuentro un procedimiento ya realizado para que al cambiar la resolucion o las dimensiones del from en tiempo de ejecucion pueda adaptarlo automaticamente). Gracias. |
#4
|
||||
|
||||
Hola de nuevo.
A ver si esto te sirviera: Código:
procedure TForm1.Button1Click(Sender: TObject); var N: SmallInt; begin for N := 0 to ComponentCount -1 do begin if Components[N].Name = 'Edit1' then begin (Components[N] as TEdit).width := 100; end; end; end; Saludos
__________________
Be water my friend. |
#5
|
||||
|
||||
Cita:
Mejor de esta forma: Si el "Edit1" es una TLabel, por ejemplo, se produciría un error "gordo". No sé si todo el mundo nombra los componentes según su clase, pero es más seguro la opción que he citado, creo.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#6
|
||||
|
||||
Cita:
![]()
__________________
Be water my friend. |
#7
|
||||
|
||||
Cita:
![]() ¿Cómo sabes que Edit1 es un TEdit? Y si en lugar de Edit1 lo has nombrado: CodigoDelCliente ¿cómo sabes de qué clase es? Incluso lo más habitual: edCodigoCliente, lbCodigoCliente, etc. ¿cómo sabes que el primero es un TEdit y el segundo un TLabel? Y lo mismo para otros prefijos edtCodCli, lblCodCli, etc. No existe un método fijo para nombrar los componentes, y por su nombre es imposible saber de qué tipo es. Aunque lo mismo tengo la cabeza en otro sitio (que la tengo) y no me he dado cuenta de lo que dices ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
||||
|
||||
Hombre.... si yo que estoy creando un formulario incluyo un Edit al que llamo Edit1 ¿sé que es un edit? ![]() ![]()
__________________
Be water my friend. |
#9
|
|||
|
|||
Tal y como lo plantea Casimiro, yo lo veo como mejor opción... Más abstracto, más genérico. más elegante, trasladable, reaprovechable, etc...
Por que si no no hace falta hacer un bucle que se recorra todos los objetos... con hacer n llamadas a FindComponent('Editn').With := x; ya estaría... Código:
procedure TForm1.Button1Click(Sender: TObject); var N: SmallInt; begin for N := 0 to pred(ComponentCount) do if (Components[N] is TEdit) or (Components[N] is TMemo) or .... then (Components[N] as TWinControl).height := (Components[N] as TWinControl).height *2; end; |
#10
|
||||
|
||||
Es que no todos tenemos costumbres de ese tipo, ya digo que he visto personas que nombra los componentes como codigocliente, telefonomovil, tarifamedia, etc. ¿y de qué tipo es cada uno? cualquiera sabe.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
Cheeeeeeeeeeeeeeeeeeeeeeeee.... pues si que estoy tonto.
Si sabes el nombre del componente lo atacas directamente. ![]()
__________________
Be water my friend. |
#12
|
||||
|
||||
Pues sí, tú sí que lo sabes, pero no suele ser buen método ese.
Cualquier día le cambias el nombre por cualquier motivo y deja de funcionar. Pero, bueno, para un caso puntual como este puede servir perfectamente.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
|||
|
|||
Hay ocasiones en la que no sabes el nombre del componente porque el formulario se crea de forma dinámica, ya sea a partir de un archivo .ini o de una base de datos. En esos casos lo sensato es saber a que clase pertenece el componente para asignar valor a alguna de sus propiedades porque el nombre del componente simplemente no lo conoces.
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ayuda a instalar compomentes X86 o X64 en DX10.1 con windows 10pro 64bits | darkbits | Varios | 0 | 02-07-2016 17:56:57 |
problema para leer txt | mariaesde | Varios | 4 | 02-09-2008 15:06:51 |
funcion para leer archivo | jw4v32 | API de Windows | 1 | 26-04-2008 01:13:53 |
Compomentes TIbo | Neeruu | Varios | 0 | 06-04-2008 03:01:15 |
Necesito crear un permiso para escribir pero no para leer | federiconqn21 | Conexión con bases de datos | 5 | 07-07-2006 19:13:47 |
![]() |
|