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 20:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.01 20:56
      MediaPlayer의 AutoOpen을 프로퍼티 인스펙터에서(디자인시) False로 주세요. 그리고 이렇게 해보세요. ...
    • 신호성
      1999.05.01 17:34
      김성희 wrote: > DB는 DBase fo Window를 사용하고요... > 디비의 mname이라는 필드에 내용을 ListBox에 ...
    • 김성희
      1999.05.02 08:54
      > 안녕하세요? > 신호성 입니다. > > Table의 특정 Column을 ListBox에 넣고싶은 거죠? > Column값의 ...
    • 신호성
      1999.05.03 09:31
      > 답변 잘 보았습니다. > 쿼리사용하지않고... 테이블로만할수 없나요? > 제컴이 이상한건지(컴 사양이 ...
    • 김성희
      1999.05.03 22:17
      제 질문에 답변 해주신점 감사드립니다. 그럼, 행복하세요...
    • 박진아
    • 1999.05.01 08:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.01 17:51
      박진아 wrote: > 어느 곳이 잘못되었는지 모르겠네요. > 소스 올려요. > procedure TForm2.FormActivate...
    • 박은희
    • 1999.05.01 05:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신호성
      1999.05.01 17:41
      박은희 wrote: > 인덱스가 없는 테이블을 정렬할 수 있는 방법이 없나요..... > > 저는 파라독스db 를 ...
    • 태진환
    • 1999.05.01 04:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신호성
      1999.05.01 17:39
      태진환 wrote: > 안녕하세요.. > 델파이를 접한지 일주일되는 초보입니다. > > 제가 지금 해보구 싶은...
    • 박진아
    • 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: > 정보처리 기사 및 기능사 시험중 > 델파이 실기를 선택하였는데 실기시험은 어떻게 보...