XbpBrowse mit Bitmaps/Icons und Text im Header
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
XbpBrowse mit Bitmaps/Icons und Text im Header
Hallo allerseits,
ich möchte im Header der Spalten mittels wechselnder Grafiken die Sortierung anzeigen.
Ich bekomme es hin, z.B. die Hintergrundfarbe des Header zu ändern, wenn ich nach der zugehörigen Spalte sortiere.
Viel schöner fände ich es allerdings, wenn eine zusätzliche Grafik (ein Pfeil) angezeigt würde.
Wie geht das?
Uli
ich möchte im Header der Spalten mittels wechselnder Grafiken die Sortierung anzeigen.
Ich bekomme es hin, z.B. die Hintergrundfarbe des Header zu ändern, wenn ich nach der zugehörigen Spalte sortiere.
Viel schöner fände ich es allerdings, wenn eine zusätzliche Grafik (ein Pfeil) angezeigt würde.
Wie geht das?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: XbpBrowse mit Bitmaps/Icons und Text im Header
Geht das auch nur für den Header?Tom hat geschrieben:Ownerdrawing.
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2824
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 95 Mal
- Danksagung erhalten: 13 Mal
Re: XbpBrowse mit Bitmaps/Icons und Text im Header
Hallo, Tom -
schon ein Termin für den Workshop in Sicht? (Ich warte da händeringend drauf.)
schon ein Termin für den Workshop in Sicht? (Ich warte da händeringend drauf.)
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: XbpBrowse mit Bitmaps/Icons und Text im Header
Etwas ausführlicher:
Du kannst/musst den Vordergrund des Headings selbst zeichnen, und dafür in der Zelle eine Information reichen, die Du in der CustomDrawCell-Routine als Darstellungshinweis für das Icon auswertest. CustomDrawCell sollte also nur auf den Zeichenbereich oCol:heading reagieren (IF aInfo[XBP_DRAWINFO_AREA] == aInfo[XBP_DRAWINFO_COLUMN:Heading) und ansonsten .F. zurückliefern, damit der Rest der Spalte vom System gezeichnet wird. Dann holst Du Dir den Inhalt der Zelle (xData := aInfo[XBP_DRAWINFO_AREA]:GetCell(aInfo[XBP_DRAWINFO_ITEM])) und prüfst auf diesen Hinweis, etwa einen Text in eckigen Klammern am Ende (Spaltenheader ist nicht mehr "Rechnungsnummer", sondern "Rechnungsnummer[SORT]"). Liegt dieser vor, lädst Du ein Icon und zeichnest es in den Zeichenbereich - beispielsweise rechtsbündig -, außerdem musst Du in diesem Fall auch den Text selbst ausgeben (GraCaptionStr), und zwar in der gewählten Vordergrundfarbe - natürlich ohne den Hinweistext. Anschließend reichst Du .F. zurück, damit das System den Rest zeichnet.
Die Beispiele von mir dafür, wie man das Ownerdrawing in Browses generell aktiviert, sind hier irgendwo im Forum - oder Du hast sie bereits.
Du kannst/musst den Vordergrund des Headings selbst zeichnen, und dafür in der Zelle eine Information reichen, die Du in der CustomDrawCell-Routine als Darstellungshinweis für das Icon auswertest. CustomDrawCell sollte also nur auf den Zeichenbereich oCol:heading reagieren (IF aInfo[XBP_DRAWINFO_AREA] == aInfo[XBP_DRAWINFO_COLUMN:Heading) und ansonsten .F. zurückliefern, damit der Rest der Spalte vom System gezeichnet wird. Dann holst Du Dir den Inhalt der Zelle (xData := aInfo[XBP_DRAWINFO_AREA]:GetCell(aInfo[XBP_DRAWINFO_ITEM])) und prüfst auf diesen Hinweis, etwa einen Text in eckigen Klammern am Ende (Spaltenheader ist nicht mehr "Rechnungsnummer", sondern "Rechnungsnummer[SORT]"). Liegt dieser vor, lädst Du ein Icon und zeichnest es in den Zeichenbereich - beispielsweise rechtsbündig -, außerdem musst Du in diesem Fall auch den Text selbst ausgeben (GraCaptionStr), und zwar in der gewählten Vordergrundfarbe - natürlich ohne den Hinweistext. Anschließend reichst Du .F. zurück, damit das System den Rest zeichnet.
Die Beispiele von mir dafür, wie man das Ownerdrawing in Browses generell aktiviert, sind hier irgendwo im Forum - oder Du hast sie bereits.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: XbpBrowse mit Bitmaps/Icons und Text im Header
Ich habe mich damit begnügt die Vordergrundfarbe des Titels der Spalte auf ROT zu setzen (das ist einfach), ich sortiere aber auch nicht in 2 Richtungen.
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: XbpBrowse mit Bitmaps/Icons und Text im Header
Feinbrandelh hat geschrieben:Ich habe mich damit begnügt die Vordergrundfarbe des Titels der Spalte auf ROT zu setzen (das ist einfach), ich sortiere aber auch nicht in 2 Richtungen.
Aber die Hintergrundfarbe zu wechseln, ist genauso einfach wie nicht gerade elegant
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: XbpBrowse mit Bitmaps/Icons und Text im Header
Hallo, Uli.
Das Beispiel hier:
http://www.xbaseforum.de/viewtopic.php?f=16&t=6096
kannst Du als Basis benutzen, also die darin enthaltene abgeleitete Klasse. Dort wird auch schon gezeigt, wie man Icons malt. Die Methode musst Du dann nur wie oben angedeutet abändern, sie also auf das jeweilige Heading beschränken - und irgendwie in den Headern (Zellinhalte) angeben, dass ein Icon gemalt werden soll (und ggf. welches).
Das Beispiel hier:
http://www.xbaseforum.de/viewtopic.php?f=16&t=6096
kannst Du als Basis benutzen, also die darin enthaltene abgeleitete Klasse. Dort wird auch schon gezeigt, wie man Icons malt. Die Methode musst Du dann nur wie oben angedeutet abändern, sie also auf das jeweilige Heading beschränken - und irgendwie in den Headern (Zellinhalte) angeben, dass ein Icon gemalt werden soll (und ggf. welches).
Herzlich,
Tom
Tom
Re: XbpBrowse mit Bitmaps/Icons und Text im Header
Hallo
ohne Ownerdrawing und die Pfeile selbst zeichnen geht im Prinzip so
setOrderTo() setzt den Index um, enthält ::oBrowse:invalidateRect()
drawIndex() Zeichnet je nach Index was mit den GRA-Funktionen möglich ist auf den Header
der Aufbau entspricht schematisch DrawCircle() im Beispiel .\XPPW32\SOURCE\samples\basics\PRESPACE\microps.prg
Liebe Grüße
Rolf
ohne Ownerdrawing und die Pfeile selbst zeichnen geht im Prinzip so
Code: Alles auswählen
oColumn := XbpColumn():new(::oBrowse,,,,aPP)
oColumn:dataLink := {|| Alltrim(NAME) }
oColumn:heading:lbClick := {|| ::setOrderTo( "UPPER(NAME)" ) }
oColumn:heading:paint := {|mp1, mp2, obj| ::drawIndex( obj, "UPPER(NAME)" ,.T.) }
oColumn:create()
::oBrowse:addColumn( oColumn )
drawIndex() Zeichnet je nach Index was mit den GRA-Funktionen möglich ist auf den Header
der Aufbau entspricht schematisch DrawCircle() im Beispiel .\XPPW32\SOURCE\samples\basics\PRESPACE\microps.prg
Liebe Grüße
Rolf
- 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 mit Bitmaps/Icons und Text im Header
hi,
das hat mit o:UseVisualStyle := .T. zu tun was ein Bitmap / Jpg als "Hintergrund" anzeigt weshalb man ja keine BG_Color "sehen" kann.
nun besteht "visual Style" ja aus 2 Teilen :und "da" findest du auch die "Pfeile" welche im Windows Explorer Detail-Ansicht verwendet werden.
man muss dabei ja nicht unbedingt die von Windows ( und Alaska ) "vorgegebene" o:styleclass verwenden.
wenn man z.b. "Tabpage" verwendet hat man den "orange" Balken.
je nach o:stylepart ist der "orange" Balken dann "oben" oder "unten"
p.s. Ownerdraw oder den o:Paint Slot kann man damit weiterhin verwenden
ein "normales" Browse sieht ja unter SL1 v.355 "anders" aus als in der v.331.UliTs hat geschrieben:... wenn eine zusätzliche Grafik (ein Pfeil) angezeigt würde.
Wie geht das?
das hat mit o:UseVisualStyle := .T. zu tun was ein Bitmap / Jpg als "Hintergrund" anzeigt weshalb man ja keine BG_Color "sehen" kann.
nun besteht "visual Style" ja aus 2 Teilen :
Code: Alles auswählen
oCol:heading:styleClass := "Header"
oCol:heading:stylePart := 1
man muss dabei ja nicht unbedingt die von Windows ( und Alaska ) "vorgegebene" o:styleclass verwenden.
wenn man z.b. "Tabpage" verwendet hat man den "orange" Balken.
je nach o:stylepart ist der "orange" Balken dann "oben" oder "unten"
p.s. Ownerdraw oder den o:Paint Slot kann man damit weiterhin verwenden
gruss by OHR
Jimmy
Jimmy