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 07-06-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
TWinControl en Delphi 2007

Hola a todos !

Estoy intentando pasar código a Delphi 2007.

Al parecer antes (al menos en Delphi 2006) la clase TWinControl tenía publicadas entre otras las propiedades Color y Font.

Yo al menos lo utilizaba para cambiar el color de fondo y del texto al obtener foco en un control de edición.

Código Delphi [-]
(Sender as TWinControl).Color := clWindow;
(Sender as TWinControl).Font.Color := clMaroon;

Ahora ya en Delphi 2007 estas propiedades no están publicadas y no puedo acceder directamente a ellas. Ello me obliga a hacer el Cast para cada caso, sean po.ej. TLabel's, TEdit's, o cualquier otro Control.

Existe alguna manera de evitar esto, es decir, no tener que preguntar cada vez por el tipo de control que quiero manejar ?

Quisiera evitar esto precisamente :

Código Delphi [-]
if Sender is TLabel then begin
  (Sender as TLabel).Color := clWindow;
  (Sender as TLabel).Font.Color := clMaroon;
end;
 
if Sender is TEdit then begin
  (Sender as TEdit).Color := clWindow;
  (Sender as TEdit).Font.Color := clMaroon;
end;
 
if Sender is TDBEdit then begin
  (Sender as TDBEdit).Color := clWindow;
  (Sender as TDBEdit).Font.Color := clMaroon;
end;
 
if Sender is TCheckBox then begin
  (Sender as TCheckBox).Color := clWindow;
  (Sender as TCheckBox).Font.Color := clMaroon;
end;
 
....

Gracias por vuestra ayuda. Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 07-06-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola Gluglú!

Tengo dudas sobre si en alguna versión de Delphi las propiedades Color y Font fueron declaradas como públicas o publicadas a nivel de la clase TWinControl.

Mirando la VCL de Delphi 7, en ésta la visibilidad de dichas propiedades en TWinControl es Protected (la misma visibilidad que hereda de TControl). Es decir, tampoco en Delphi 7 TWinControl hace públicas las propiedades Color y Font.

¿Será posible que en Delphi 2006 las hayan hecho públicas y luego en 2007 las hayan regresado a su visibilidad tradicional? Me cuesta trabajo creer que algo así ocurriera.

Un favor: preséntanos la declaración completa de las clases TControl y TWinControl que tienes en la unidad Controls.pas de tu Delphi 2006 para salir de dudas.

Gracias.

Al González.

P.D. Tampoco veo alguna diferencia relevante en Delphi 2007. Me deja pensando que tal vez en Delphi 2006 utilizabas el truco de "molde de acceso", pero empleando una nueva clase de mismo nombre que TWinControl...
Responder Con Cita
  #3  
Antiguo 07-06-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Pues al parecer tienes toda la razón, amigo Al !

Por lo que he estado investigando es cierto que nunca han estado publicadas las propiedades Color y Font del TWinControl. Al menos en Win32. Yo utilizaba D2006 en su versión VCL.Net y ahí sí que me permitía utilizarlo de la manera que he espuesto. Al parecer en VCL.Net si es posible y en Win32 no.

Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 07-06-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por gluglu Ver Mensaje
...Al parecer en VCL.Net si es posible y en Win32 no. ...
¡PUF! Que interesante dato. Lo que daría por ver el contenido de la unidad Controls.pas versión D2006.NET.
Responder Con Cita
  #5  
Antiguo 07-06-2008
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Pues aqui te adjunto Borland.Vcl.Controls.pas que entiendo es lo que andamos buscando.

Sinceramente, si me pongo a mirar la unidad, yo tampoco veo donde se publica la porpiedad 'Colors'. El hecho claro es que en mi programa en VCL.Net (D2006) lo he utilizado infinitas veces tal y como he descrito.

Espero me puedas indicar si encuentras algo más concreto, ya por llegar hasta el 'fondo' del asunto.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Borland.Vcl.Controls.zip (79,3 KB, 2 visitas)
__________________
Piensa siempre en positivo !
Responder Con Cita
  #6  
Antiguo 08-06-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Exclamation

Cita:
Empezado por gluglu Ver Mensaje
...donde se publica la porpiedad 'Colors'. El hecho claro es que en mi programa en VCL.Net (D2006) lo he utilizado infinitas veces tal y como he descrito.

Espero me puedas indicar si encuentras algo más concreto, ya por llegar hasta el 'fondo' del asunto...
La propiedad, según se dijo al principio, es Color (en singular), y, efectivamente, en el archivo Borland.Vcl.Controls.pas (VCL.NET) de Delphi 2006 aparece junto con Font y algunas otras con visibilidad pública en su declaración inicial:

Código Delphi [-]
  TControl = class(TComponent, IControl)
  ...
  public
    ...
    property Color: TColor read FColor write SetColor stored IsColorStored default clWindow;
    ...
    property Font: TFont read GetFont write SetFont stored IsFontStored;

Esto devela el misterio.

Ahora, mirando en mi Delphi 2007, encuentro curiosas diferencias:

1. La unidad en la carpeta "...\source\dotNet\vcl" se llama nuevamente Controls.pas, como en Delphi 7. Mi pregunta aquí es ¿por qué se regresó al nombre original?

2. La visibilidad de ambas propiedades está condicionada a la existencia de un símbolo de compilación llamado "CLR", que me parece es algo relacionado a .NET. Supongo que en D2007 es la misma unidad .pas para Win32 y .NET, y el símbolo CLR significa que está compilando para .NET. Y es que sólo cuando es CLR (.NET) declara las propiedades en cuestión como públicas. Con esto se hace compatible hacia atrás tanto en Win32 como en .NET.

Pero lo que no me gustó nadita fue que cuando abrí la ayuda de Delphi 2007 para buscar qué es "CLR" (sin encontrar ahí el significado), me apareció un icono en la barra de tareas diciendo algo como "Visual Studio better". Y ahora dicho icono tiene un desagradable comentario emergente que dice "Visual Studio Customer Experience Improvement Program".

Lo que no me explico es cómo rayos llegó ese molesto accesorio a mi computadora......y quién fue el desgraciado que lo programó para lanzarse cuando se abriera la ayuda de Delphi....

¡Caramba! Es que es como si abriéramos Firefox (aunque yo uso más IE) y de pronto apareciera un mensaje diciendo "¡Hey! Internet Explorer es mejor, mira, ven a conocerlo".

¿A alguien más le ha aparecido ese programa espía en pantalla? ¿Saben de dónde proviene esa cosa llamada "Visual Studio Customer Experience Improvement Program"? Quiero pensar que CodeGear no tuvo nada que ver, pero si así fuera significaría que Microsoft está recurriendo a algo de lo más bajo y vil para alejar a la gente de RAD Studio.

Saludos desencajados.

Al González.
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
Propiedad ParentColor en un TWinControl jealousy OOP 3 05-06-2011 01:15:23
Lanzamiento Delphi 2007, PHP y JBuilder 2007 R2 Santiago - Chile Andreano Noticias 4 14-05-2007 09:25:23
Mensage WM_KEYDOWN con TWinControl liadsoft OOP 1 17-05-2006 00:17:57
Las teclas direccionales y TWinControl metalfox6383 Varios 8 06-09-2005 13:46:03
TControl, TWinControl, TGraphicControl y TCustomControl metalfox6383 Varios 3 25-08-2005 01:09:50


La franja horaria es GMT +2. Ahora son las 16:11:19.


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