Como alterar fonte num listview dependendo de uma condição?

Delphi

19/06/2006

Fala galera blz?

Dei uma pesquisada aqui no fórum mais não achei.

To usando um listview no lugar do DBGrid e gostaria de alterar a fonte de um registro para negrito, só que dependendo de uma condição.
Num DBGrid eu faria assim Ex: if DmGeral.QRClienteNOME.Value =´Fulano´ then
DBGrid1.Canvas.Fonte.Style := [fsBold];
Mais não to conseguindo fazer isso usando o listview.

Se alguém puder me ajudar, ficarei grato.

Desde já agradeço.


Vitoreduardo

Vitoreduardo

Curtidas 0

Respostas

Rodc

Rodc

19/06/2006

ListView1.Font.Style := [fsBold];

Isto não resolve o problema?


GOSTEI 0
Vitoreduardo

Vitoreduardo

19/06/2006

Fala rodc

Não funcionou.

Fiz assim:
If DM_Geral.IBDSContas.FieldByName(´Situacao´).Value = ´Pago´then
begin
 ListView1.Font.Style := [fsBold]; 
end;



GOSTEI 0
Rodc

Rodc

19/06/2006

Usando a função OnCustomDrawItem() do ListView eu consegui fazer a linha ficar em negrito. Mas não entendi bem como funciona, porque se tirar a linha do TextOut ele não faz o negrito. Mas tenta aí. Se não conseguir dá uma olhada no help e na net para descobrir como estes eventos de OnDraw do ListView funcionam.
    if (Item.Caption = ´teste´)
    begin
        Sender.Canvas.Font->Style := [fsBold];
        Sender.Canvas.TextOut(0, 0, ´´);
    end;

Abraços,


GOSTEI 0
Rodc

Rodc

19/06/2006

Opâ, no código troca o ´->´ por ponto. É que eu copiei do BCB.


GOSTEI 0
Vitoreduardo

Vitoreduardo

19/06/2006

Ow rodc blz?

Fiz do jeito que vc falo.
if (Item.Caption = ´teste´) 
    begin 
        Sender.Canvas.Font->Style := [fsBold]; 
        Sender.Canvas.TextOut(0, 0, ´´); 
    end;

Mais não deu muito certo não, só se o ultimo registro tiver com a situação igual a pago, só que ai todos os registro fica em negrito.
Mais vou continuar tentando.

Obrigado.


GOSTEI 0
Rodc

Rodc

19/06/2006

Tente tirar o negrito nos outros casos:
    if (Item.Caption = ´teste´) 
    begin 
        Sender.Canvas.Font.Style := [fsBold]; 
        Sender.Canvas.TextOut(0, 0, ´´); 
    end
    else
    begin
        Sender.Canvas.Font.Style := []; 
        Sender.Canvas.TextOut(0, 0, ´´); 
    end;



GOSTEI 0
Vitoreduardo

Vitoreduardo

19/06/2006

Fiz isso:
if (Item.Caption = ´teste´) 
    begin 
        Sender.Canvas.Font.Style := [fsBold]; 
        Sender.Canvas.TextOut(0, 0, ´´); 
    end 
    else 
    begin 
        Sender.Canvas.Font.Style := []; 
        Sender.Canvas.TextOut(0, 0, ´´); 
    end;


Mais mesmo assim todos os registros ficam em negrito.


GOSTEI 0
Rodc

Rodc

19/06/2006

Tenta usar nos outros eventos ´Draw´ do componente, dá uma olhada no help para saber como usar os eventos, e procura no google algum código usando estas funções e que tenha a palavra ´fsBold´, talvês você encontre.


GOSTEI 0
POSTAR