Q&A

  • stringgrid에서 보여지는 값에 색깔을 넣고 싶은데요
for i := 0 to rowcount - 1 do
begin
   sgd_3.cells[0,i+1] := inttostr(i + 1) ;
   sgd_3.cells[1,i+1] := lv_dept_cd[i];
end;

여기서 qty값이 0이 있다면 sgd_3.cells의 색깔을 빨간색으로 표시되게 하고 싶은데요...

for i := 0 to rowcount - 1 do
      begin
        if  CDSet1.FieldByName('qty').AsInteger = 0 then    
    // lv_dept_cd에 색깔을 빨간색으로 표시???

     end;

OnDrawCell 이벤트 핸들러에서
StringGrid의 Canvas의 Font.Color 바꾸라고 해서

for i := 0 to RecordCount - 1 do
  begin
    if CDSet1.FieldByName(`qty`).AsInteger = 0 then
    begin
       if ACol = 3 and ARow = i then
           sgd_1.Canvas.Font.Color := clRed;
    end;
  end;

이렇게 했는데도 변화가 없네요...


조회해서 나오는 값이 여러개인데 그중에서
조건이 if CDSet1.FieldByName(`qty`).AsInteger = 0  이경우를
만족시킬때만 색깔이 바뀌고 싶거든요..
stringgrid에서 첫번재는 순번, 두번째는 부서명인데... 이 두개 모두 글자색을 변경하는건데 잘안되네요..

6  COMMENTS
  • Profile
    구창민 2008.06.25 07:31
    안녕하세요..
    이런 형태로 해보세요..

    if ACol = 3 and ARow = i then
    begin
    sgd_1.Canvas.Font.Color := clRed;
    sgd_1.Canvas.TextRect(Rect, Rect.Left, Rect.Top, sgd_1.Cells[ACol, ARow]);
    end;
  • Profile
    석주현 2008.06.25 14:46
    전체적인 코드가 없어 모르겠지만 일단 위에 코드의 기본적인 스타일은 위에서 말씀해주신 형태로 고치시는 게 맞고요.
    코드 중에서 일단 Record 전체를 확인해서 작업하시려면
    CDSet1.Next;
    를 For문 어디엔가 넣으셔야 겠지요. ^^
  • Profile
    천천히 2008.06.25 19:53
    위에 같이 해도 글자색이 안변하네요..
    for문으로 돌리니까 qty가 0도 있고 0이 아닌값도 있으니까
    결국엔 글자색 안변하는거 같은데요..
    전체 코드는 이렇습니다..

    if rbt_out.Checked then
    begin
    CDSet1.Active := False;
    with EP1.SelectRPC.Params do
    begin
    ParamByName('in_reqdate1').Value := ls_in_reqdate1;
    ParamByName('in_reqdate2').Value := ls_in_reqdate2;
    ParamByName('in_dept_cd').Value := ls_in_dept_cd;
    ParamByName('in_em_norm').Value := ls_in_em_norm;
    ParamByName('in_em_cnt').Value := ls_in_em_cnt;
    CDSet1.Active := True;
    end;

    for i := 0 to CDSet1.RecordCount - 1 do
    begin
    if CDSet1.FieldByName('qty').AsInteger = 0 then
    begin
    if (ACol = 3) and (ARow = i) then
    begin
    sgd_1.Canvas.Font.Color := clRed;
    sgd_1.Canvas.TextRect(Rect, Rect.Left, Rect.Top, sgd_1.Cells[ACol, ARow]);
    end;
    end
    else
    begin
    if (ACol = 3) and (ARow = i) then
    begin
    sgd_1Canvas.Font.Color := clWindowText;
    sgd_1.Canvas.TextRect(Rect, Rect.Left, Rect.Top, sgd_1.Cells[ACol, ARow]);
    end;
    end;
    CDSet1.Next;
    end;

    end;
  • Profile
    구창민 2008.06.25 22:15
    DrawCell 이벤트 내의 코드를 모두 지우시고 아래 형태처럼 테스트 해보세요..
    if ACol = 3 then
    if sgd_1.Cells[ACol, ARow] = '0' then
    begin
    sgd_1.Canvas.Font.Color := clRed;
    sgd_1.Canvas.TextRect(Rect, Rect.Left, Rect.Top, sgd_1.Cells[ACol, ARow]);
    end;
  • Profile
    천천히 2008.06.25 22:49
    답변 감사드립니다... ^^;
    그런데 qyt 값이 0이면 글자색이 빨간색
    0이 아니면 검은색인데...
    조건 안따지고 그래도 적용시킴 모두 빨간색이 되고
    위에처럼 하면 검은색 그대로고...
    어렵네요... ㅡ..ㅠ
    구분을 어떻게 해야 할지??
    위에처럼 for 문 돌려서 하는 방법 밖에 없잖아요...
    그런데 안되니까 문제입니다... ㅡㅡ;;

    drawcell이벤트는 formcreate할때 따로 호출안하는가요??
    디버깅해보니까
    if ACol = 3 then 이조건을 아예 만족을 못시킨까
    밑에 소스가 실행이 안되는거 같더라구요...

    조언 부탁해요..
  • Profile
    구창민 2008.06.26 18:34
    천천히님.. DrawCell 이벤트는 말그대로 셀을 그릴때 발생되는이벤트인데,
    안에서 for 문을 돌릴 이유가 없습니다..
    위에 올려드린 짧은 코드는 우선 색을 변화시킬때 저런 형태로 하면 된다는 말씀을 드리려고
    올려드린 거구요.. 단계별로 하나씩 해보세요..
    말씀하신 qty의값이 있는 셀을 비교하시면 되겠네요..
    • 석주현
      2008.06.30 18:28
      TMediaPlayer Component는 컴포넌트 탭 "System"에 3번째 있습니다. 필름같은거 위에 음표 있는 거요. ...
    • 미닛메이드
      2008.07.01 00:29
      그럼 TMediaPlayer는 Mplayer Unit에 있는 Class군요 .. wavs.dcu 는 대체 어딨는거지 ㅡㅡ;
    • 미닛메이드
      2008.06.29 00:22
      procedure Paint(Canvas: TCanvas; const Device: TDeviceContext); virtual; //paint 함수 원형(Tdtp...
    • 임성길
    • 2008.06.28 00:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.06.26 06:47
      별거 없습니다. i32, f32, str, ptr이란 필드들이 하나의 메모리 공간을 공유해서 사용합니다. 때문에 ...
    • steps
    • 2008.06.25 22:10
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 민스맘
      2008.08.04 20:35
      애구....이것 저것 뒤지다 답을 찾았네요....혹시나 저처럼 필요한 분이 계실까 해서 답을 하고 갈께요 ...
    • 홍성락
      2008.06.25 05:23
      자료실에 [Vista에서 프로그램 권한상승하기...간단히 하긴 했는데...]의 예제 소스에서 사용저 권한을 ...
    • 이정욱
      2008.06.25 06:42
      불가능 합니다.. 그것이 가능하면 UAC의 의미가 없죠 ^^
    • 홍성락
      2008.06.25 18:21
      예. 그렇죠, 일단 사용자가 관리 권한이 있는 전제 조건하에서 위와같이 하면 일단 UAC로 묻지는 않을겁...
    • 이정욱
      2008.06.26 00:12
      헛.. 아닐텐데요.. 어떤것이던 관리자 권한이 필요한 부분은 물어보게 됩니다... 안물어보면.. 그부분은 ...
    • 홍성락
      2008.06.26 01:32
      예, UAC를 완전 극복(무능화)했다면 신문에 낫겠죠... 제가 해본것도 윈도우 시스템 폴더나 중대한건 ...
    • 신철우
      2008.06.27 20:01
      EXE 파일 또는 EXE파일이 들어있는 폴더의 속성 => 보안 => 편집 에서 "Authenticated User"를 선택하고 모...
    • 홍성락
      2008.06.27 20:12
      항상 텍스트 파일이나 RC파일 수정후엔 꼭 빌드해야 합니다...저는 되던데.... 안 뜬다는건 이정욱님 ...
    • 천천히
    • 2008.06.25 02:50
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.06.25 07:31
      안녕하세요.. 이런 형태로 해보세요.. if ACol = 3 and ARow = i then begin ...
    • 석주현
      2008.06.25 14:46
      전체적인 코드가 없어 모르겠지만 일단 위에 코드의 기본적인 스타일은 위에서 말씀해주신 형태로 고치시...
    • 천천히
      2008.06.25 19:53
      위에 같이 해도 글자색이 안변하네요.. for문으로 돌리니까 qty가 0도 있고 0이 아닌값도 있으니까 결...
    • 구창민
      2008.06.25 22:15
      DrawCell 이벤트 내의 코드를 모두 지우시고 아래 형태처럼 테스트 해보세요.. if ACol = 3 then if ...
    • 천천히
      2008.06.25 22:49
      답변 감사드립니다... ^^; 그런데 qyt 값이 0이면 글자색이 빨간색 0이 아니면 검은색인데... 조건 안...
    • 구창민
      2008.06.26 18:34
      천천히님.. DrawCell 이벤트는 말그대로 셀을 그릴때 발생되는이벤트인데, 안에서 for 문을 돌릴 이유가...
    • 이정욱
      2008.06.25 02:23
      무슨 말씀이신지요..? 위의 이벤트 함수들을 공통으로 사용하고 싶으신건가요? 만약 그렇다면 위 이벤...
    • 김만진
      2008.06.25 02:42
      이정욱님의 조언은 정말 감사합니다. 그런데 제가 구현하고 싶은 것은 기존 폼에서는 체크박스를 사용해...
    • 박종학
    • 2008.06.25 00:12
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 박정순
      2008.06.25 00:33
      Memo1.Lines.Text := ZQuery2. SQL.Text ; 또는 Memo1.Lines := ZQuery2. SQL 이거 아닌가요?
    • 박종학
      2008.06.25 00:40
      감사합니다. 그런데.....ㅠㅠ...결과가 아래 처럼 나옵니다..... ------------------결과--------------...
    • 석주현
      2008.06.25 15:28
      찾아 봐도 바로 쿼리 파라메터가 변환된 결과가지고 오는 게 없네요. 그냥 구현해야 할 것 같네요. ...
    • 박종학
      2008.06.25 20:38
      감사합니다. 다시 해보겠습니다....^^.. 즐거운 하루되세요..
    • 이정욱
      2008.06.24 19:53
      정식으로 하시려면, 다운그레이드를 받으셔야 합니다. 2007구매를 하셨으면, 7으로 다운그레이드 신청을 ...
    • 석주현
      2008.06.24 20:44
      저도 프로젝트 때문에 C++ 빌더 6.0을 구입해야 하는데 정욱님 말씀처럼 해야 겠네요. ^^
    • 장성호
      2008.06.25 00:06
      제가 C++Builder 2007을 구매한후에 OOC 를 통해 C++Builder 6.0 라이센스를 받았습니다. 조건은 "이...
    • 석주현
      2008.06.24 07:53
      .net 용 델파이가 있긴 한데 그게 Window CE .Net에서 100% 돌아가는 지 모르겠습니다. 그냥 일반적인 W...
    • 이정욱
      2008.06.24 18:47
      .NET Compact Framework 를 지원하는 델파이가 나오면 가능합니다. 제가 듣기로는 현재 베타버전이 나와...
    • 곽영배
      2008.06.25 03:25
      답변 감사합니다.
    • steps
    • 2008.06.24 02:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.24 18:53
      먼저 TRectLayer를 클래스로만 선언을 하시고, 나중에 객체 구성을 하면 됩니다. TRectLayer = cl...
    • steps
      2008.06.24 20:44
      아는게 없다보니 가르켜주셔도 잘 모르겠군요. TRectLayer = class; TFrame2 = class(TFrame) ...
    • 이정욱
      2008.06.24 18:58
      위의 에러는 StoredProc 컴포넌트 자체레 파라미터가 정의 되어 있지 않아서 그렇습니다. 디자인 타임...
    • 임대순
    • 2008.06.23 20:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.24 19:00
      위의 쿼리가 잘 동작한다면, 쿼리문 문제이기 보다는.. 현재 사용하신 쿼리 컴포넌트의 사용에 문제가 있...
    • 임대순
      2008.06.24 23:44
      네 ..이정욱님.. 답변 감사드립니다. 문제점을 해결 했습니다. 쿼리 컴포넌트에 문제가 있었던게 아...
    • 윤성만
    • 2008.06.23 20:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.06.23 20:35
      음 도메인 네임 서버 그러니깐 DNS 에 등록되어 있지 않은 써버의 경우 당연히 그냥 이름으로 접근이 불...
    • 김재원
    • 2008.06.23 03:19
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.23 13:31
      웹호스팅 업체에서 미들웨어를 이용하고 있거나, 아니면 DB서버를 외부에 노출하지 않은 이상 불가능 합...
    • 김재원
      2008.06.23 22:01
      답변 감사합니다... 노출 되어 있는 웹 호스팅 업체가 있을까요? ^^;;