Q&A

  • Stringgrid에서 데이터 값의 크기에 따라 폰트색을 다르게..잘 않되거든요..help
데이터 파일을 읽어 스트링그리드의 각 셀에 넣고 있는데...그 값이 예를 들면 1000이상일 때

셀의 폰트를 clred 로 바꾸고...아니면..clblack 로 바꾸려고 합니다.

수많은 테스트를 해봐도...잘 않되서요...급기야...도움을 청합니다.



음..영역별로 색상을 바꾸거나 폰트를 바꾸는 것은 잘 되는데..특정 셀에 들어간 값에

따라 폰트를 바꾸는 것은...잘 않됩니다.

게다가 그 특정셀이 하나가 아니라 여러개가 될 수 밖에..없기 때문에..



스트링그리드내의 값이 특정값(예를 들면 1000이상)일 때 그 해당 셀의 폰트를 바꾸는 것은

일종의 경고를 나타내려는 것입니다.



길을 안내해 주시면~~ 열심히 응용하겠습니다.

3  COMMENTS
  • Profile
    문영철 2000.04.07 18:33
    이상학 wrote:

    > 데이터 파일을 읽어 스트링그리드의 각 셀에 넣고 있는데...그 값이 예를 들면 1000이상일 때

    > 셀의 폰트를 clred 로 바꾸고...아니면..clblack 로 바꾸려고 합니다.

    > 수많은 테스트를 해봐도...잘 않되서요...급기야...도움을 청합니다.

    >

    > 음..영역별로 색상을 바꾸거나 폰트를 바꾸는 것은 잘 되는데..특정 셀에 들어간 값에

    > 따라 폰트를 바꾸는 것은...잘 않됩니다.

    > 게다가 그 특정셀이 하나가 아니라 여러개가 될 수 밖에..없기 때문에..

    >

    > 스트링그리드내의 값이 특정값(예를 들면 1000이상)일 때 그 해당 셀의 폰트를 바꾸는 것은

    > 일종의 경고를 나타내려는 것입니다.

    >

    > 길을 안내해 주시면~~ 열심히 응용하겠습니다.



    제가 스트링그리드 셀값을 받을때 쓰는 방법인데 좀만 응용하면 될꺼에요.

    ===> pe_card := sg1.cells[0,(Sender As TStringGrid).Row];

    아마도 아래처럼 하면....



    if strtoint(sg1.cells[(Sender As TStringGrid).Cow,(Sender As TStringGrid).Row]) > 100

    font.color := clRed;



  • Profile
    이상학 2000.04.07 22:18
    감사합니다. 영철님...너무도 고맙습니다.

    음..근데..테스트 해보니까...않되네요..^^

    폰트를 바꿔야 하는 시점의 데이터가 있는 셀의 위치값은 정확히 찾지만..

    그 셀의 폰트를 바꾸지 못하고 있습니다.



    제가 고쳐야겠죠~~

    도와주셔서..감사합니다.







    문영철 wrote:

    > 이상학 wrote:

    > > 데이터 파일을 읽어 스트링그리드의 각 셀에 넣고 있는데...그 값이 예를 들면 1000이상일 때

    > > 셀의 폰트를 clred 로 바꾸고...아니면..clblack 로 바꾸려고 합니다.

    > > 수많은 테스트를 해봐도...잘 않되서요...급기야...도움을 청합니다.

    > >

    > > 음..영역별로 색상을 바꾸거나 폰트를 바꾸는 것은 잘 되는데..특정 셀에 들어간 값에

    > > 따라 폰트를 바꾸는 것은...잘 않됩니다.

    > > 게다가 그 특정셀이 하나가 아니라 여러개가 될 수 밖에..없기 때문에..

    > >

    > > 스트링그리드내의 값이 특정값(예를 들면 1000이상)일 때 그 해당 셀의 폰트를 바꾸는 것은

    > > 일종의 경고를 나타내려는 것입니다.

    > >

    > > 길을 안내해 주시면~~ 열심히 응용하겠습니다.

    >

    > 제가 스트링그리드 셀값을 받을때 쓰는 방법인데 좀만 응용하면 될꺼에요.

    > ===> pe_card := sg1.cells[0,(Sender As TStringGrid).Row];

    > 아마도 아래처럼 하면....

    >

    > if strtoint(sg1.cells[(Sender As TStringGrid).Cow,(Sender As TStringGrid).Row]) > 100

    > font.color := clRed;

    >

  • Profile
    delchobo 2000.04.07 23:41
    이상학 wrote:

    > 감사합니다. 영철님...너무도 고맙습니다.

    > 음..근데..테스트 해보니까...않되네요..^^

    > 폰트를 바꿔야 하는 시점의 데이터가 있는 셀의 위치값은 정확히 찾지만..

    > 그 셀의 폰트를 바꾸지 못하고 있습니다.

    >

    > 제가 고쳐야겠죠~~

    > 도와주셔서..감사합니다.

    >

    >

    >

    > 문영철 wrote:

    > > 이상학 wrote:

    > > > 데이터 파일을 읽어 스트링그리드의 각 셀에 넣고 있는데...그 값이 예를 들면 1000이상일 때

    > > > 셀의 폰트를 clred 로 바꾸고...아니면..clblack 로 바꾸려고 합니다.

    > > > 수많은 테스트를 해봐도...잘 않되서요...급기야...도움을 청합니다.

    > > >

    > > > 음..영역별로 색상을 바꾸거나 폰트를 바꾸는 것은 잘 되는데..특정 셀에 들어간 값에

    > > > 따라 폰트를 바꾸는 것은...잘 않됩니다.

    > > > 게다가 그 특정셀이 하나가 아니라 여러개가 될 수 밖에..없기 때문에..

    > > >

    > > > 스트링그리드내의 값이 특정값(예를 들면 1000이상)일 때 그 해당 셀의 폰트를 바꾸는 것은

    > > > 일종의 경고를 나타내려는 것입니다.

    > > >

    > > > 길을 안내해 주시면~~ 열심히 응용하겠습니다.

    > >

    > > 제가 스트링그리드 셀값을 받을때 쓰는 방법인데 좀만 응용하면 될꺼에요.

    > > ===> pe_card := sg1.cells[0,(Sender As TStringGrid).Row];

    > > 아마도 아래처럼 하면....

    > >

    > > if strtoint(sg1.cells[(Sender As TStringGrid).Cow,(Sender As TStringGrid).Row]) > 100

    > > font.color := clRed;

    > >



    Grid에서 DrawCell 이벤트에 다음과 같이 해 보시면 어떠실런지...



    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

    Rect: TRect; State: TGridDrawState);

    Var revstr : String;

    begin

    revstr := StringGrid1.Cells[acol,arow];

    if trim(revstr) = '' then exit;

    if (ACol = 2) then begin

    if StrToInt(revstr) > 1000 then begin

    StringGrid1.Canvas.FillRect(Rect); // Cell Clear

    StringGrid1.Canvas.Font.Color := clRed;

    StringGrid1.Canvas.Font.Name := '굴림체';

    StringGrid1.Canvas.Font.Size := 15;

    StringGrid1.Canvas.TextRect(Rect, Rect.Left, Rect.Top, revstr);

    end;

    end;

    end;



    질문하신 답이 맞는지 모르겠네요...

    좋은 코딩 하세요