XbpBrowse

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
georg1956
Rookie
Rookie
Beiträge: 6
Registriert: Di, 01. Okt 2013 22:20

XbpBrowse

Beitrag von georg1956 »

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) }
Benutzeravatar
AUGE_OHR
Marvin
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

Beitrag von AUGE_OHR »

georg1956 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 ) 
siehe doch mal ins Help File was der 2nd. Parameter, den du ausgelassen hast, bewirkt ;)
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) }
diese Zeile sagt lediglich das dass erst Child Element der o:DrawingArea auf die Grösse mp2 gesetzt wird.

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
georg1956
Rookie
Rookie
Beiträge: 6
Registriert: Di, 01. Okt 2013 22:20

Re: XbpBrowse

Beitrag von georg1956 »

Vielen Dank!!! Problem gelöst.

Gruß
Georg
Antworten