TDockPnel

TDockPnel

Postby fgondi » Thu Sep 15, 2022 10:43 am

Estoy realizando trabajos con la Clase DockPnel.

Con el ejemplo de que incluye scrooll.

La única variación que he realizado es incluir la creación de un cuadro de dialogo en la función DefDialog
Code: Select all  Expand view
   #include "Fivewin.ch"

    Static aRes
    Static oDock0

    Function Main()

       local oWnd
       local nRow := 2
       local nCol := 2
       local nWAlto  := 760
       local nWAncho := 1360
       local oPanel

       aRes := { GetSysMetrics(0), GetSysMetrics(1) }
       DEFINE WINDOW oWnd FROM nRow, nCol TO nWAlto + nRow, nWAncho + nCol ;
                 PIXEL TITLE "Movimentos do Dia "+Dtoc( Date() ) ;
                 COLOR CLR_WHITE, Rgb( 182, 182, 182 ) STYLE WS_POPUP
             
       ACTIVATE WINDOW oWnd MAXIMIZED ON INIT ( CreaDocks0( oWnd ) )


    Return nil

 //----------------------------------------------------------------------------//
    //
    //----------------------------------------------------------------------------//

    Function CreaDocks0( oWnd )

       oDock0  := TDockPnel():New( oWnd )
       WITH OBJECT oDock0

          :SetHeightCaption( 40 )
          :SetBorderSize( 1 )
          :SetCoors( { | o | 2 }, ;
                     { | o | 2 }, ;
                     { | o | o:oWnd:nBottom - o:oWnd:nTop  - 2 }, ;
                     { | o | o:oWnd:nRight  - o:oWnd:nLeft - 2 } )
          :SetCaption( { | o | "Test TDockPanel Class  - " + FWVERSION + " -" } )
          //:SetPosTitle( .T. )  // Title at bottom
          :SetStyle( 30 )
          :SetModeHorz( 2 )  // TScrollPanel
          :SetImgsFiles( { { 57678, { | o | MyPopupMnu( o ) }, } } )
          :SetCtrlsPnel( { | o, nT, nL, nH, nW | CreateDocks( o ) } )

          :Activate()
       END

    Return oDock0

    //----------------------------------------------------------------------------//
    //
    //----------------------------------------------------------------------------//

    Function MyPopupMnu( o )

       local oMnu
       local nRow  := o:nTop  + Int( o:nHeight / 2 )
       local nCol  := o:nLeft + Int( o:nWidth / 2 )

       MENU oMnu POPUP 2013 ;
          COLORSELECT METRO_STEEL, METRO_STEEL, CLR_WHITE ;
          COLORMENU CLR_WHITE, CLR_BLUE ;
          COLORSEPARATOR METRO_STEEL ;
          COLORLEFT CLR_WHITE

          MENUITEM "Info" ACTION MsgInfo( o:ClassName() )
          MENUITEM "Exit" ACTION o:oWnd:oWnd:End()

       ENDMENU
       ACTIVATE MENU oMnu AT nRow, nCol OF o:oWnd

    Return oMnu

    //----------------------------------------------------------------------------//
    //
    //----------------------------------------------------------------------------//

    STATIC FUNCTION  CreateDocks(oWnd)
        LOCAL aPos:={},oFnt,oDock[4]

        DEFINE FONT oFnt NAME "CALIBRI" SIZE 0,-16

        Aadd(aPos,{ 014, 005, 370, 278 } )
        Aadd(aPos,{ 014, 300, 360, aRes[1] - 10 } )
        Aadd(aPos,{ 390, 300, aRes[2]/3 + 390, aRes[1] - 10 + 300 } )

        oDock[1]  := TDockPnel():New( oWnd )
        WITH OBJECT oDock[1]
            :SetCoors( aPos[1,1], aPos[1,2], aPos[1,3], aPos[1,4] )
            :SetHeightCaption( 40 )
            :SetBorderSize( 4 )
            :SetCaption( "Calendário" )
            :SetColors( CLR_WHITE, METRO_OLIVE, , )
            :SetFont( oFnt )
            :cAlignText  := "CC"
            :SetCtrlsPnel( { | o, nT, nL, nH, nW | DefDialog(  o, nT, nL, nH, nW, 1 ) } )
            :Activate()
        END

        oDock[2]  := TDockPnel():New( oWnd )
        WITH OBJECT oDock[2]
            :SetCoors( aPos[2,1], aPos[2,2], Int( aRes[ 1 ] / 6 ), aPos[2,4] - if( oWnd:WinStyle( WS_VSCROLL ), 20, 0 ) )
            :SetHeightCaption( 40 )
            :SetBorderSize( 4 )
            :SetCaption( "Autorizações" )
            :SetColors( CLR_WHITE, METRO_OLIVE, , )
            :SetFont( oFnt )
            :cAlignText  := "CC"
            :SetCtrlsPnel( { | o, nT, nL, nH, nW | DefDialog(  o, nT, nL, nH, nW, 2 ) } )
            :Activate()
        END  

        oDock[3]  := TDockPnel():New( oWnd )
        WITH OBJECT oDock[3]
          :SetCoors( { | o | XEval( o:oWnd:aControls[ 2 ]:nBottom + 10, o ) }, ;
                     { | o | XEval( o:oWnd:aControls[ 2 ]:nLeft, o ) }, ;// { | o | Int( 2 * aRes[ 1 ] / 6 ) + 20 }, ;
                     { | o | XEval( o:oWnd:aControls[ 2 ]:nBottom + 10 + Int( aRes[ 2 ] / 2 ) , o ) }, ;
                     { | o | XEval( o:oWnd:aControls[ 2 ]:nRight, o ) } )
          //  :SetCoors( aPos[3,1], aPos[3,2], aPos[3,3], aPos[3,4] )
            :SetHeightCaption( 40 )
            :SetBorderSize( 4 )
            :SetCaption( "Faturamento" )
            :SetColors( CLR_WHITE, METRO_OLIVE, , )
            :SetFont( oFnt )
            :cAlignText  := "CC"
            :SetCtrlsPnel( { | o, nT, nL, nH, nW | DefDialog(  o, nT, nL, nH, nW, 3 ) } )
            :Activate()
        END  

       oDock[4]  := TDockPnel():New( oWnd )
        WITH OBJECT oDock[4]
             :SetCoors( { | o | XEval( o:oWnd:aControls[ 3 ]:nBottom + 10, o ) }, ;        
                        { | o | XEval( o:oWnd:aControls[ 3 ]:nLeft, o ) }, ; //  { | o | Int( 3 * aRes[ 1 ] / 6 ) + 30 }, ;
                        { | o | XEval( o:oWnd:aControls[ 3 ]:nBottom + 10 + Int( aRes[ 2 ] / 2 ) , o ) }, ;
                        { | o | XEval( o:oWnd:aControls[ 3 ]:nRight, o ) } )                  
            :SetHeightCaption( 40 )
            :SetBorderSize( 4 )
            :SetCaption( "Baixas" )
            :SetColors( CLR_WHITE, METRO_OLIVE, , )
            :SetFont( oFnt )
            :cAlignText  := "CC"
            :SetCtrlsPnel( { | o, nT, nL, nH, nW | DefDialog(  o, nT, nL, nH, nW, 4 ) } )
            :Activate()
        END

        oFnt:End()
    RETURN nil

    STATIC FUNCTION DefDialog( oP, nT, nL, nH, nW, nD )
        local oWnd, oImage, oFontSay
        local oNameUser, oPassword
        local oBtn1, oBtn2
        local oFontI, oFontBtn
        local cNameUser := space( 40 )
        local cPassword := SPACE( 40 )
     
       DEFINE FONT oFontI NAME "CALIBRI" SIZE 0,-15
       DEFINE FONT oFontBtn NAME "VERDANA" SIZE 0,-17 BOLD
       DEFINE FONT oFontSay NAME "VERDANA" SIZE 0,-25 BOLD //ITALIC
   
       DEFINE DIALOG oWnd STYLE nOr( 0, WS_CHILD ) COLOR CLR_BLACK, nRGB( 253, 254, 254 ) ;
        FROM nT, nL TO nH, nW PIXEL TRUEPIXEL OF oP
 
        @ 15, 0 SAY "Cristóbal Navarro ( ® ) " PIXEL SIZE 400,30 OF oWnd ;
           FONT oFontSay CENTER TRANSPARENT
        @ 45, 0 SAY Upper( "FiveTech:  ") + "Enter your Credentials" PIXEL ;
           SIZE 400,30 OF oWnd FONT oFontI CENTER TRANSPARENT
 
        @ 110, 50 GET oNameUser VAR cNameUser OF oWnd;
           COLOR Rgb( 128, 128, 128 ), CLR_WHITE PICTURE "@!" ;
           CUEBANNER "User" PIXEL BOTTOMBORDER ;
           FONT oFontBtn ;
           INFIELD INFONT oFontI INCLRTXT CLR_GRAY INCLRBORDER Rgb( 204, 204, 204 ) ;
           INCLRLINE CLR_RED DYNAMIC //GROUP
     
        @ 110, 50 GET oPassword VAR cPassword OF oWnd;
           COLOR Rgb( 128, 128, 128 ), CLR_WHITE;
           CUEBANNER "Enter Password" PASSWORD PIXEL BOTTOMBORDER ;
           FONT oFontBtn PICTURE "@40" ;
           INFIELD INFONT oFontI INALIGN 0
 
        @ 260, 40 FLATBTN oBtn1 PROMPT "Access" OF oWnd SIZE 140, 40 ;
           FONT oFontBtn;
           COLOR CLR_WHITE, METRO_STEEL ;
           ACTION ( oFontI:End(), oFontBtn:End(), oFontSay:End(), oWnd:End() )
 
        @ 260,210 FLATBTN oBtn2 PROMPT "Exit" OF oWnd SIZE 140, 40 ;
           FONT oFontBtn;
           COLOR CLR_WHITE, METRO_STEEL ;
           ACTION ( oFontI:End(), oFontBtn:End(), oFontSay:End(), oWnd:End() )
 
     ACTIVATE DIALOG oWnd ON INIT ( oNameUser:SetFocus() ) NOWAIT
 

    RETURN nil  
 


Tengo 2 dudas.

1ª.- Veo que el desplazamiento se realiza hasta que el úlimo objeto definido alcance la cabecera (imagen 1)
Sin embargo, quizás lo correcto sería realizarlo hasta que el último objeto definido alcance la parte inferior. (imagen 2)
Image
Image


2ª.- Al definir un dialogo dentro de los dock, no permite siempre el desplazamiento pulsando y arrastrando dentro del dock que tiene definido el diálogos .
Al probarlo en una pantalla táctil, se puede mover con el dedo pulsando en cualquier sitio. Pero si dejas la aplicación quieta (sin hacer nada) unos 7 segundos, ya no permite desplazar con el dedo dentro de los diálogos.
Sí lo permite si hace en el espacio vacio (sin docks), pero dentro no.
Una vez que vuelve a mover con el dedo desde el espacio vacio, ya se puede volver a mover pulsando dentro de los diálogos definidos
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: TDockPnel

Postby El Loco » Fri Sep 16, 2022 5:55 am

Desde que version de FiveWin esta disponible TDockPnel ?
Gracias
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: TDockPnel

Postby Antonio Linares » Fri Sep 16, 2022 6:01 am

FWH 19.05
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41323
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: TDockPnel

Postby El Loco » Fri Sep 16, 2022 12:40 pm

Antonio Linares wrote:FWH 19.05

Gracias Antonio.
Abrazo
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 4 guests