Q&A

  • [재질문]조규춘님!!...Stringgrid에서의 마이너스값 필드에 색깔넣기..??
조규춘님 말뜻은 알겠는데 스트링그리드에서 특정셀이 마이너스 값일때 빨간색을 집어넣을 레코드가 루프로 돌면서 200~300레코드쯤 됩니다..

공백셀일때는 건너뛰게끔하거나,공백셀일때는 인위적으로 0 값을 넣고 다음 코딩에서 이 셀이 0보다 작을때 빨간색을 집어 넣으려고 한다면 어떻게 코딩이 이루어 져야하는건지...아직 초보라 감이 잡히지 않네요...

try..except구문을 적용한다면 어디에 어떻게 적용시켜야 하느지....??한 번 시도해 봤는데 잘 안되네요..좀 좌주세요

아래는 제가 조금 수정한 소스입니다..



//셀의 값이 마이너스일때 색깔넣기

//m은 정수변수로 정의했고 마이너스값이 들어간 셀들은 유동적으로 200~300레코드 쯤됨





with tstringgrid(sender).canvas do

begin

if (col=5) and (row>=1) then

begin

if tstringgrid(sender).cells[col,row]<>' ' then

begin

m:=strtoint(tstringgrid(sender).cells[col,row]);

end;

if m<0 then

begin

font.color:=clred;

fillrect(rect);

textout(rect.right-stringgrid1.canvas.textwidth(cellstr),rect.top+2,cellstr);

end;

end;

end;//with



2  COMMENTS
  • Profile
    Parkisu 2000.12.08 22:21
    대신 답변했다고 기분나빠하지 마시길...

    var

    cellstr:String;

    xpos, num:Integer;



    xpos:= Rect.Left+2;

    cellstr:= TStringGrid(Sender).Cells[col,row];



    > with tstringgrid(sender).canvas do

    > begin

    if Row=0 then begin

    xpos:= (Rect.Right div 2)- (TextWidth(cellstr) div 2);

    end

    else begin

    > if col=5 then

    > begin

    num:= StrToIntDef(cellstr,0);

    > cellstr:= FormatFloat('#,0',num ); //StrToInt-->StrToIntDef

    > if num<0 then

    > begin

    > Font.color:=clred;

    xpos:= Rect.Right-TextWidth(cellstr)-4;

    > end;

    > end;

    > end;



    FillRect(Rect);

    Textout(xpos, rect.top+2, cellstr);

    end;

  • Profile
    델이랑파이랑 2000.12.08 23:18
    감사합니다!!