XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]

Beitragvon UliTs » Di, 28. Jun 2016 12:29

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: 2373
Registriert: Fr, 10. Feb 2006 10:51
Wohnort: Aachen

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon UliTs » Di, 28. Jun 2016 12:41

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
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2373
Registriert: Fr, 10. Feb 2006 10:51
Wohnort: Aachen

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon Leon » Di, 28. Jun 2016 12:46

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
Leon
UDF-Programmierer
UDF-Programmierer
 
Beiträge: 74
Registriert: Mi, 28. Nov 2007 13:48
Wohnort: Wien

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon UliTs » Di, 28. Jun 2016 12:55

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
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2373
Registriert: Fr, 10. Feb 2006 10:51
Wohnort: Aachen

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon Wolfgang Ciriack » Di, 28. Jun 2016 13:26

Gib mal den Colorblock so an:

Code: Alles auswählen
oXbpColumn:colorBlock := {<nColorFG>,<nColorBG>,<nColorFGHilite>,<nColorBGHilite>}
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2235
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon AUGE_OHR » Di, 28. Jun 2016 19:11

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: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon AUGE_OHR » Di, 28. Jun 2016 19:22

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) 32-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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon Leon » Di, 28. Jun 2016 22:07

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
Leon
UDF-Programmierer
UDF-Programmierer
 
Beiträge: 74
Registriert: Mi, 28. Nov 2007 13:48
Wohnort: Wien

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon AUGE_OHR » Di, 28. Jun 2016 22:40

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon Leon » Di, 28. Jun 2016 23:05

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
Leon
UDF-Programmierer
UDF-Programmierer
 
Beiträge: 74
Registriert: Mi, 28. Nov 2007 13:48
Wohnort: Wien

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon AUGE_OHR » Di, 28. Jun 2016 23:39

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon Leon » Mi, 29. Jun 2016 0:08

Ich verwende eXpress.
Gruß aus Wien
Leon
Leon
UDF-Programmierer
UDF-Programmierer
 
Beiträge: 74
Registriert: Mi, 28. Nov 2007 13:48
Wohnort: Wien

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon AUGE_OHR » Mi, 29. Jun 2016 0:36

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon Leon » Mi, 29. Jun 2016 10:02

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
Leon
UDF-Programmierer
UDF-Programmierer
 
Beiträge: 74
Registriert: Mi, 28. Nov 2007 13:48
Wohnort: Wien

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon UliTs » Mi, 29. Jun 2016 11:10

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
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2373
Registriert: Fr, 10. Feb 2006 10:51
Wohnort: Aachen

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon Jan » Mi, 29. Jun 2016 11:21

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon UliTs » Mi, 29. Jun 2016 11:26

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: 2373
Registriert: Fr, 10. Feb 2006 10:51
Wohnort: Aachen

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon UliTs » Mi, 29. Jun 2016 11:29

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
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2373
Registriert: Fr, 10. Feb 2006 10:51
Wohnort: Aachen

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon Wolfgang Ciriack » Mi, 29. Jun 2016 11:42

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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2235
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin

Re: XbpBrowse Farbe des Zeilen-Cursors

Beitragvon AUGE_OHR » Mi, 29. Jun 2016 18:27

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]

Beitragvon UliTs » Mi, 29. Jun 2016 18:29

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
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2373
Registriert: Fr, 10. Feb 2006 10:51
Wohnort: Aachen

Re: XbpBrowse Farbe des Zeilen-Cursors [ERLEDIGT]

Beitragvon Wolfgang Ciriack » Mi, 29. Jun 2016 20:09

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
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2235
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin


Zurück zu GUI

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron