Hallo,
ich habe mit XbpBrowse eine DBF als Tabelle dargestellt.
In der DBF sind sehr lange Felder (über 100 Zeichen). Jetzt muß ich diese immer mit der Maus verkleinern.
Wie kann ich die Tabellenbreite automatisch einstellen.
Gruß
Georg
Beispiel:
* Spalten für alle Felder anfügen
FOR i:=1 TO br_azf
cField := substr(nam,1,10)
dField := br_hld
oBrowse:addColumn( FieldBlock(cField), , dField, dField )
NEXT
* Der Browser füllt nach :resize() immer das Fenster aus
oDlg_br:DrawingArea:resize := {|mp1,mp2,obj| obj:childList()[1]:setSize(mp2) }
XbpBrowse
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: XbpBrowse
siehe doch mal ins Help File was der 2nd. Parameter, den du ausgelassen hast, bewirktgeorg1956 hat geschrieben:Jetzt muß ich diese immer mit der Maus verkleinern.
Wie kann ich die Tabellenbreite automatisch einstellen.Code: Alles auswählen
oBrowse:addColumn( FieldBlock(cField), , dField, dField )
diese Zeile sagt lediglich das dass erst Child Element der o:DrawingArea auf die Grösse mp2 gesetzt wird.georg1956 hat geschrieben:* Der Browser füllt nach :resize() immer das Fenster aus
oDlg_br:DrawingArea:resize := {|mp1,mp2,obj| obj:childList()[1]:setSize(mp2) }
vermutlich ist das Browse hierbei das einzige XbPart und füllt den XbpDialog:DrawingArea "voll aus".
Ansonsten müsste man jedes einzelne XbPart der o:ChildList() abarbeiten.
Die einzelnen Spalten eines Browse werden damit nicht angesprochen sondern müssen explizit in einer FOR / NEXT bearbeitet werden und könnte so aussehen
Code: Alles auswählen
oDlg:DrawingArea:resize := { | aOldSize, aNewSize, oSelf | ;
Dlg1_Resize( aOldSize, aNewSize, oSelf ) }
PROCEDURE Dlg1_Resize( aOldSize, aNewSize, oDraw )
...
oDraw:lockUpdate( .T. )
aChild := oDraw:Childlist()
iMax := LEN( aChild )
FOR i := 1 TO iMax
DO CASE
...
CASE aChild[i] :isDerivedFrom( "XbpBrowse" )
//
// sum Columne wide
//
jMax := aChild[i] :colCount
j := 1
FOR j := 1 TO jMax
oCol := aChild[i] :getColumn( j )
aSize := oCol:dataarea:currentsize()
nSum += aSize[ 1 ]
NEXT
//
// we only resize Columne 3 while Font is not change
// Field SYMTOM
//
oCol := aChild[i] :getColumn( 3 )
aSize := oCol:dataarea:currentsize()
//
// adjust Columne
//
oCol:setSize( { aPbSize[ 1 ] - (nSum - aSize[ 1 ] - ( 2 * nCXBORDER ))-20 , oCol:currentsize() [2]-STATBARHEIGH } )
//
// now set new Browse Pos / Size
//
aChild[i] :setPosAndSize( { 0, STATBARHEIGH }, { aNewSize[ 1 ], aNewSize[ 2 ] - TOOLBUTTONHEIGH - STATBARHEIGH } )
...
ENDCASE
NEXT
oDraw:setsize( aNewSize )
oDraw:lockUpdate( .F. )
IF aOldSize[ 1 ] = 1 .AND. aOldSize[ 2 ] = 1 // spezial
oDraw:invalidateRect()
else
oDraw:show()
ENDIF
RETURN
gruss by OHR
Jimmy
Jimmy