Newsgroup: it.comp.lang.vo-clipper
Titolo: qualcuno mi puòrispondere?

Ripeto il testo già scritto nella speranza che qualcuno lo noti
Ciao a tutti.Sono un ex clipperista passato a VO sin dalla pre-rel.
nonstante le tragedie iniziali ho resistito e sono contento di averlo fatto
date le soddisfazioni che mi da VO.
Volevo sapere se qualcuno mi può aiutare riguardo ad un problema:
io vorrei colorare tutta una riga di un browser in base al valore di una
cella. Ho già visto l'esempio ormai storico del colorare una cella in base
al suo valore, ma, ammetto la mia limitatezza, non riesco a trovare il modo
di colorarla in base al valore di un'altra cella.
Se non chiedo troppo oltre a dirmi come fare si può avere un poco di codice
esplicativo.
Grazie
Giuseppe Marino
pippo....@iol.it

Giuseppe,
da un file di tips che ho sul PC ho trovato quanto segue, 
spero possa esserti utile.
----CUT HERE--------CUT HERE--------CUT HERE--------CUT HERE--------CUT
HERE----
Look in the ENHANCE.WRI in CAVO directory, for a simple sample. It's in
the DataBrowser class section or just look at this copy of the
interesting subject from ENHANCE.WRI.
Example
The following example shows how DataColumn:EnableCellDraw may be used to
highlight past
due accounts in the DataBrowser:
CLASS ColorColumn INHERIT DataColumn
  PROTECT oValidTextColor AS Color
  PROTECT oValidBackground  AS Brush
  PROTECT oInvalidTextColor AS Color
  PROTECT oInvalidBackground AS Brush
METHOD Init( oFieldSpec ) CLASS ColorColumn
  super:Init( oFieldSpec )
  oValidTextColor := Color{ COLORWHITE }
  oValidBackground := Brush{ Color{ COLORBLUE } }
  oInvalidTextColor := Color{ COLORYELLOW }
  oInvalidBackground := Brush{ Color{ COLORRED } }
RETURN self
METHOD Init( oWindow, iCtlID, oServer ) CLASS ColorSubForm
  // some initialization code
  self:Browser := ColorSubForm_Browser{ self }
  oDBDUE_DATE := ColorColumn{ ACCOUNTS_DUE_DATE{} }
  oDBDUE_DATE:Width := 12
  oDBDUE_DATE:HyperLabel := oDCDUE_DATE:HyperLabel
  oDBDUE_DATE:Caption := "DueDate"
  self:Browser:AddColumn( oDBDUE_DATE )
  oDBDUE_DATE:EnableCellDraw( #ValidDateDraw )
  // more initialization code
RETURN self
METHOD ValidDateDraw( uValue ) CLASS ColorColumn
  IF uValue < GetPastDueDate()
    self:CellTextColor := oValidTextColor
    self:CellBackground := oValidBackground
  ELSE
    self:CellTextColor := oInvalidTextColor
    self:CellBackground := oInvalidBackground
  ENDIF
RETURN NIL
I have tried it, and it actually works. The tricky part is to change the
WED generated code to use ColorColumn instead of DataColumn and to use
the self:oDBx:EnableCellDraw( #MyColorChangingFunction ).
The METHOD MyColorChangingFunction( uValue ) takes the current cell
value
as argument.
I think the reason for doing the brush setup in the init method is to
avoid memory problems, as the brush needs to be destroyed.
NB! Perhaps, if you try to call CollectForced() in
MyColorChangingFunction() it could be unnecessary to declare ColorColumn
object. I haven't tried that. You can try it and tell me, thanks!
I hope this can help. Au revoir!
--
Holger K. Pedersen
Ministry of Finance
Denmark
----CUT HERE--------CUT HERE--------CUT HERE--------CUT HERE--------CUT
HERE----
Ciao,
Antonello.


>colorarla in base al valore di un'altra cella.
Prova a  dichiarare nella classe della finestra che contiene il Browser, una
variabile "Riferimento".
Utilizza il metodo "Notify" per aggiornare il valore di tale variabile,ad
ogni spostamento di record, adeguandolo al contenuto del campo dal quale
deve dipendere il colore della riga.
Crea un metodo della classe "DataColumn" che legga la variabile
(Owner:owner:Riferimento) e che setti il colore desiderato
Dovrebbe funzionare.
Ho fatto qualcosa di simile, ma il campo guida nel mio caso era il primo del
browser ed ho utilizzato una procedura un poco diversa
Ciao Giancarlo.