Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2009
Cristalero Cristalero is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Cristalero Va por buen camino
Ayuda 'Cambiar colores'

Hola a tod@s!

Tengo el siguiente problema. Tengo un formulario principal que abre otro formulario modal llamado fEditor de la siguiente manera:

Código Delphi [-]
var
  fEditor : TfEditor;
begin
  fEditor := TfEditor.Create(Application);
  try
    fEditor.ShowModal;
    uFunciones.editEstado1(); //aquí llamo a la siguiente función que da problemas
  finally
    fEditor.Free;
  end;

- El problema es el siguiente:
Quiero recorrer los controles del segundo formulario modal, lo que hago es recorrer todos los controles del formulario modal 'fEditor' y si el control es de tipo tdbedit que es lo que quiero yo, si el campo está vacío quiero que aparezca en diferente color. La función es la siguiente:

Código Delphi [-]
procedure editEstado1();
var
  i: integer;
begin
  for i := 0 to fEditor.ControlCount-1 do
  begin
    if fEditor.Controls[i] is TDBEdit then
    begin
      if TDBEdit(fEditor.Controls[i]).Text = '' then
      begin
              TDBEdit(fEditor.Controls[i]).Color:=rgb(252,211,135);
      end;
      {...}
    end;
  end;


-No me da ningún error pero no lo realiza. Porque puede ser? Un saludo y gracias de antemano. Xaito!

Última edición por dec fecha: 08-04-2009 a las 09:06:23. Razón: Poner la etiqueta DELPHI
Responder Con Cita
  #2  
Antiguo 08-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Has probado con las propiedades Components[i] y ComponentCount en lugar de Controls[i] y ControlCount?

A primera vista me parece que el código es correcto.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 08-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El problema está en que primero ejecutas el "ShowModal()", pero, ahí se para el proceso, por decirlo así, de modo que la siguiente instrucción no se ejecuta hasta que el formulario "modal" se ha cerrado. Creo que podrías aprovechar el evento "OnShow" del propio formulario que vas a mostrar "modalmente" para hacer lo que dices. Eso o algo parecido, pero, desde luego, tal como lo estás haciendo no puede funcionar, pues, una vez que se ejecuta el "ShowModal()", el proceso se interrumpe hasta que el formulario no deje de tener ese estado (modal).
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 08-04-2009
Cristalero Cristalero is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Cristalero Va por buen camino
Smile

He probado con Components y nada de na!
Tambien había pensado en que ShowModal podría ser el problema, pero también lo probé en lanzar antes la función y sigue sin funcionar, incluso escribiendo la función en el mismo formulario 2 'fEditor';.

Lo raro es que no da ninguna excepción ni error.

Otra cosilla que os quería comentar es que:
Porque en un formulario cuando me refiero a un componente no me realizar la acción si le pongo el nombre del form antes? ejemplo:
Form1.Label1.Caption:='Mi Texto'; //De esta manera no me da ningun error pero no funciona.
Label1.Caption:='Mi Texto'; //De esta manera es correcto.

Si alguien se le ocurre algo? Gracias a todos!

Última edición por Cristalero fecha: 08-04-2009 a las 09:50:57.
Responder Con Cita
  #5  
Antiguo 08-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
David tiene razón, no me había dado cuenta del ShowModal.
El problema del código inicial es que la llamada a editEstado1 se ejecutará cuando ya hayas cerrado el form.

Yo pondría ese código en el cerrar del form, para que se ejecute antes de cerrarlo.

Creo que más sencillo con un ejemplo; Aquí te adjunto un ejemplo sencillo que es lo que yo haría si he entendido bien lo que quieres.
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo_Color.zip (7,9 KB, 28 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 08-04-2009
Cristalero Cristalero is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Cristalero Va por buen camino
Thumbs up

Gracias Neftali por el ejemplo. Le paso a mi procedimiento el Form y listo. Aún así hay cosas que no veo muy lógicas, en fin.

Gracias por tu aporte! Un saludo a tod@s!
Responder Con Cita
  #7  
Antiguo 08-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Cristalero Ver Mensaje
Aún así hay cosas que no veo muy lógicas, en fin.
No te quedes con la duda. ¿Qué es lo que no ves lógico?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 08-04-2009
Cristalero Cristalero is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Cristalero Va por buen camino
Cool

Respecto al tema de antes tengo una pequeña duda y no se por donde seguir.

He decicido cambiar el diseño , por lo tanto los TDBEdit ya no estan en el form secundario sino que los he agrupado en TGroupBox. Como puedo acceder a ellos?

Lo que hago es lo mismo de antes, lo único que antes le indico si es TGroupBox y luego dentro de el quiero referirme a sus componentes pero no se como.

Un saludo a tod@s!
Responder Con Cita
  #9  
Antiguo 08-04-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Cristalero Ver Mensaje
He decicido cambiar el diseño , por lo tanto los TDBEdit ya no estan en el form secundario sino que los he agrupado en TGroupBox. Como puedo acceder a ellos?

Lo que hago es lo mismo de antes, lo único que antes le indico si es TGroupBox y luego dentro de el quiero referirme a sus componentes pero no se como.
Hola, para recorrer solo lo que tienes en tu GroupBox utiliza Controls pero indicando que son los controles de tu GroupBox.

Código Delphi [-]
 for i := 0 to GroupBox.ControlCount-1 do
   if TDBEdit(GroupBox.Controls[i]).Text = '' then
      begin
   .....................

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #10  
Antiguo 08-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si sólo quieres acceder o comprobar los que están dentro de un GroupBox, puedes comprobar la propiedad Parent de los Edits.

Te paso un segundo ejemplo, similar al de antes, pero sólo tiene en cuenta o revisa que no estén vacíos los componentes del groupBox, el de fuera no lo tiene en cuenta.

NOTA: Además en el de antes, quedaba una referencia a Controls que no había cambiado por Components
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo_Color2.zip (8,0 KB, 3 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tip: Como cambiar los colores del IDE mamcx Varios 8 09-02-2009 23:42:31
Cambiar colores en runtime Minio Gráficos 1 15-04-2008 23:00:03
como cambiar los colores de las letras julyus Varios 2 01-02-2008 22:20:39
Cambiar colores aleatoriamente donchuma OOP 3 21-10-2007 14:53:31
Cambiar colores a la imagen maravert Gráficos 3 07-03-2005 09:57:44


La franja horaria es GMT +2. Ahora son las 12:31:38.


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
Copyright 1996-2007 Club Delphi