 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Dom 12 Ago, 2007 4:15 pm Asunto: Cambiar propiedades componente en tiempo de ejecucion |
|
|
Buenas:
Tengo un grana numero de componentes TEdit en un Tpanel (Unos sesenta) a los que en tiempo de Ejecucion le debo de cambiar alguna de sus propiedades....
Mi pregunta es la siguiente Hay alguna manera de cambiar las propiedades de esos TEDIT sin tener Que ir indicandolo uno por uno de la foma:
TEdit1->Propiedad =......
Tedit2->Propiedad =......
......
.......
TEdit60->Propiedad =......
Algo asi como un bucle en el que se identifique el Tedit que deseo Modificar....
Espero haber explicado bien lo que quiero
Gracias |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Dom 12 Ago, 2007 11:32 pm Asunto: |
|
|
mira el hilo que tiene por titulo "Lista de Formularios de la Aplicación" en un post posteo un ejemplo para una lista de TComboBox
https://cppbuilder.es/viewtopic.php?t=12480 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Lun 13 Ago, 2007 1:34 am Asunto: |
|
|
Aun que la opción más correcta es buscar por el foro, debes indicarlo de la siguiente manera, selecciona tus botones (todos a los que requieras "escuchar", cuando presiones click)
En el evento OnClick de los botones seleccionados puedes establecer algo como lo siguiente
| Código: | void __fastcall TForm1::Button1Click(TObject *Sender)
{
TButton *pBoton = dynamic_cast<TButton*> (Sender);
ShowMessage("Boton pulsado: "+pBoton->Name);
pBoton->Font->Size = 20; // modificamos la fuente
}
//--------------------------------------------------------------------------- |
en este pequeño trozo de codigo, te muestra el nombre del boton que has pulsado, recuerda seleccionar todos tus botones y establecer en el evento OnClick un codigo similar al anterior _________________

Ultima edición por Cesar C. Salazar Gonzalez el Mar 14 Ago, 2007 11:24 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Lun 13 Ago, 2007 6:11 am Asunto: |
|
|
Hola César, estoy un poco desconcertado con tu mensaje privado. Me gustaría que me lo expliques mejor, si puede ser por favor.
| Código: |
Estimado amigo Tor, entiendo el impetu que tienes por ayudar, pero antes de postear revisa que tu codigo funcione, para no tener que estar divagando.
cada una de las soluciones que amablemente estas posteando, YA han sido realizadas por un servidor puesto que no es la primera vez, que escribo en el foro aun asi no es la primera vez que pido una consulta, agradezco el interes, pero antes de establecer tu codigo asegurate que estas dando la respuesta correcta, no lo digo por mi, lo digo por aquellas personas que aun empiezan con BCB.
Saludos...
Es tan solo una sugerencia.
_________________
César C. Salazar González / Chiapas – México
|
Sabes que no entiendo donde dice
| Cita: |
“pero antes de postear revisa que tu codigo funcione, para no tener que estar divagando.”
|
Si tiene un error seria bueno que postes públicamente así podría yo aprender un poquito mas, si te refieres al asterisco es cierto le falta pero si no me equivoco lo menciono mas abajo (el asterisco fue filtrado por un programa en el servidor)
Otra parte que no entiendo q me quieres decir es
| Cita: |
“cada una de las soluciones que amablemente estas posteando, YA han sido realizadas por un servidor puesto que no es la primera vez, que escribo en el foro aun asi no es la primera vez que pido una consulta,”
|
y donde dice
| Cita: |
“pero antes de establecer tu codigo asegurate que estas dando la respuesta correcta,”
|
Discúlpame pero cuando pongo una respuesta es porque lo tengo funcionando de lo contrario no lo pondría. y mencionaría que otra persona lo realizo.
Quizás no sea correcto decir esto en el foro, tengo entiendo que eres un programador con mucha experiencia, y muy respetado incluso 90% de las personas de este foro conocen tu reputación, yo también tengo el tiempo muy acotado y es la única ves que voy a escribir algo así, y no voy a generar una discusión.
En este foro me siento muy bien, e aprendido mucho con todos ustedes y solo trato de compartir algunas cosas q a algunos puede llegar a serles útil. Cuando deje de sentirme bien quizás ya no tenga nada que hacer por acá.
No se me parece que si tu crees que yo estoy dando respuestas falsas o con errores, te dirijas a un administrador del foro, así esa persona se pondría en contacto con migo informando con detalles sobre la situación.
Y si de algo tengo que pedir disculpa es en los errores de ortografía.
Saludos Tor
Ing Electrónico.
Ing Informático. |
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Lun 13 Ago, 2007 4:48 pm Asunto: |
|
|
| César C. Salazar González escribió: | Aun que la opción más correcta es buscar por el foro, debes indicarlo de la siguiente manera, selecciona tus botones (todos a los que requieras "escuchar", cuando presiones click)
En el evento OnClick de los botones seleccionados puedes establecer algo como lo siguiente
| Código: | void __fastcall TForm1::Button1Click(TObject *Sender)
{
TButton *pBoton = dynamic_cast<TButton> (Sender);
ShowMessage("Boton pulsado: "+pBoton->Name);
pBoton->Font->Size = 20; // modificamos la fuente
}
//--------------------------------------------------------------------------- |
en este pequeño trozo de codigo, te muestra el nombre del boton que has pulsado, recuerda seleccionar todos tus botones y establecer en el evento OnClick un codigo similar al anterior |
Creo que me he explicado mal....
Se trata de ahorrar un moton de codigo
El caso es que si tengo que poner el codigo que me has descrito en cada TEdit seria "el mismo perro con distinto collar"
Busco Algo parecido a esto (no se si es posible) supongamos que tengo todos los TEDIT con su propiedad Name igual salvo el indice final
TEdit1->Name=Nombre1
TEdit2->Name=Nombre2
...........
TEditx->Name=Nombrex
y un Procedimiento en el Form Padre de la manera:
Void TFormPadre::CambiarPropiedad (TEdit *edit)
{
edit->Color = 2345;
edit->.....
}
En tiempo de Ejecucion el form recibe un parametro que determinara las propiedades ha modificar
void_fastcall TFormPadre::FormActivate(TObject *Sender,int Param)
{
switch (Param)
case 1:
//lo qu ebusco seria algo parecido a esto
for (int i=1 , i<x, i++)
{
CambiarPropiedad ( [ 'Nombre' + IntToStr(i)] );
}
Osease :Tomar una cadena Afanumerica como identificador (Nombre) de un Objeto
Nota :Estoy abierto a otras Ideas
Gracias[/b] |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Lun 13 Ago, 2007 5:00 pm Asunto: |
|
|
Pues Creo que has entendido mal
pues he puesto claramente "Selecciona tus botones todos a los que requieras "escuchar", cuando presiones click)"
vamos por partes y espero que ahora si se entienda
1.- Selecciona todos lo botones.
2.- cuando tengas seleccionados TODOS los botones, te vas a "Object Inspector" buscas el evento OnClick y ASEGURATE que sigas teniendo seleccionados todos los botones, estableces el codigo de la siguiente manera usando TU funcion y debe trabajar correctamente
| Código: | void __fastcall TForm1::Button1Click(TObject *Sender)
{
TButton *pBoton = dynamic_cast<TButton*> (Sender);
CambiarPropiedad ( pBoton );
}
//--------------------------------------------------------------------------- |
lo que estamos haciendo es redireccionar TODOS los eventos OnClick de cada boton en UNO solo...
a eso me referia con seleccionar todos tus botones, y establecer en un solo OnClick lo que deseas.
nota: aqui no existen "macros" como clipper o Fox que anteponias el nombre de ellas usando el caracter &
variable = "Boton"+&numero
ahora que si no te vale el codigo anterior, puedes usar el siguiente para buscar de manera secuencial un poco mas tardado, pero funcionable al boton que quieres modificar, esto puede ir en tu funcion
| Código: | int control = 0;
while(control < this->ComponentCount)
{
Application->ProcessMessages();
// Buscamos por los controles
if (this->Components[control]->InheritsFrom(__classid(TButton)))
{
Application->ProcessMessages();
TButton *pBoton = dynamic_cast<TButton*>(this->Components[control]);
if(pBoton->Name = "nombre de tu boton")
{
CambiarPropiedad ( pBoton );
}
}
control++;
} |
_________________
 |
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Mar 14 Ago, 2007 3:14 pm Asunto: |
|
|
Gracias por contestar
Tu respuesta me ha dado la luz.
"La Ignorancia es una enfermedad que se cura preguntando" R.G  |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|