Yo trabajo bastante con los Codeblocks, ya que permiten facilitar el trabajo.
Por esto les pido por favor, si fuera posible, en la clase TXBrwColumn que la evaluación de bStrData envié el parámetro self.
Es decir, cambiar de :
- Code: Select all Expand view RUN
:
if ( ::bStrData == nil .or. Eval( ::bStrData ) == nil ) .and. ....
:
:
cText := Eval( ::bStrData )
:
Por:
- Code: Select all Expand view RUN
:
if ( ::bStrData == nil .or. Eval( ::bStrData, Self ) == nil ) .and. ....
:
:
cText := Eval( ::bStrData, Self )
:
El problema de ESTANDARIZAR los Parámetros a pasar a los codeblocks también se da acá, en el código:
- Code: Select all Expand view RUN
- nBmpNo := Eval( ::bBmpData, ::Value() )
En versiones anteriores no se pasaba nada, y yo modifique la clase de esta forma:
- Code: Select all Expand view RUN
- nBmpNo := Eval( ::bBmpData, self )
Este código te permite acceder a los DATA y METHOD de la clase.
Sin embargo si se trata de minimizar código, yo haría algo genérico como esto:
- Code: Select all Expand view RUN
- Eval( ::bCodeBlock>, ::VarGet(), Self, ::oWnd, <uparam..>, <Uparam..> )
- Coloco primero VarGet(), porque normalmente es con lo que mas se trabaja y se lo necesita a mano
- Luego el mismo objeto
- y luego el padre, que es algo con lo que se trabaja bastante
Con las siguientes reglas:
si es una clase que NO desciende de TControl y no tiene la DATA bSetGet, no se envía este parámetro
si es una clase que NO desciende de TWindows y no tiene la DATA oWnd, no se envía este parámetro
la idea es generalizar el orden del envió de los parámetros.
y claro que tendremos problemas con el código actual, como por ejemplo:
- Code: Select all Expand view RUN
:
If( ::bUnZip != nil, Eval( ::bUnZip, nPercent ),)
:
If( ::bZip != nil, Eval( ::bZip, nZipInfo ),)
:
Tal vez seria posible hacer esto para los codeblocks que aun no se los ha implementado.
Bueno, es una idea.
Atentamente,
Rolando.
Saludos desde Cochabamba, Bolivia.