XbpBrowse mit Bitmaps/Icons und Text im Header

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
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

Beitrag von UliTs »

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
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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

Beitrag von Tom »

Ownerdrawing.
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
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

Beitrag von UliTs »

Tom hat geschrieben:Ownerdrawing.
Geht das auch nur für den Header?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
georg
Der Entwickler von "Deep Thought"
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

Beitrag von georg »

Hallo, Tom -


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.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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

Beitrag von Tom »

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.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
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

Beitrag von brandelh »

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
UliTs
Der Entwickler von "Deep Thought"
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

Beitrag von UliTs »

brandelh 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.
Fein :-)
Aber die Hintergrundfarbe zu wechseln, ist genauso einfach wie nicht gerade elegant :D
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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

Beitrag von Tom »

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).
Herzlich,
Tom
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Re: XbpBrowse mit Bitmaps/Icons und Text im Header

Beitrag von Rolf »

Hallo
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 )
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
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 mit Bitmaps/Icons und Text im Header

Beitrag von AUGE_OHR »

hi,
UliTs hat geschrieben:... wenn eine zusätzliche Grafik (ein Pfeil) angezeigt würde.
Wie geht das?
ein "normales" Browse sieht ja unter SL1 v.355 "anders" aus als in der v.331.
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
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
gruss by OHR
Jimmy
Antworten