Seite 1 von 1
XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]
Verfasst: Di, 28. Jun 2016 12:29
von UliTs
Hallo allerseits,
ich benutze die Standard XbpBrowse-Klasse. Dabei ändere ich auch je nach Inhalt die Hintergrundfarbe einzelner Zellen.
Gleichzeitig habe ich dabei einen Zeilencursor zur Navigation.
Der Cursor wird dabei einheitlich in einer Farbe (Grau) dargestellt. Dies möchte ich ändern, damit man noch erkennen kann, welche Zellen im Zeilencursor ich mit einer Hintergrundfarbe versehen habe.
Geht das irgendwie?
Uli
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 12:41
von UliTs
Noch zur Info:
Die Farbe einer einzelnen Zelle ändere ich in Abhängigkeit vom Inhalt durch
Perfekt wäre es, wenn es so etwas wie
Code: Alles auswählen
oXbpColumn:hiliteColorBlock := {<nColorFG>,<nColorBG>}
gäbe.
Uli
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 12:46
von Leon
Wenn VisualStyle auf .T. gesetzt und eine .manifest Datei vorhanden ist, sollte der Zeilencursor so durchsichtig angezeigt werden, dass die Hintergrundfarben der Zellen sichtbar bleiben.
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 12:55
von UliTs
Hallo Leon,
danke für den Hinweis.
Bisher habe ich keine manifest-Datei im Einsatz. Könnte jemand hier ein Beispiel reinstellen?
Ansonsten habe ich noch die Idee, dass es mit Hilfe von
Code: Alles auswählen
:hiliteRow( <nRowPos>, <lHilite>, ;
[<lFrame>], [<lRepaint>] ) --> lSuccess
gehen könnte
Uli
Hinweis: zur Zeit setze ich (noch) 1.90.331 ein.
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 13:26
von Wolfgang Ciriack
Gib mal den Colorblock so an:
Code: Alles auswählen
oXbpColumn:colorBlock := {<nColorFG>,<nColorBG>,<nColorFGHilite>,<nColorBGHilite>}
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 19:11
von AUGE_OHR
Leon hat geschrieben:Wenn VisualStyle auf .T. gesetzt und eine .manifest Datei vorhanden ist, sollte der Zeilencursor so durchsichtig angezeigt werden, dass die Hintergrundfarben der Zellen sichtbar bleiben.
wenn man default visual Style ( .t.) verwendet sieht man einen Colorblock gar nicht mit der v1.9.355
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 19:22
von AUGE_OHR
UliTs hat geschrieben:Ansonsten habe ich noch die Idee, dass es mit Hilfe von
Code: Alles auswählen
:hiliteRow( <nRowPos>, <lHilite>, ;
[<lFrame>], [<lRepaint>] ) --> lSuccess
schon nicht schlecht im Ansatz ... aber wie soll es "automatisch" reagieren ?
ich habe dafür eine Class XbpColumnLocal
UliTs hat geschrieben:Hinweis: zur Zeit setze ich (noch) 1.90.331 ein.
in der Version ist IMHO visual Style nicht umgesetzt ... warum nutzt du nicht den "Patch" auf die SL1 v1.9.355 ?
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 22:07
von Leon
AUGE_OHR hat geschrieben:wenn man default visual Style ( .t.) verwendet sieht man einen Colorblock gar nicht mit der v1.9.355
Sicher?
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 22:40
von AUGE_OHR
Leon hat geschrieben:AUGE_OHR hat geschrieben:wenn man default visual Style ( .t.) verwendet sieht man einen Colorblock gar nicht mit der v1.9.355
Sicher?
JA
auf deinem Bild sieht man den Scrollbar und der hat keinen visual Style ...
aber jeder kann das selbst schnell testen mit dem Demo c:\ALASKA\XPPW32\SOURCE\samples\basics\GuiBrow\EBROWSE.prg. in dem Verzeichnis ist kein Manifest File.
kopiere alles in anderes Verzeichnis und lege ein EBROWSE.EXE.MANIFEST vor dem starten von project.xpj an.
wenn du es dann startest wirst du keinen o:Colorblock mehr "sehen"
nun lösche EBROWSE.EXE.MANIFEST und du siehst wieder die Farbe ( rot )
p.s. da du einen "Zebra" Style verwendest ist dort vermutlich ein o:UserVisualStyle := .F. drin
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 23:05
von Leon
AUGE_OHR hat geschrieben:JA
auf deinem Bild sieht man den Scrollbar und der hat keinen visual Style ...
Das hängt aber nur damit zusammen, dass das Programm auf einem Rechner mit Windows 10 läuft. Auf einem Rechner mit Windows 7 sieht dasselbe Programm so aus:
Das ist definitiv mit Visual Style.
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Di, 28. Jun 2016 23:39
von AUGE_OHR
Leon hat geschrieben:Das ist definitiv mit Visual Style.
JA .. der Scrollbar ist auf dem Bild wohl mit visual Style.
Frage : verwendest du Express++ oder Topdown oder andere 3-PP Lib ?
wie schon gesagt versuche das original Alaska Sample und du wirst "sehen" das visual Style o:Colorblock "verdeckt".
deshalb gilt für die SL1 v1.9.355
Code: Alles auswählen
IF XPPVER > 01900331
oBrowse:usevisualstyle := .F.
// aber visual Style für Scrollbar
oBrowse:hScrollObject:useVisualStyle := .T.
oBrowse:vScrollObject:useVisualStyle := .T.
ENDIF
wenn du eine Column Class hast kann man es auch so schreiben
Code: Alles auswählen
IF XPPVER > 01900331
oCol:dataArea:useVisualStyle := .F.
ENDIF
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 0:08
von Leon
Ich verwende eXpress.
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 0:36
von AUGE_OHR
Leon hat geschrieben:Ich verwende eXpress.
dann siehe dir mal c:\exp20\Source\Dclipx\_dcxbrow.prg an
Code: Alles auswählen
CLASS DC_XbpBrowseConfig
EXPORTED:
VAR font
VAR presParam
VAR useVisualStyleBrowse
VAR useVisualStyleScrollBars
METHOD Init
ENDCLASS
* ---------------
METHOD DC_XbpBrowseConfig:init()
::font := nil
::presParam := DC_BrowPres()
::useVisualStyleBrowse := .f.
::useVisualStyleScrollBars := .t.
RETURN self
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 10:02
von Leon
AUGE_OHR hat geschrieben:dann siehe dir mal c:\exp20\Source\Dclipx\_dcxbrow.prg an
Code: Alles auswählen
CLASS DC_XbpBrowseConfig
EXPORTED:
VAR font
VAR presParam
VAR useVisualStyleBrowse
VAR useVisualStyleScrollBars
METHOD Init
ENDCLASS
* ---------------
METHOD DC_XbpBrowseConfig:init()
::font := nil
::presParam := DC_BrowPres()
::useVisualStyleBrowse := .f.
::useVisualStyleScrollBars := .t.
RETURN self
Was willst Du damit beweisen? Das ist eine Vorgabe, die aber änderbar ist durch den Parameter USEVISUALSTYLE und ich verwende den eben, wenn eine Manifestdatei vorhanden ist. Warum das unter W10 anders aussieht als unter W7, musst Du Alaska fragen
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 11:10
von UliTs
Wolfgang Ciriack hat geschrieben:Gib mal den Colorblock so an:
Code: Alles auswählen
oXbpColumn:colorBlock := {<nColorFG>,<nColorBG>,<nColorFGHilite>,<nColorBGHilite>}
Danke für die Idee. Wenn, dann aber
Code: Alles auswählen
oXbpColumn:colorBlock := {||{<nColorFG>,<nColorBG>,<nColorFGHilite>,<nColorBGHilite>}}
Funktioniert aber leider nicht
.
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 11:21
von Jan
Hallo Uli,
ich bin mir nicht so ganz sicher was Du willst. So wie ich es verstehe willst Du, das auch unter dem Zeilencursor die Hintergrundfarbe der akuellen Felder sichtbar ist?
Das geht mit dem Colorblock nicht. Denn da legst Du fest, welche Farbe der Cursor haben soll. Und die sind nicht transparent.
Du müsstest die Farbe des Cursors abhängig machen von den Werten, wie Du es mit den Hintergrundfarben der nicht markierten Felder auch machst.
Jan
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 11:26
von UliTs
Leon hat geschrieben:Wenn VisualStyle auf .T. gesetzt und eine .manifest Datei vorhanden ist, sollte der Zeilencursor so durchsichtig angezeigt werden, dass die Hintergrundfarben der Zellen sichtbar bleiben.
Ich vermute, VisualStyle gibt es nicht bei 1.90.331.
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 11:29
von UliTs
Jan hat geschrieben:...
Du müsstest die Farbe des Cursors abhängig machen von den Werten, wie Du es mit den Hintergrundfarben der nicht markierten Felder auch machst.
...
Danke für die Nachricht.
Nur wie ändere ich die Hintergrundfarbe im Zeilencursor in Abhängigkeit von der Spalte?
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 11:42
von Wolfgang Ciriack
Ich mache das so wie oben angegeben und es klappt, allerdings ohne visualstyle.
Damit ich sehe, wenn ein Wert z.B. grün ist, setze ich die Vordergrundfarbe für Hilite auf grün, die Hintergrundfarbe Hilite auf nil.
Also so:
Re: XbpBrowse Farbe des Zeilen-Cursors
Verfasst: Mi, 29. Jun 2016 18:27
von AUGE_OHR
UliTs hat geschrieben:Nur wie ändere ich die Hintergrundfarbe im Zeilencursor in Abhängigkeit von der Spalte?
hast du dir die Class in XbpLocalCol.zip angesehen ?
du musst die Methode HiliteRow() "überschreiben" um o:Colorblock zu sehen.
Re: XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]
Verfasst: Mi, 29. Jun 2016 18:29
von UliTs
Hallo Wolfgang,
ich vermute, das ist keine Original XbpBrowse()-Klasse, denn diese erwartet definitiv (in der 1.90.331) einen Codeblock.
Ich habe jetzt aber eine Lösung gefunden:
Code: Alles auswählen
CLASS UTsXbpColumn FROM XbpColumn
EXPORTED
METHOD hiliteRow( nRowPos,lHilite,lFrame,Repaint )
ENDCLASS
METHOD UTsXbpColumn:hiliteRow( nRowPos,lHilite,lFrame,Repaint )
LOCAL lResult,aColor,aRGBColor
IF ValType( ::colorBlock )=="B" // Farbe explizit angegeben!
IF lHilite .OR. lFrame
// Cursorzeile wird gezeichnet -> Cursorfarbe selbst angeben!
aColor := Eval( ::colorBlock,::EditBuffer/*xCaption*/,self/*oXbpColumn*/,nRowPos )
aRGBColor := GraGetRGBIntensity( aColor[2]/*nRGBColor*/ )
IF .NOT. aRGBColor=NIL // Ohne Hintergrundfarbe keine Farbanpassung
lFrame := FALSE
lHilite := FALSE
aColor[1] := UTsGraSetBrightness( aColor[1]/*nRGBColor*/, 80/*nProzent*/ )
aColor[2] := UTsGraSetBrightness( aColor[2]/*nRGBColor*/,100/*nProzent*/ ) // Hintergrundfarbe laesst sich nur veraendern, wenn lFrame=lHilite=FALSE
ENDIF
ELSE
// normale Zeile wird gezeichnet -> vorgegebene Cursorfarbe nehmen!
aColor := Eval( ::colorBlock )
ENDIF
::DataArea:SetCellColor ( nRowPos,aColor[1]/*nColorFG*/,aColor[2]/*nColorBG*/,FALSE/*lRepaint*/ )
ENDIF
lResult := ::XbpColumn:hiliteRow( @nRowPos,@lHilite,@lFrame,@Repaint )
RETURN( lResult )
Dabei ist UTsGraSetBrigthness() eine UDF, die die Helligkeit eines Farbwertes verändert. Man kann stattdessen auch etwas beliebig anderes einsetzen
. Funktioniert gut!
Re: XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]
Verfasst: Mi, 29. Jun 2016 20:09
von Wolfgang Ciriack
Ja, natürlich in einem Codeblock, mir ging es um die 4 Werte - statt 2.
Das musste ich bei XBase2.0 auch überall so ändern (gegenüber 1.9), da sonst immer FGHiliteColor schwarz war.
Allerdings hast du Recht, ich benutze eXPress