El tema de usar el oBrw:bPainted del control lo copié de unos hilos en el foro donde hablaban de resaltar gets cuando tenian el foco.
Estoy pensando que podría crear una funcion que cree un TPanel en el dialogo/window, y que el XBrowse se haga hijo de ese TPanel, y el panel sea el que dibuja el rectángulo.
Voy a ver que se puede lograr con esto.
hmpaquito wrote:El tema de usar el oBrw:bPainted del control lo copié de unos hilos en el foro donde hablaban de resaltar gets cuando tenian el foco.
Si, pero si no me equivoco, en ese caso el bPainted funciona porque no pinta fuera de los límites del get.
hmpaquito wrote:Estoy pensando que podría crear una funcion que cree un TPanel en el dialogo/window, y que el XBrowse se haga hijo de ese TPanel, y el panel sea el que dibuja el rectángulo.
Voy a ver que se puede lograr con esto.
Si es otra forma de abordarlo. Hacer una clase "intermedia" que albergue el browse y le añada el marco y encapsule la complejidad. Podria ser algo asi como TBrowsePanel()
Claro, la idea básica es dibujar una línea tenue donde el browse, por no tener datos, no pinta nada y deja una zona blanca. Si tiene datos el recuadro no es necesario.
oBrw:bPainted:= {|hDC|
LOCAL hPen := CreatePen( PS_SOLID, 1, GRIS )
Rectangle( hDC, 0, 0, oBrw:nWidth, oBrw:nHeight, hPen )
DeleteObject( hPen )
RETURN NIL
}
cnavarro wrote:Carlos imagino que lo que pretendes es algo asi:
Local oFont
Local oFontX
Local nFI := ( 5 + 25 ) * 2
Local nFIG := nFI + 20*2
Local nCI := 6
Local nCIG := nCI + 2*2
Local nInc := 40*2
Local nW := 264
Local nH := 24/0.8
Local oBrw
aTablasStruc := { {"EMPTY","U", 0, 0,"EMPTY", 0} }
DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -20 //-52
DEFINE FONT oFontX NAME "Segoe UI SemiLight" SIZE 0, -14 //-52
//? GetDialogBaseUnits()[ 1 ], GetDialogBaseUnits()[ 2 ]
@ nFI - 50, nCI SAY oTitPnel1 PROMPT " Tabla: [ "+;
IF( Empty( cTblMdb ), " SIN SELECCION ", ;
" " + Upper( cTblMdb ) + " ")+" ]" ;
SIZE nW, nH PIXEL oF oPnel1 ;
COLOR METRO_WINDOW, METRO_GRIS1 FONT oFont
@ nFI+nInc*0 + 2, nCIG XBROWSE oXBrwStruc ;
ARRAY aTablasStruc ; // CELL ;
FONT oFontX ;
SIZE nW-4, Int(nH)*11 - 20 PIXEL oF oPnel1 //NOBORDER
WITH OBJECT oXBrwStruc
:lHScroll := .F.
:lVScroll := .F.
:lHeader := .T.
:lRecordSelector := .F.
:l2007 := .F.
:bClrSel := { || { METRO_WINDOWTEXT, METRO_WINDOW } }
:bClrStd := { || { METRO_WINDOWTEXT, METRO_WINDOW } }
:bClrSelFocus := { || { METRO_WINDOW, METRO_APPWORKSPACE } }
:bClrHeader := { || { METRO_WINDOW, METRO_GRIS4 } }
:SetColor( METRO_WINDOWTEXT, METRO_WINDOW )
:nRowDividerStyle := LINESTYLE_NOLINES //4
:nColDividerStyle := LINESTYLE_NOLINES //4
:nMarqueeStyle := 5 //3
:nRowHeight := nH
:lAutoSort := .F.
:SetArray( aTablasStruc )
END
WITH OBJECT oXBrwStruc:aCols[ 1 ]
:nWidth := ( 2*Int((nW-6) / 4) ) //( 2*Int((nW-6) / 3) ) - 2
:cHeader := " Campo " //" Field "
:nDataStrAlign := 0
:lAllowSizing := .F.
:oHeaderFont := oFont
END
WITH OBJECT oXBrwStruc:aCols[ 2 ]
:nWidth := ( 1*Int((nW-6) / 4) ) - 2 //Int( (nW-6) / 3 ) - 3
:cHeader := " Tipo "
:nDataStrAlign := 2
:lAllowSizing := .F.
:oHeaderFont := oFont
END
WITH OBJECT oXBrwStruc:aCols[ 3 ]
:nWidth := ( 1*Int((nW-6) / 4) ) - 2 //Int( (nW-6) / 3 ) - 3
:cHeader := "Len"
:nDataStrAlign := 2
:lAllowSizing := .F.
:oHeaderFont := oFont
END
WITH OBJECT oXBrwStruc:aCols[ 4 ]
:nWidth := Int( (nW-6) / 4 ) - 3
:cHeader := "Dec"
:nDataStrAlign := 2
:lAllowSizing := .F.
:oHeaderFont := oFont
END
WITH OBJECT oXBrwStruc:aCols[ 5 ]
:nWidth := ( 2*Int((nW-6) / 4) ) - 2 //Int( (nW-6) / 3 ) - 3
:cHeader := "Name Type"
:nDataStrAlign := 2
:lAllowSizing := .F.
:oHeaderFont := oFont
END
WITH OBJECT oXBrwStruc:aCols[ 6 ]
:nWidth := Int( (nW-6) / 3 ) - 3
:cHeader := "Type"
:nDataStrAlign := 1
:lAllowSizing := .F.
:oHeaderFont := oFont
END
oXBrwStruc:CreateFromCode()
cnavarro wrote:Pues creo que nada del otro mundo, es un xbrowse normal:
.....
Como te dije en mi anterior post no utilizo recursos
Espero te solucione algo
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 113 guests