sexta-feira, 26 de fevereiro de 2010

Grid Zebrada

. sexta-feira, 26 de fevereiro de 2010
0 comentários

1º - Crie o procedimento conforme mostrado a baixo.


procedure GridZebrada(cds: TClientDataSet; Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
procedure TTelaPrincipalF.GridZebrada(cds: TClientDataSet;
  Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
if odd(cds.RecNo) then
    TDBGrid(Sender).Canvas.Brush.Color := $00B9FFFF
else
    TDbGrid(Sender).Canvas.Brush.Color:= clCream;
    TDbGrid(Sender).Canvas.font.Color:= clBlack;
if gdSelected in State then
with (Sender as TDBGrid).Canvas do
begin
      Brush.Color := $004080FF;
      FillRect(Rect);
      Font.Style := [fsbold]
end;
  TDbGrid(Sender).DefaultDrawDataCell(Rect, Field, State);
end;


2º - Para utilizar este procedimento é preciso programar o mesmo no evento DrawDataCell do grid desejado.

Onde ficará assim:


procedure TTelaPrincipalF.DBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
  GridZebrada(cdsAplicativo, Sender, Rect, Field, State);
end;

Read More »»

quarta-feira, 24 de fevereiro de 2010

Colocando valor por extenso

. quarta-feira, 24 de fevereiro de 2010
0 comentários

1º temos que criar uma função assim :
  function Extenso( pValor:Extended ):String;
depois de criada pressioner a tecla ctrl+shift+c para colocar a implementação da função.
2º depois só usar esta funcção :
}
function Extenso( pValor:Extended ):String;
const
  aCifra : Array[1..6,1..2] of String = (('TRILHÃO,','TRILHOES,'),
('BILHAO,' ,'BILHÕES,' ),
('MILHAO,' ,'MILHÕES,' ),
('MIL,'     ,'MIL,' ),
('    '     ,'   ' ),
('CENTAVO' ,'CENTAVOS'));
var
  tStr,tExtenso,tSubs:String;
  tX,tCentavos:Integer;
begin
  tSubs := ' ';
  tExtenso := ' ';
  tStr := StrZero(pValor,18,2);  {funcao disponível neste livro}
  tCentavos := StrToInt( Copy(tStr,17,2) );
if pValor > 0 then
begin
if tCentavos > 0 then
      tExtenso := ExtCem( StrZero( tCentavos,3,0 )) + aCifra[6,Trunc(iif(tCentavos =1,1,2))];
if trunc( pValor ) > 0 then
      tExtenso := iif(trunc( pValor ) = 1,'REAL',' REAIS')+iif(tCentavos > 0, ' E   ','')+tExtenso;
for tX := 5 Downto 1 do
begin
      tSubs := Copy(tStr,(tX*3)-2,3);
if StrToInt( tSubs ) > 0 then
        tExtenso := ExtCem( tSubs ) + aCifra[tX,Trunc(iif(StrToInt( tSubs )=1,1,2))]+'   '+tExtenso;
end;
end;
  Result := StripDouble( tExtenso );
end;
{3º como usar ?
crie uma nova aplicação no delphi, depois de criada coloque no form.
Label
Edit
Colocado na tela vai no evento do onchange de um click, e coloque este codigo :
label.Caption := Extenso(strtoFloat(edit.text));
depois de feito isto rode sua aplicação e digite o valor que automaticamente será mostrado do label o valor por extenso.

Read More »»
Robôs 19