조회해서 보이는 데이터가 금액값인데
천원단위인 3자리수마다 ,(콤마)가 보이게 조회가 가능한가요??
Cells[1, i+1] 값이 금액이라서 ,가 보이게 하고싶은데요...
formatfloat 함수를 쓰라고 하는데...
배열이라서요...
with ugd_spacu do
begin
for i := 0 to rowcount do
begin
Cells[0, i+1] := IntToStr(i+1);
Cells[1, i+1] := VarToStr(lv_money[i]);
end;
end;
고수님들의 답변 부탁드립니다...
1방법은 그냥 넣을때 곰마를 넣습니다, 그러나 실제 데이타와 다르므로 다른 소스에서 주의해야합니다.
Cells[1, i+1] := FormatFloat('#,##0', lv_money[i]);
2방법은 셀의 값과 DB데이타 값을 유지합니다, 단지 보이는것만 콤마를 넣습니다, 편집시에도 원 데이타 형식으로 나타납니다.
여기서 검색해도 많이 있습니다. 다용도로 사용하도록 함수를 만들었던 겁니다.
<!--CodeS-->
//공통함수 TStringGrid응 바꾸세요
function gfSetCellCfg(psGrid : TStringGrid; pRect : TRect;
piCol, piRow, pialign : Integer; pTxtColor, pCellColor: Tcolor; psNum2 : string): integer;
var
OldColor : TColor;
Oldalign : word;
begin
with psGrid do begin
Oldalign := settextalign(Canvas.Handle, pialign);
Canvas.Font := psGrid.Font;
Canvas.Font.Color := pTxtColor;
OldColor := Canvas.Brush.Color;
Canvas.Brush.Color := pCellColor;
case pialign of
TA_LEFT :
Canvas.TextRect(pRect,
pRect.left+10,
(pRect.Top+pRect.Bottom-psGrid.Font.Size-2) div 2,
cells[piCol,piRow]);
TA_RIGHT :
Canvas.TextRect(pRect,
pRect.right-10,
(pRect.Top+pRect.Bottom-psGrid.Font.Size-2) div 2,
gfGetCommaStr(cells[piCol,piRow])+psNum2);
TA_CENTER :
Canvas.TextRect(pRect,
(pRect.left+pRect.right) div 2,
(pRect.Top+pRect.Bottom-psGrid.Font.Size-2) div 2,
cells[piCol,piRow]);
end;
Canvas.Brush.Color := OldColor;
settextalign(Canvas.Handle, Oldalign);
end;
Result := 1;
end;
function gfGetCommaStr(psNum : string) : string;
var
sFmt : string;
i : integer;
begin
sFmt := '#,##0';
if psNum <> '' then begin
if pos('.', psNum) > 0 then begin
sFmt := sFmt+'.';
for i := 1 to (length(psNum) - pos('.', psNum) ) do
sFmt := sFmt+'0';
end;
Result := FormatFloat(sFmt, StrToFloat(psNum));
end else
Result := '';
end;
<!--CodeE-->
<!--CodeS-->
//그리드의 함수
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ARow = 0)or(ACol = 0) then
gfSetCellCfg(TStringGrid(Sender), Rect, ACol, ARow, TA_CENTER, clBlack, clWhite, '')
else if (ARow <> 0 )and(ACol = 1) then
gfSetCellCfg(TStringGrid(Sender), Rect, ACol, ARow, TA_RIGHT, clBlack, clWhite, '원');
end;
<!--CodeE-->