Q&A

  • Table의 DisplayFormat이 무시되는 현상의 해결책은?
table을 Field Editer에 필드를 등록해서 Display Format을 ##0.00으로 줬습니다.

여기까지는 괜찮았는데 필트의 특정값에대해 강조하려구 dbgrid의 OnDrawColumnCell에

아래와 같이 코딩하였습니다.

var

LeftPos: Integer;

begin

with TDBGrid(Sender).Canvas do begin

if Column.FieldName = 'GGjun' then begin

if MainTGGjun.Value < 0 then

Font.Color := clred;

end

else if Column.FieldName = 'GGto' then begin

if MainTGGto.Value < 0 then

Font.Color := clred;

end

else begin

Brush.Color := clWindow;

Font.Color := clWindowText;

end;



if (gdFocused in State) or (gdSelected in State) then begin

Brush.Color := clHighlight;

Font.Color := clHighlightText;

end;

FillRect(Rect);

LeftPos := Rect.Right - TDBGrid(Sender).Canvas.TextWidth(Column.Field.AsString);

TextOut(LeftPos-2, Rect.Top+2, Column.Field.AsString);

Brush.Style := bsSolid;

Brush.Color := clWindow;

end;



그랬더니 원래 디비가 가지고 있는 값 그대로를 출력하는군요.

뭔가 방법이 없을까요? 자릿수가 안맞아서 보기가 어렵다는군요.

그리구 데이터를 엑셀로 넘길때두 그냥 넘어가서 보기가 않좋습니다.

디비에 원래부터 원하는 형식으루 저장되면 좋을거 같은데요. 고수님들의 고견 기다리겠습니다. ^-^







2  COMMENTS
  • Profile
    최석기 2000.09.02 07:58
    안녕하세요..

    델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다.



    님 소스 부분에서 값 디스플레이 하는 부분만 수정하면 원하는 식으로 얻을 수 잇을꺼 같네요..



    TextOut(LeftPos-2, Rect.Top+2, Column.Field.DisplayText);



    이런 식으로 수정하시면 DisplayFormat에서 준 형식으로 보여줄수 있어요..



    엑셀로 넘기실때도 마찬가지이구요.





    강인규 wrote:

    > table을 Field Editer에 필드를 등록해서 Display Format을 ##0.00으로 줬습니다.

    > 여기까지는 괜찮았는데 필트의 특정값에대해 강조하려구 dbgrid의 OnDrawColumnCell에

    > 아래와 같이 코딩하였습니다.

    > var

    > LeftPos: Integer;

    > begin

    > with TDBGrid(Sender).Canvas do begin

    > if Column.FieldName = 'GGjun' then begin

    > if MainTGGjun.Value < 0 then

    > Font.Color := clred;

    > end

    > else if Column.FieldName = 'GGto' then begin

    > if MainTGGto.Value < 0 then

    > Font.Color := clred;

    > end

    > else begin

    > Brush.Color := clWindow;

    > Font.Color := clWindowText;

    > end;

    >

    > if (gdFocused in State) or (gdSelected in State) then begin

    > Brush.Color := clHighlight;

    > Font.Color := clHighlightText;

    > end;

    > FillRect(Rect);

    > LeftPos := Rect.Right - TDBGrid(Sender).Canvas.TextWidth(Column.Field.AsString);

    > TextOut(LeftPos-2, Rect.Top+2, Column.Field.AsString);

    > Brush.Style := bsSolid;

    > Brush.Color := clWindow;

    > end;

    >

    > 그랬더니 원래 디비가 가지고 있는 값 그대로를 출력하는군요.

    > 뭔가 방법이 없을까요? 자릿수가 안맞아서 보기가 어렵다는군요.

    > 그리구 데이터를 엑셀로 넘길때두 그냥 넘어가서 보기가 않좋습니다.

    > 디비에 원래부터 원하는 형식으루 저장되면 좋을거 같은데요. 고수님들의 고견 기다리겠습니다. ^-^

    >

    >

    >

  • Profile
    강인규 2000.09.02 07:59
    답변 감사합니다. ^-^

    그런데 디비자체에서 디스플레이 포맷처럼 저장되는 형식을 지정할순 없는건가요?

    혹시 아시면 답변 부탁드립니다.





    최석기 wrote:

    > 안녕하세요..

    > 델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다.

    >

    > 님 소스 부분에서 값 디스플레이 하는 부분만 수정하면 원하는 식으로 얻을 수 잇을꺼 같네요..

    >

    > TextOut(LeftPos-2, Rect.Top+2, Column.Field.DisplayText);

    >

    > 이런 식으로 수정하시면 DisplayFormat에서 준 형식으로 보여줄수 있어요..

    >

    > 엑셀로 넘기실때도 마찬가지이구요.

    >

    >

    > 강인규 wrote:

    > > table을 Field Editer에 필드를 등록해서 Display Format을 ##0.00으로 줬습니다.

    > > 여기까지는 괜찮았는데 필트의 특정값에대해 강조하려구 dbgrid의 OnDrawColumnCell에

    > > 아래와 같이 코딩하였습니다.

    > > var

    > > LeftPos: Integer;

    > > begin

    > > with TDBGrid(Sender).Canvas do begin

    > > if Column.FieldName = 'GGjun' then begin

    > > if MainTGGjun.Value < 0 then

    > > Font.Color := clred;

    > > end

    > > else if Column.FieldName = 'GGto' then begin

    > > if MainTGGto.Value < 0 then

    > > Font.Color := clred;

    > > end

    > > else begin

    > > Brush.Color := clWindow;

    > > Font.Color := clWindowText;

    > > end;

    > >

    > > if (gdFocused in State) or (gdSelected in State) then begin

    > > Brush.Color := clHighlight;

    > > Font.Color := clHighlightText;

    > > end;

    > > FillRect(Rect);

    > > LeftPos := Rect.Right - TDBGrid(Sender).Canvas.TextWidth(Column.Field.AsString);

    > > TextOut(LeftPos-2, Rect.Top+2, Column.Field.AsString);

    > > Brush.Style := bsSolid;

    > > Brush.Color := clWindow;

    > > end;

    > >

    > > 그랬더니 원래 디비가 가지고 있는 값 그대로를 출력하는군요.

    > > 뭔가 방법이 없을까요? 자릿수가 안맞아서 보기가 어렵다는군요.

    > > 그리구 데이터를 엑셀로 넘길때두 그냥 넘어가서 보기가 않좋습니다.

    > > 디비에 원래부터 원하는 형식으루 저장되면 좋을거 같은데요. 고수님들의 고견 기다리겠습니다. ^-^

    > >

    > >

    > >