Seite 1 von 1

DCBROWSE mehrzeilig

Verfasst: So, 26. Jan 2014 12:57
von Manfred
Hi,

ich habe jetzt schon etliches durchgesehen, aber irgendwie blicke ich nicht durch. Wie macht man mehrzeilige Browse in express++?

z.B. 1 Artikel 3 Zeilen dann der nächste Artikel wieder 3 Zeilen. usw.

Re: DCBROWSE mehrzeilig

Verfasst: So, 26. Jan 2014 18:30
von Wolfgang Ciriack
Hallo Manfred,
du must die Zeilenhöhe über die Presentationparameter setzen, z.B.

Code: Alles auswählen

local aPres1:={ {XBP_PP_COMPOUNDNAME, gdl_cSayFont }, ;
                {XBP_PP_COL_HA_FGCLR, GRA_CLR_BLACK }, ;
                {XBP_PP_COL_HA_BGCLR, GRA_CLR_BACKGROUND}, ;
                {XBP_PP_COL_DA_FGCLR, GRA_CLR_BLACK }, ;
                {XBP_PP_COL_DA_BGCLR, GRA_CLR_WHITE}, ;
                {XBP_PP_HILITE_BGCLR, GRA_CLR_MYDARKBLUE}, ;
                {XBP_PP_COL_DA_ROWSEPARATOR, XBPCOL_SEP_DOTTED }, /* Row Sep          */  ;
                {XBP_PP_COL_DA_COLSEPARATOR, XBPCOL_SEP_DOTTED }, /* Col Sep          */  ;
                {XBP_PP_COL_DA_ROWHEIGHT, 55 },                  /* Row Height       */  ;
                {XBP_PP_COL_HA_COMPOUNDNAME, gdl_cHeadFont} }
Dann kannst du die Zeilen setzen über:

Code: Alles auswählen

DCBROWSECOL DATA { {|| zeile1 }, ;
                   {|| zeile2 }, ;
                   {|| Zeile3 } } ......
Allerdings gibt es ein paar Einschränkungen bzgl. Farbdarstellungen. Wenn du das noch willst, solltest due OWNERDRAWING verwenden.

Re: DCBROWSE mehrzeilig

Verfasst: So, 26. Jan 2014 18:31
von Manfred
oh

Re: DCBROWSE mehrzeilig

Verfasst: Mo, 27. Jan 2014 7:36
von Wolfgang Ciriack
Wie oh, oh gut oder oh Katastrophe :?:

Re: DCBROWSE mehrzeilig

Verfasst: Mo, 27. Jan 2014 8:27
von Manfred
sorry,

oh für: so geht das?

Das habe ich überhaupt noch nicht gewußt.

Re: DCBROWSE mehrzeilig

Verfasst: Mo, 27. Jan 2014 9:12
von Tom
Das funktioniert allerdings nicht mehr, wenn visuelle Stile aktiv sind (also z.B. eine Manifestdatei vorgefunden wird). Dann ist dieses Browse fehlerhaft. Ich empfehle dringend, für solche Fälle mit Ownerdrawing zu arbeiten. Beispiele für Browses mit Ownerdrawing, die mehrzeilige Daten anzeigen können, hatte ich, glaube ich, auch schon gepostet.

Re: DCBROWSE mehrzeilig

Verfasst: Mo, 27. Jan 2014 9:16
von Manfred
Ich hatte hier auch was darüber gelesen, aber irgendwie nicht verstanden, wie das klappen soll.

Re: DCBROWSE mehrzeilig

Verfasst: Mo, 27. Jan 2014 9:34
von Tom
Hallo, Manfred.

Anbei eines meiner Beispiele von vor zwei Jahren. Mit /PM:PM linken und eine Manifestdatei für die EXE erzeugen. Funktioniert ohne Datenbank, weil ein Array gebraust wird. Zeilen werden mehrzeilig, wenn sie CrLf enthalten (Chr(13)+Chr(10)).

Um das mit eXpress++ zu verwenden, muss die Beispielklasse per Subclassing eingebunden werden:

Code: Alles auswählen

@ ... DCBROWSE ... SUBCLASS 'XbpBrowseCustom()'
Die Spalten müssen für Ownerdrawing aktiviert werden:

Code: Alles auswählen

DCBROWSECOL ... EVAL {|o|o:DataArea:DrawMode := XBP_DRAW_OWNER}
Die Klasse selbst muss von DC_XbpBrowse abgeleitet werden:

Code: Alles auswählen

CLASS XbpBrowseCustom FROM DC_XbpBrowse
...
INLINE METHOD init( oParent, oOwner, aPos, aSize, aPP, lVisible,aGetList )
...
::DC_XbpBrowse:init( oParent, oOwner, aPos, aSize, aPP, lVisible,aGetList )
Das ist schon alles. Ein DCBROWSE, das so arbeitet, kann z.B. über den DATA-Codeblock auch Tabelleninhalte mehrzeilig anzeigen:

Code: Alles auswählen

DCBROWSECOL DATA {||db->name1+Chr(13)+Chr(10)+db->name2} HEADER "Namen" PARENT oBrowse EVAL {|o|o:DataArea:DrawMode := XBP_DRAW_OWNER}

Re: DCBROWSE mehrzeilig

Verfasst: Mo, 27. Jan 2014 9:39
von Manfred
Danke Tom,

jetzt wird mir einiges klarer.

Re: DCBROWSE mehrzeilig

Verfasst: Mo, 27. Jan 2014 10:17
von Tom
Keine Ursache. :)

In diesem Beispielcode ist noch einiges an Spielereien. Er zeigt z.B. in der Spalte ein Icon an, wenn das Wort "Berlin" im Text vorkommt. Das brauchst Du in Deiner App vermutlich nicht, aber Du könntest es vielleicht sinnvoll abändern.