Acceder a los controles definidos en una ventana

35 views
Skip to first unread message

Luis R. Stach

unread,
Jun 18, 2025, 11:25:59 AMJun 18
to oo...@googlegroups.com
Hola,

Estoy intentando pasar mis programas a OOHG, en MiniGUI Ext cree una
función por la cual accedo a los controles definidos en una ventana,
LABEL, TEXTBOX, etc, creo un array con la posición que tienen cada uno
de esos controles en los array del sistema MINIGUI, y después puedo
manipularlos usando SetProperty(), como OOHG se basa en OOP quisiera
saber si hay alguna forma de hacer lo mismo en OOHB, estuve mirando los
fuentes y haciendo pruebas pero no puedo encontrar alguna función similar.

Esta es un resumen de la función que uso:

    hWnd := GetFormHandle( WName )  // WName es el parámetro que recibe
la función con el nombre de la ventana

    aeval( _HMG_aControlParentHandles, {|h,n| if( h == hWnd, aadd(
Controles, n ),) })

    FOR EACH n IN Controles

        Tipo := _HMG_aControlType[n]
        Control := _HMG_aControlNames[n]

        IF Tipo $ "BROWSE,TBROWSE"
            IF Tipo == "TBROWSE"
                SetProperty( WName, Control, "FontName",
hFont["browse"]["font"] )
                SetProperty( WName, Control, "FontSize",
hFont["browse"]["size"] )
            ENDIF

        ELSEIF Tipo == "BUTTON"
        ELSEIF Tipo $ "LABEL,CHECKBOX"
        ENDIF
    NEXT

Desde ya muchas gracias


--
Saludos
Luis R. Stach

Jorge Garate

unread,
Jun 18, 2025, 12:17:57 PMJun 18
to oo...@googlegroups.com
Nunca he hecho eso que haces, pero prueba con esto:

 SetProperty( WName, Control, "FontName",  "Verdana" )
 SetProperty( WName, Control, "FontSize", 14 )

Saludos.



Jorge Gárate Bartik

Computación

WADOSWDS 

Creaciones Melody Ltda. I Av.  España  420,I  Santiago - Chile  

Email: jo...@wados.cl | www.wa2.cl 

Fono: 22 473 49 33/ +569 93196578




--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/oohg/50983720-f8a4-47c1-8999-1a3cb6ba8fa9%40gmail.com.

Luis R. Stach

unread,
Jun 20, 2025, 9:07:38 AMJun 20
to oo...@googlegroups.com

Hola Jorge, si eso lo puedo hacer, pero la función que tengo recibe el nombre de la ventana y después obtiene los controles definidos dentro de esa ventana, o sea no se como se llaman los controles, eso es lo que necesito poder determinar entre otras cosas

Gracias

Saludos
Luis R. Stach

David Field

unread,
Jun 20, 2025, 2:37:30 PMJun 20
to [oohg]
Hola Luis,

Al crear un ventana (form) OOHG utiliza el nombre que le diste para crear una variable de memoria con "_" antes del nombre.
Por ejemplo, DEFINE WINDOW Prueba quedaría como "_Prueba" y podrías acceder al objeto de la ventana (form) usandola.

Otra forma sería GetFormObject( FormName ) donde FormName será el nombre de la ventana, en este caso "Prueba") y te regresará el objeto de la ventana.

El objeto de la ventana tiene una variable de instancia llamada aControls donde se encuentran todos los objetos de esa ventana, por lo tanto puedes hacer algo como

   oWnd := GetFormObject(WName)
   FOR EACH o IN oWnd:aControls

         IF o:Type $ "BROWSE,TBROWSE"
            IF o:Type == "TBROWSE"
// el método completo es: 
// SetFont( cFontName, nFontSize, lBold, lItalic, lUnderline, lStrikeout, nAngle, nCharset, nWidth, nOrientation, lAdvanced )
                o:SetFont(hFont["browse"]["font"],  hFont["browse"]["size"]) 
               // o pudieras usar lo siguiente que es mucho más lento por que utiliza los nombres de la ventana y del control para recobrar el objeto que ya tenemos (en este caso 'o' )
              SetProperty( WName, o:Name, "FontName", hFont["browse"]["font"] )
              SetProperty( WName, o:Name, "FontSize", hFont["browse"]["size"] )

            ENDIF

        ELSEIF Tipo == "BUTTON"
        ELSEIF Tipo $ "LABEL,CHECKBOX"
        ENDIF
   NEXT

Espero te sirva para lo que quieres.

Saludos,
David Field
Reply all
Reply to author
Forward
0 new messages