그리드에 자리수 콤마찍기를 가르쳐주신 함수를 사용해서 적용을 했습니다.
DBgridDrawDataCell event에 함수를 적용하면 되겠거니.. 했는데..
컴파일은 되지만 아무런 변화가 없습니다..
제 소스를 한번 검토해주시겠습니까.
귀찮은 부탁인것은 알지만..뽀루나는 지영이 실력.. 흑...
어디가 잘못된걸까요.. 부탁드리겠습니다.
function formatnumber(I : real):String;
begin
formatnumber := formatfloat('#,##0',I);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if DBGrid1.SelectedIndex = 5 then
Edit1.Text := formatnumber(StrToFloat(DBGrid1.SelectedField.DisplayText));
end;
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
ts : real;
S : String;
begin
if field.name ='salary' then
begin
with (Sender as TDBGrid).Canvas do
begin
ts := table1.fieldbyname('salary').AsFloat;
S := formatnumber(ts);
fillrect(Rect);
TextOut(Rect.left, Rect.top,S);
end;
end;
end;
end.
> 그리드에 자리수 콤마찍기를 가르쳐주신 함수를 사용해서 적용을 했습니다.
> DBgridDrawDataCell event에 함수를 적용하면 되겠거니.. 했는데..
> 컴파일은 되지만 아무런 변화가 없습니다..
> 제 소스를 한번 검토해주시겠습니까.
> 귀찮은 부탁인것은 알지만..뽀루나는 지영이 실력.. 흑...
> 어디가 잘못된걸까요.. 부탁드리겠습니다.
>
> function formatnumber(I : real):String;
> begin
> formatnumber := formatfloat('#,##0',I);
> end;
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> if DBGrid1.SelectedIndex = 5 then
> Edit1.Text := formatnumber(StrToFloat(DBGrid1.SelectedField.DisplayText));
> end;
>
> procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
> Field: TField; State: TGridDrawState);
> var
> ts : real;
> S : String;
> begin
> if field.name ='salary' then
> begin
> with (Sender as TDBGrid).Canvas do
> begin
> ts := table1.fieldbyname('salary').AsFloat;
> S := formatnumber(ts);
> fillrect(Rect);
> TextOut(Rect.left, Rect.top,S);
> end;
> end;
>
> end;
>
> end.
안녕하세요.. 지영이 입니다..
음.. 문제를 일단은 해결을 했습니다.
원인은 아직 잘 모르겠지만
> if field.name ='salary' then
에 있었습니다.
이 부분을 if Field is TFolatField then로 바꾸어 주었거든요..
그런데 글쎄요 님께서 말씀하신대로 포커스가 가니까 역시 콤마가 없는 상태로 되돌아 오네요..
도움주신분들께 감사드립니다..
즐거운 하루 되십시오.