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
  #7  
Antiguo 08-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
A mi no me sale nada de eso en mi ayuda de RAD 2007 !

Lo cual me sorprende más todavía. Buscando por 'CLR', me salen varias entradas, ninguna de ellas relacionada en manera alguna con lo que describes, y cito aquí la que yo creo que más se acerca :

Cita:
The Microsoft .NET Framework and the Common Language Runtime (CLR) provide a runtime environment in which components written in .NET languages can seamlessly interact with each other. A compiler for a .NET language does not emit native machine code. Instead, the language is compiled to an intermediate, platform neutral form called Microsoft Intermediate Language (MSIL, or IL for short). The modules containing IL code are linked together to form an assembly. An assembly can be made up of multiple modules, or it can be a single file. In either case, an assembly is a self-describing entity; it holds information about the types it contains, the modules that comprise the assembly, and dependencies on other assemblies. An assembly is the basic unit of deployment in the .NET development environment, and the CLR manages loading, compilation to native machine code, and subsequent execution of that code. Applications that run entirely within the context of the CLR are called managed code.

One of the services provided by the CLR is the ability for managed code to call on unmanaged code, that is, code that was compiled to native machine language and which does not execute within the environment of the CLR. For example, through a service called Platform Invoke (often shortened to PInvoke), managed code can call on native Win32 APIs. This ability extends to using legacy COM objects from a managed .NET application. The ability to interoperate between managed code and COM objects also goes in the other direction, making it possible to expose .NET components to unmanaged applications. To the unmanaged application, loading and accessing the .NET component almost entirely the same as accessing any other COM object.
P.D. Me equivoqué al escribir antes, y claro, me refería a la propiedad 'Color' en singular.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #8  
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
Cita:
Empezado por Al González Ver Mensaje
...lo que no me gustó nadita fue que cuando abrí la ayuda de Delphi 2007...me apareció un icono en la barra de tareas diciendo algo como "Help make Visual Studio better". Y ahora dicho icono tiene un desagradable comentario emergente que dice "Visual Studio Customer Experience Improvement Program"....significaría que Microsoft está recurriendo a algo de lo más bajo y vil para alejar a la gente de RAD Studio. ...
Buscando en Google, encontré que se trata de algo programado a propósito en .NET 2.0. Incluso ya ha sido denunciado por otros colegas:

http://qc.codegear.com/wc/qcmain.aspx?d=43088

http://memyselfanddelphi.blogspot.co...1_archive.html

Que mal se ve Microsoft con jugarretas como esas. El mensaje se interpreta como "tenemos miedo de que uses el .NET que pudimos crear gracias a exingenieros de Borland, con entornos de desarrollo mejores que el nuestro".

¿A qué personaje de Redmond se le habrá ocurrido hacer que .NET mostrara ese mensaje en pantalla, aún sin tener Visual Studio instalado? ¿A caso pensaron que nadie se molestaría, que nadie interpretaría con un mínimo de inteligencia la sucia maniobra? ¿Y ese es el Visual Studio que dices que va muy bien, Ramiro? ¡Joder! Yo prefiero la dignidad, la calidad y el honor que siguen caracterizando a nuestro Delphi.

En la sombra de este mal trago hay un poco de alegría, porque el abusivo monopolio tropieza con la misma bota que usa para intentar aplastar lo bien hecho.

Un abrazo despertando conciencia y "haciendo mejor" al mundo entero.

Al González.

Última edición por Al González fecha: 08-06-2008 a las 03:55:28.
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 06:06:35.


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