2. Zeile in Spaltenüberschrift
Moderator: Moderatoren
2. Zeile in Spaltenüberschrift
Hallo,
wie bekomme ich beim XBPBrowse() eine 2. Zeile in eine Spaltenüberschrift. Ich meine irgendwo gelesen zu haben, dass man dazu ein Semikolon benutzt, weiß aber nicht mehr ob das richtig ist.
Hat einer eine Idee?
mfg
Wolfgang
wie bekomme ich beim XBPBrowse() eine 2. Zeile in eine Spaltenüberschrift. Ich meine irgendwo gelesen zu haben, dass man dazu ein Semikolon benutzt, weiß aber nicht mehr ob das richtig ist.
Hat einer eine Idee?
mfg
Wolfgang
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: 2. Zeile in Spaltenüberschrift
ich habe mal schnell ein "Test;345" versucht und die Spalte zeigt "Test345", also so einfach geht es nicht.
Seltsam, dass das Semikolon geschluckt wird. Es kann sein dass eine Art Steuerung vorgesehen ist, aber ich habe keine solche gesehen.
Was geht ist wohl ownerdrawing.
Seltsam, dass das Semikolon geschluckt wird. Es kann sein dass eine Art Steuerung vorgesehen ist, aber ich habe keine solche gesehen.
Was geht ist wohl ownerdrawing.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: 2. Zeile in Spaltenüberschrift
siehe PDR 4990
HOWTO set multiline header of XbpBrowse()
gruss by OHR
Jimmy
Jimmy
Re: 2. Zeile in Spaltenüberschrift
Hallo,
danke für die Info. Zu 100% verstanden habe ich das alles nicht, habe aber versucht das für mein Programm umzusetzen.Wo habe ich den Denkfehler?
danke für die Info. Zu 100% verstanden habe ich das alles nicht, habe aber versucht das für mein Programm umzusetzen.
Code: Alles auswählen
oBrowse := XbpBrowse():new(oDlg:drawingArea ,, {0,33} , {300, 300}, PARA_LU ,.T.)
oBrowse : CursorMode:=XBPBRW_CURSOR_CELL // Cursor für eine Zeile
oBrowse : create()
browseblock() // Navigationsblöcke für den Browser
oxbpcol:=XbpColumn():new(,,,,PARA_LUTAB)
oXbpCol:dataLink := {|| " "+str(cyclelfz,6,0)+" " }
oBrowse:addColumn( oxbpcol)
oBrowse:getColumn(1):Heading:setCell(1,"Test") // erscheint als Heading
oBrowse:getColumn(1):Heading:setCell(2,"Zeile 2") // erscheint überhaupt nicht, gibt aber auch keine Fehlermeldung
oBrowse:getColumn(1):Heading:getCell(1) // gibt nur "Test" zurück
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: 2. Zeile in Spaltenüberschrift
wie wäre es wenn du das Beispiel aus PDR 4990 als Ausgangsbasis nehmen würdest ...
sicherlich gibt es auch andere Lösungen aber die CLASS MultiLineCellGroup ist schon mal der richtige Weg.
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: 2. Zeile in Spaltenüberschrift
ein PDR ?
in dessen Beschreibung sehe ich keine Fehlermeldung, sondern eher wie man eine fehlende Eigenschaft nachrüstet...
in dessen Beschreibung sehe ich keine Fehlermeldung, sondern eher wie man eine fehlende Eigenschaft nachrüstet...
Code: Alles auswählen
#include "Appevent.ch"
#include "Common.ch"
#include "Font.ch"
#include "Xbp.ch"
#pragma library( "xppui2.lib" )
PROCEDURE AppSys
// no Crt instances are created
RETURN
PROCEDURE DbeSys
// This program does not use index files.
// Therefore, we do not load DBE ORDER components.
IF ! DbeLoad( "DBFDBE" )
MsgBox( "Unable to load DBFDBE" )
ENDIF
IF ! DbeLoad( "FOXDBE" )
MsgBox( "Unable to load FOXDBE" )
ENDIF
DbeSetDefault( "DBFDBE" )
RETURN
CLASS MultiLineCellGroup FROM XbpCellGroup
EXPORTED:
INLINE METHOD Create( oParent, oOwner, aPos, aSize, aPP, lVisible )
// always make sure that we have two lines
::XbpCellGroup:MaxRow := 2
RETURN ::XbpCellgroup:Create( oParent, oOwner, aPos, aSize, aPP, lVisible )
ENDCLASS
CLASS MultiLineColumn FROM XbpColumn
EXPORTED:
INLINE METHOD Init( oParent, oOwner, aPos, aSize, aPP, lVisible )
::XbpColumn:Init( oParent, oOwner, aPos, aSize, aPP, lVisible )
// exchange the heading by our own header object
::Heading := MultilineCellgroup():New( self )
RETURN self
ENDCLASS
PROCEDURE Main ( name )
LOCAL nEvent, mp1, mp2, oXbp, oBrowse, aStruct, i, imax, bError, cDbe
LOCAL aCols, aPP
DEFAULT name TO GetFilename()
IF name == NIL
MsgBox ( "No Filename specified" + CHR(10) + CHR(10)+ ;
"Usage: DBBrowse []" )
RETURN
ENDIF
bError := ErrorBlock( {|oErr| Break( oErr ) } )
cDBE := "DBFDBE"
FOR i:=1 TO 2
BEGIN SEQUENCE
DbUseArea( .T., cDBE, name )
RECOVER
IF i== 1
cDBE := "FOXDBE"
LOOP
ENDIF
ENDSEQUENCE
EXIT
NEXT
ErrorBlock( bError )
IF ! Used()
MsgBox ( "Unable to open file" + CHR(10) + CHR(10)+ Name )
QUIT
ENDIF
// create std dialog
oXbp := GuiStdDialog( "Standard GUI Browser for DBF" )
// create browser in window
oBrowse := GuiBrowseDb( oXbp:drawingArea )
// create columns for all fields but exclude FoxPro specific data types
imax := FCount()
aStruct := DbStruct()
aCols := Array( imax )
FOR i:=1 TO imax
IF .NOT. aStruct[i,2] $ "BOVTXY"
aPP := {}
Aadd ( aPP, { XBP_PP_COL_HA_CAPTION, aStruct[i,1] } )
// Aadd ( aPP, { XBP_PP_COL_HA_CHARWIDTH, aStruct[i,1] } )
aCols[i] := MultiLineColumn():new(,,,,aPP)
aCols[i]:DataLink := FieldBlockTrimmed(aStruct[i,1], aStruct[i,2])
oBrowse:addColumn( aCols[i] )
ENDIF
NEXT
oBrowse:Create()
// Apply the second header line
AEval( aCols, { | o | o:Heading:SetCell( 2, "Second Line" ) } )
// overload resize that browser fills the window
oXbp:drawingArea:resize := ;
{|mp1,mp2,obj| obj:childList()[1]:setSize(mp2) }
// show browser and set focus on it
oXbp:show()
oBrowse:show()
SetAppFocus( oBrowse )
DO WHILE nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
******************************************************************
* Create GUI Browser with navigation codeblocks
******************************************************************
FUNCTION GuiBrowseDB( oParent, aPos, aSize )
LOCAL oBrowse
oBrowse := XbpBrowse():new( oParent,, aPos, aSize,, .F. )
// navigation codeblocks for the browser
oBrowse:skipBlock := {|n| DbSkipper(n) }
oBrowse:goTopBlock := {| | DbGoTop() }
oBrowse:goBottomBlock := {| | DbGoBottom() }
oBrowse:phyPosBlock := {| | Recno() }
// Code blocks for the vertical scrollbar.
// Note: DbPosition() returns values in the range from 0 to 100.
// We multiply this with 10 to increase the granularity of
// the vertical scrollbar.
oBrowse:posBlock := {| | DbPosition()*10 }
oBrowse:goPosBlock := {|n| DbGoPosition(n/10) }
oBrowse:lastPosBlock := {| | 1000 }
oBrowse:firstPosBlock := {| | 0 }
RETURN oBrowse
******************************************************************
* Create std dialog window hidden
******************************************************************
FUNCTION GuiStdDialog( cTitle )
LOCAL oDlg
DEFAULT cTitle TO "Standard Dialog Window"
oDlg := XbpDialog():new( ,,{10,10}, {600,400},, .F. )
oDlg:icon := 1
oDlg:taskList := .T.
oDlg:title := cTitle
oDlg:drawingArea:ClipChildren := .T.
oDlg:create()
oDlg:drawingArea:setFontCompoundName( FONT_DEFPROP_SMALL )
RETURN oDlg
******************************************************************
* Get filename with filedialog
******************************************************************
FUNCTION GetFilename()
LOCAL oDlg := XbpFiledialog():New(), cFile
oDlg:Title := "Please select DBF file"
oDlg:Create()
cFile := oDlg:Open( "..\..\DATA\*.DBF" )
RETURN cFile
****************************************************************************
* Data code block for fields
****************************************************************************
FUNCTION FieldBlockTrimmed( cFieldName, cType )
LOCAL bBlock
IF FieldPos( cFieldName ) <> 0
IF ! "->" $ cFieldName
cFieldName := "FIELD->"+cFieldName
ENDIF
IF cType = "C"
bBlock := &( "{|x| IIf(x==NIL,RTrim("+cFieldName+"), ;
"+cFieldName+":=x)}" )
ELSE
bBlock := &( "{|x| IIf(x==NIL,"+cFieldName+","+cFieldName+":=x) }" )
ENDIF
ENDIF
RETURN bBlock
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: 2. Zeile in Spaltenüberschrift
es gibt diverse PDR mit dem Title "HOW TO ..."
gruss by OHR
Jimmy
Jimmy