XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]

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 Farbe des Zeilen-Cursors [ERLEDIGT]

Beitrag 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
Zuletzt geändert von UliTs am Mi, 29. Jun 2016 18:30, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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 Farbe des Zeilen-Cursors

Beitrag von UliTs »

Noch zur Info:
Die Farbe einer einzelnen Zelle ändere ich in Abhängigkeit vom Inhalt durch

Code: Alles auswählen

oXbpColumn:colorBlock := {<nColorFG>,<nColorBG>}
Perfekt wäre es, wenn es so etwas wie

Code: Alles auswählen

oXbpColumn:hiliteColorBlock := {<nColorFG>,<nColorBG>}
gäbe.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Leon
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Mi, 28. Nov 2007 12:48
Wohnort: Wien
Hat sich bedankt: 5 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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.
Gruß aus Wien
Leon
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 Farbe des Zeilen-Cursors

Beitrag 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.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag von Wolfgang Ciriack »

Gib mal den Colorblock so an:

Code: Alles auswählen

oXbpColumn:colorBlock := {<nColorFG>,<nColorBG>,<nColorFGHilite>,<nColorBGHilite>}
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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
XbpLocalCol.zip
Source
(433 Bytes) 267-mal heruntergeladen
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 ?
gruss by OHR
Jimmy
Leon
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Mi, 28. Nov 2007 12:48
Wohnort: Wien
Hat sich bedankt: 5 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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? ;-)

Bild
Gruß aus Wien
Leon
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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
gruss by OHR
Jimmy
Leon
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Mi, 28. Nov 2007 12:48
Wohnort: Wien
Hat sich bedankt: 5 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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:

Bild

Das ist definitiv mit Visual Style.
Gruß aus Wien
Leon
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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
gruss by OHR
Jimmy
Leon
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Mi, 28. Nov 2007 12:48
Wohnort: Wien
Hat sich bedankt: 5 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag von Leon »

Ich verwende eXpress.
Gruß aus Wien
Leon
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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
gruss by OHR
Jimmy
Leon
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Mi, 28. Nov 2007 12:48
Wohnort: Wien
Hat sich bedankt: 5 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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 :wink:
Gruß aus Wien
Leon
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 Farbe des Zeilen-Cursors

Beitrag 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 :-( .
Zuletzt geändert von UliTs am Mi, 29. Jun 2016 11:27, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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 Farbe des Zeilen-Cursors

Beitrag 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.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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 Farbe des Zeilen-Cursors

Beitrag 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?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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:

Code: Alles auswählen

{GRA_CLR_GREEN,GRA_CLR_DARKGRAY,GRA_CLR_GREEN,nil}
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitrag 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.
gruss by OHR
Jimmy
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 Farbe des Zeilen-Cursors [ERLEDIGT]

Beitrag 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!
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]

Beitrag 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
Viele Grüße
Wolfgang
Antworten