Q&A

  • dbGrid에 자리수 찍기.. 다시.. 흑..
그리드에 자리수 콤마찍기를 가르쳐주신 함수를 사용해서 적용을 했습니다.

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.

3  COMMENTS
  • Profile
    강지영 1999.04.30 22:09
    강지영 wrote:

    > 그리드에 자리수 콤마찍기를 가르쳐주신 함수를 사용해서 적용을 했습니다.

    > 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로 바꾸어 주었거든요..

    그런데 글쎄요 님께서 말씀하신대로 포커스가 가니까 역시 콤마가 없는 상태로 되돌아 오네요..

    도움주신분들께 감사드립니다..

    즐거운 하루 되십시오.

  • Profile
    글쎄요. 1999.04.30 23:29
    제가 자세히 안 보고 답변을 했네요. 필드명으로 걸러내실려면

    DBgridDrawDataCell event에서가 아니라 DBGridDrawColumnCell

    event에서 코딩을 해주셔야 합니다. 보통 여기다 코딩을 하는 지라

    깜박했네요.

    if Column.Field = Table.FieldByName( '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;



    그럼...

  • Profile
    글쎄요. 1999.04.30 19:26
    강지영 wrote:

    > 그리드에 자리수 콤마찍기를 가르쳐주신 함수를 사용해서 적용을 했습니다.

    > 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

    > > end;

    >

    > end;

    > 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.



    ///////

    이부분을 수정하셔요.

    with (Sender as TDBGrid).Canvas do

    > begin

    Font.Color := clBlack;//추가

    > ts := table1.fieldbyname('salary').AsFloat;

    > S := formatnumber(ts);

    > fillrect(Rect);

    > TextOut(Rect.Left+2, Rect.Top+1,S);//수정

    > end;

    하지만 이 코딩의 단점은 그 셀에 포커스가 가면 원래로 되돌아 가요.

    단지 검색용이라면 그 셀에 포커스가 가지 않게하셔요. 그럼



    • 박진아
    • 1999.05.01 02:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.05.01 03:55
      박진아 wrote: > Form1 에서 Form2를 호출할때 이런 에러 메세지가 떠서요. > EDBEngineError 가 발생했...
    • 강신구
    • 1999.04.30 22:35
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.01 00:00
      음냐 제가 잘못 이해 했군요.... 일딴 Enabled를 True로 주고 Options의 goEditing은 false 로 주세...
    • 배재민
    • 1999.04.30 20:55
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.30 21:37
      음냐.... 일딴 LAN환경이라면 하드웨어적인 환경은 충족이 된상태이고 마이다스를 이용하신다면 소...
    • 배재민
      1999.04.30 22:00
      Delphi4를 이용하는데 BDE dirIDPROV32.DLL이 존재하지 않습니다. 위의 파일은 어떻게 해야 얻을 수 ...
    • 신인재
      1999.04.30 23:13
      분명히 BDE dirIDPROV32.DLL 은 있어야 합니다. 델파이 CD로 BDE부분만 다시 깔아 보세요... 하이텔 Vtoo...
    • 강신구
    • 1999.04.30 19:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.30 19:49
      프로퍼티에 보면 Fixedcols, FixedRows가 있습니다 이것의 값을 0으로 바꾸어 주세요 그럼 원하시는 ...
    • 강지영
    • 1999.04.30 07:26
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 강지영
      1999.04.30 22:09
      강지영 wrote: > 그리드에 자리수 콤마찍기를 가르쳐주신 함수를 사용해서 적용을 했습니다. > DBgridDra...
    • 글쎄요.
      1999.04.30 23:29
      제가 자세히 안 보고 답변을 했네요. 필드명으로 걸러내실려면 DBgridDrawDataCell event에서가 아니라 DB...
    • 글쎄요.
      1999.04.30 19:26
      강지영 wrote: > 그리드에 자리수 콤마찍기를 가르쳐주신 함수를 사용해서 적용을 했습니다. > DBgridDra...
    • 첩현
    • 1999.04.30 05:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.30 07:20
      첩현 wrote: > 안녕하세요... > > 트레이의 시계처럼 아이콘 대신 문자를 > > 넣어서 문자를 계속해...
    • 강지영
    • 1999.04.30 03:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.30 03:56
      강지영 wrote: > dbgrid에 자리점을 찍으래요.. > 1,000,000 이런식으로요.. 흑.. > 어디선가 본것 같기...
    • 강지영
      1999.04.30 04:22
      창민님 감사합니다. 저에게는 너무나도 큰 도움입니다.. 든든하네요... 저도 빨리 무럭무럭 자라서 창민...
    • whitekid
    • 1999.04.30 03:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.30 03:50
      whitekid wrote: > 제목 그대로 BDE의 버전을 체크하려고 합니다. > > 단 BDE API는 안쓰고.. 즉 BDE가...
    • 유민호
    • 1999.04.30 02:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • saxoji
      1999.05.01 00:41
      2-tier or 3-tier 환경으로의 programing시 자료형 중 variant가 있는 것이 아닌지? 이경우는 olevariant...
    • 신인재
      1999.04.30 20:39
      음냐...글쎄요 이런 문제는 서버쪽을 유심히 살펴 보아야 할꺼 같은데요.. 우선 서버쪽 프로그램을 고친후...
    • 김인묵
    • 1999.04.30 02:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.30 03:47
      김인묵 wrote: > 정보처리 기사 및 기능사 시험중 > 델파이 실기를 선택하였는데 실기시험은 어떻게 보...
    • 이호선
    • 1999.04.29 23:52
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.30 00:39
      이호선 wrote: > 안녕하세요. > xor연산을 써서 해볼려 했는데 Error가 나더군요 > 제가 작성한 코드는 ...
    • 전철호
      1999.04.30 01:06
      안치봉 wrote: > 이호선 wrote: > > 안녕하세요. > > xor연산을 써서 해볼려 했는데 Error가 나더군요 ...
    • 안명호
    • 1999.04.29 23:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.04.29 23:48
      안명호 wrote: > 윈도우즈 소켓 프로그래밍에 대한 자료를 찾고 있습니다. > 소장하고 계신 분 있으시면 ...
    • 문창완
    • 1999.04.29 23:02
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.30 03:44
      문창완 wrote: > > 바코드 쿠현에 대해 궁금합니다. > 그것에 대해 강좌나 설명을 부탁합니다. > 그리...
    • 안치봉
      1999.04.30 00:42
      문창완 wrote: > > 바코드 쿠현에 대해 궁금합니다. > 그것에 대해 강좌나 설명을 부탁합니다. > 그리...
    • 이호선
    • 1999.04.29 21:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.04.29 23:08
      이호선 wrote: > 안녕하세요. > c에서 Character = Character ^ 0xff 를 하여 bitwise-exclusive-or를 ...
    • 양병희
    • 1999.04.29 20:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.30 00:45
      양병희 wrote: > 컴파일시에는 error이 없었는데 > 실행을 시키면 'A Win32 API function failed'라는 오...
    • 강민정
    • 1999.04.29 20:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • rain
      1999.04.30 02:09
      Form만 불러오는 소스를 가지고는 어떤 에러인지는 정확히 모르겠습니다. 물론 모든 소스를 보여달라는 것...