Transparenter Zeilencursor bei XbpBrowse

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Transparenter Zeilencursor bei XbpBrowse

Beitrag von Werner_Bayern »

Servus,

Ownerdrawing hab ich noch nie gemacht und möchte eigentlich nur im XbpBrowse farbige Zeilen und einen transparenten Zeilencursor, so wie bei VisualStyle (die ich wg. Colorblock ja abschalten muss):
browse2.PNG
browse2.PNG (3.25 KiB) 5589 mal betrachtet
Der Code sieht aktuell so aus:

Code: Alles auswählen

   oBrowse := XbpBrowse():new( oParent,, aPos, aSize,;
   {{XBP_PP_HILITE_FGCLR, XBPSYSCLR_HILITEFOREGROUND}, {XBP_PP_HILITE_BGCLR, XBPSYSCLR_INACTIVETITLETEXTBGND},;
   {XBP_PP_BGCLR, XBPSYSCLR_WINDOW}, {XBP_PP_FGCLR, XBPSYSCLR_WINDOWTEXT},;
   {XBP_PP_COL_HA_FRAMELAYOUT, XBPFRAME_RAISED+XBPFRAME_BOX+XBPFRAME_THICK}, {XBP_PP_COL_DA_FRAMELAYOUT, XBPFRAME_BOX+XBPFRAME_RAISED},;
   {XBP_PP_COL_DA_CELLFRAMELAYOUT, XBPFRAME_BOX+XBPFRAME_RAISED}, {XBP_PP_COL_DA_HILITEFRAMELAYOUT, XBPFRAME_BOX}}, .F. )
   oBrowse:cursorMode := XBPBRW_CURSOR_ROW   // Zeilencursor
   oBrowse:clipSiblings := .t.
   oBrowse:useVisualStyle := .f. // sonst kein Colorblock...
   oBrowse:hScrollObject:useVisualStyle := .T.
   oBrowse:vScrollObject:useVisualStyle := .T.
   oBrowse:create()
daraus wird aber nur:
browse3.PNG
browse3.PNG (3.06 KiB) 5589 mal betrachtet
und ich bekomme einfach keinen transparenten Cursor hin, bei dem dann auch die Hintergrundfarbe der Zelle / Zeile noch sichtbar ist, so wie es automatisch bei useVisualStyle := .t. funktioniert.

Die abgerundeten Ecken des Zeilencursors wie bei VS wären auch nicht schlecht.

Was mache ich falsch?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: Transparenter Zeilencursor bei XbpBrowse

Beitrag von Werner_Bayern »

Nachtrag: Durch einen Zufall habe ich festgestellt, dass mit den Einstellungen und der XppUi1.dll vom 05.04.2012 der Cursor korrekt transparent ist, jedoch mit der Version vom 02.04.2013 nicht!
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Transparenter Zeilencursor bei XbpBrowse

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:XppUi1.dll vom 05.04.2012
das ist doch Hotfix 45 ... hm ... :-k

IMHO gab es da doch Probleme mit visual Style ...
http://www.xbaseforum.de/viewtopic.php?f=32&t=6132
http://www.xbaseforum.de/viewtopic.php?f=36&t=6105
http://www.xbaseforum.de/viewtopic.php?f=23&t=6178
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: Transparenter Zeilencursor bei XbpBrowse

Beitrag von Werner_Bayern »

Ja, so ist es.

Weiß jemand die Presentation-Parameter für den transparenten, hellblauen Zeilencursor?
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Transparenter Zeilencursor bei XbpBrowse

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:Ja, so ist es.
und warum nimmst du die FALSCHE Version ?
Werner_Bayern hat geschrieben:Weiß jemand die Presentation-Parameter für den transparenten, hellblauen Zeilencursor?
das ist ein Windows 7 "visual Style" den gibt es NUR wenn oBrowse:usevisualStyle := .T.

btw. Transparenz (Aero Style) unter Win 8/8.x ist eh nicht mehr ohne "Hack"

was du brauchst ist entweder dieser Class oder Ownerdraw.

Code: Alles auswählen

CLASS XbpColumnLocal FROM XbpColumn
   EXPORTED:

INLINE METHOD HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
LOCAL aColor
LOCAL RETVAR

   IF ( lHilite )                                        
      IF ::colorBlock # NIL
         aColor := EVAL( ::colorBlock )
         IF aColor = NIL
            RETVAR := ::XbpColumn:HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
         ELSE
            RETVAR := ::dataArea:setCellColor( nRowPos, aColor[ 1 ], aColor[ 2 ] )
         ENDIF
      ELSE
         RETVAR := ::XbpColumn:HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
      ENDIF
   ELSE
      RETVAR := ::XbpColumn:HiliteRow( nRowPos, lHilite, lFrame, lRepaint )
   ENDIF
   RETURN RETVAR
damit wird ein ColorBlock trotz oBrowse:usevisualStyle := .T. ( default ) angezeigt ( weil es nochmal darüber gemalt wurde )
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: Transparenter Zeilencursor bei XbpBrowse

Beitrag von Werner_Bayern »

Servus Jimmy,

das passiert ja bei

Code: Alles auswählen

RETVAR := ::dataArea:setCellColor( nRowPos, aColor[ 1 ], aColor[ 2 ] )
Aber trotz

Code: Alles auswählen

RETVAR := ::dataArea:setCellColor( nRowPos, aColor[ 1 ], aColor[ 2 ], .t. )
passiert da nichts bei mir, die Darstellung bleibt so, als ob diese Zeile nicht ausgeführt würde (was aber der Fall ist).
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Transparenter Zeilencursor bei XbpBrowse

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:passiert da nichts bei mir, die Darstellung bleibt so, als ob diese Zeile nicht ausgeführt würde (was aber der Fall ist).
du verwendest "die" Class XbpColumnLocal und hast einen Colorblock für "die" Column verwendet und siehst trotzdem keine Farbe ?

zeigt doch bitte mal wie du eine Column für ein Browse verwendest.
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: Transparenter Zeilencursor bei XbpBrowse

Beitrag von Werner_Bayern »

Code: Alles auswählen

oXbpColumn := XbpColumnLocal():new(,,,,BROWSE_DATUM)
oXbpColumn:dataLink := {||offenpo->nettodatum}
oXbpColumn:colorblock := {|| if(offenpo->nettodatum - date() > 0, NIL, {val(aSystem[INIFARBENBROWSEGESPERRT]), NIL})}
oXbpColumn:create(,,,,{{XBP_PP_COL_HA_CAPTION, "fällig netto"}, {XBP_PP_COL_DA_CHARWIDTH, 6}})
oBrowse:addColumn(oXbpColumn)
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Transparenter Zeilencursor bei XbpBrowse

Beitrag von Tom »

Den transparenten Gradientencursor gibt es nur mit visuellen Stilen und entsprechenden Windows-Themes (Aero). Man kann ihn aber per Ownerdrawing nachbauen.
Herzlich,
Tom
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: Transparenter Zeilencursor bei XbpBrowse

Beitrag von Werner_Bayern »

Tom hat geschrieben:Den transparenten Gradientencursor gibt es nur mit visuellen Stilen und entsprechenden Windows-Themes (Aero). Man kann ihn aber per Ownerdrawing nachbauen.
Also nix mit

Code: Alles auswählen

{XBP_PP_HILITE_BGCLR, XBPSYSCLR_INACTIVETITLETEXTBGND}
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Transparenter Zeilencursor bei XbpBrowse

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:

Code: Alles auswählen

oXbpColumn:colorblock := {|| if(offenpo->nettodatum - date() > 0, NIL, {val(aSystem[INIFARBENBROWSEGESPERRT]), NIL})}
kein Wunder bei "dem" o:Colorblock ...

Code: Alles auswählen

     {|xValue| IIf( <lExpression>, {<nColorFG1>,<nColorBG1>}, ; 
                                   {<nColorFG2>,<nColorBG2>}  )
also ein Array aus 2 Elementen pro Farbe ( oder NIL ).

Code: Alles auswählen

{|| IF(ABZU->ABZUMODUS='AUS',{7,1},{5,1}) }
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: Transparenter Zeilencursor bei XbpBrowse

Beitrag von Werner_Bayern »

Servus Jimmy,

nein, lt. Hilfe:
{|xValue| IIf( <lExpression>, {<nColorFG1>,<nColorBG1>}, ;

{<nColorFG2>,<nColorBG2>} )

Zur Farbdefinition können Konstanten verwendet werden, die mit GRA_CLR_ oder XBP_SYSCLR_ beginnen. Anstelle einer Konstante kann auch der Wert NIL in ein Arrayelement eingetragen werden. In diesem Fall bleibt die entsprechende Farbe der Zelle unverändert. Dadurch kann beispielsweise nur die Vordergrundfarbe geändert werden.
Und so funktioniert es ja auch. Der Column-Colorblock funktioniert, mir geht es um den transparenten Zeilencursor.
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Transparenter Zeilencursor bei XbpBrowse

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:... mir geht es um den transparenten Zeilencursor.
den gibt es NICHT !
ein XBPBRW_CURSOR_ROW wird immer einen Colorblock bei o:HiliteRow() "übermalen", deshalb Diego's Hilite Class welche dort ansetzt.

wenn du meinst das eine ältere XppUi1.dll es "so", wie du es willst, machen würde kann ich dazu nur sagen das IMHO ein BUG im visual Design der älteren XppUi1.dll vorliegt.

p.s. was sagt denn Alaska dazu ?
gruss by OHR
Jimmy
Antworten