Manu escribió:
> Jose yo te decía eso por si se quiere incluir como algo propio de Xailer.
> Como digo en el otro mensaje El Is...() devuelve un valor lógico en
> todos los leguajes.
Pa tí el burro y los 50 reales
> La clase podría quedar así:
>
> METHOD MDIByMDI( oMDI ) CLASS TForm1
>
> local nMDI := len( ::oMDIClient:aForms )
> local i, oFrm
> local cClsName := oMDI:ClassName()
>
> // Esto es más rápido que el AScan ya que no tiene que evaluar ningún CB
> // además no tiene que ejecutar el ClassName() del objeto enviado por
> // cada iteración por lo que es también un poquito más veloz
>
> for i := 1 to nMDI
> if cClsName == ::oMDIClient:aForms[ i ]:ClassName() )
> oFrm := ::oMDIClient:aForms[ i ]
> EXIT
> endif
> next
>
> return( oFrm )
>
> Creo que hay que cuidar el código y hacerlo lo más rápido, compacto y
> legible (para todos) posible nunca se sabe...
Po vale. Hay muchos caminos para llegar al mismo sitio. Cada cual elije
el suyo. De momento se queda como está.
>
> Ademá cuando adquieres costumbres y tú sabes que yo en eso soy mu
> "quisquilloso"...
Ya sabes que yo tambien.
> Pero me parece bien que cada uno haga su código como mejor le venga
>
Lo que yo decia
> Bueno Jose ya voy avanzando en "ESO" que hemos hablado
>
¿Pa cuando tienes algo que sirva para probar?
> Buenas noches
>
Buenas, buenas. Al menos corre airecito y no hace calor.
Chau!
>
>
>
> José Alfonso Suárez Moreno escribió:
>> Manu,
>>
>> SET CON_UN_POCO_DE_GUASA ON
>>
>> Manu escribió:
>>
>>
>>> Jose por coherencia IsOpen deberá devolver un valor lógico con lo
>>> quedaría así:
>>>
>> ¿Y qué mas da? ¿Acaso hay alguna norma que me impida llamar a los
>> metodos como crea conveniente?
>>
>>> METHOD IsOpen( oForm ) CLASS TForm1
>>> RETURN( aScan( ::oMDIClient:aForms , { | o | o:ClassName() ==
>>> oForm:ClassName()} ) != 0 )
>>>
>>> Por lo que casi no te valdría directamente.
>>
>> Xactamente. Que retorne un valor lógico no vale para lo que queremos
>> hacer.
>>
>>>
>>> Pero podrías hacer otro método que fuera:
>>>
>>> METHOD MDIByClsName( cClsName ) CLASS TForm1
>>
>> ¿Y por que no llamarla MDIEnUso?: es mas correcto que cualquier
>> "extrangerismo".
>>>
>>> local nMDI := len( ::oMDIClient:aForms )
>>> local i, oFrm
>>>
>>> // Esto es más rápido que el AScan ya que no tiene que evaluar ningún CB
>>> // además no tiene que ejecutar el ClassName() del objeto enviado por
>>> // cada iteración por lo que es también un poquito más veloz
>>
>> ¿Cuantas MDI crees que va a tener el usuario abiertas?
>> La obsesión por la velocidad a veces hace que el código se vuelva más
>> ilegible. Eso sólo es admisible cuando realmente es justificable y en
>> este caso no lo es.
>>
>> En cuanto a lo del ClassName() no te lo acepto por que emborrona la
>> llamada. Quiero saber si EmpresaBrw() está abierto, no acordarme que
>> le tengo que pasar el ClassName(). Hagamos las funciones y métodos
>> fáciles de llamar y con pocos parámetros, por favor.
>>
>>>
>>> for i := 1 to nMDI
>>> if cClsName == ::oMDIClient:aForms[ i ]:ClassName() )
>>> oFrm := ::oMDIClient:aForms[ i ]
>>> EXIT
>>> endif
>>> next
>>>
>>> return( oFrm )
>>>
>>> Y en tu código:
>>>
>>> METHOD ToolBar1Item1Click( oSender ) CLASS TForm1
>>>
>>> LOCAL oFrm := ::MDIByClsName( EmpresaBrw():ClassName() )
>>>
>>> IF oFrm != NIL
>>> oFrm:Show()
>>> ELSE
>>> EmpresaBrw():New( Self ):Show()
>>> END IF
>>>
>>> RETURN Nil
>>>
>>> Creo que es más lógico ya que el Is...() en todos los lenguajes
>>> devuelve un valor lógico en cambio el ...By...() devuelve un objeto
>>
>> ¿Y a mi qué?
>>
>> Ala, ahora lo cambio y le pongo
>> DimeElObjetoDeEstoSiEstaAbiertoYSiNoDevelveNulo( ) y ya sabemos de que
>> va el método ¿te parece?. Aunque lo veo algo jodidillo de escribir ¿no
>> crees?.
>>
>>>
>>> Te vale para tu desarrollo?
>>>
>> Me vale como lo tengo y no se queja el compilador de que use Is, By o
>> lo que quiera. Tampoco he notado que la aplicación se vuelva
>> superlenta por usar AScan() o por no pasar el ClassName().
>>
>>> Jajaja saludos JA, por cierto me gustó el local y tus socios... son
>>> buena gente como tú
>>>
>> Gracias
>>
>>
>> SET CON_UN_POCO_DE_GUASA OFF