자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi StringGrid에 출력되는 Data(제목등)이 이중(잔상?)으로 나오는데 해결책을 구합니다.
2017.11.01 10:50
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
안녕하세요!!! 고수님들의 해결책을 구합니다.
DBGrid를 사용하면 정상적으로 출력되는데 StringGrid는 이상한 현상이 나타납니다.
동일한 현상이 제가 개발하는 프로그램마다 발생하여 여러가지로 방법을 각종 사이트(데브기어 사이트와 델마당등)에서
찾아봐도 도무지 해결방법이 없어 방법을 구함니다. 이것 해결하느라 몇일동안 헤매고 있답니다.
고수님들의 해결책을 기다리고 있겠습니다.
즉 나타나는 현상은 다음과 같습니다. 파일을 Attatch하였습니다.
그리고 코딩을 다음과 같이 했습니다.
procedure TfrmNPLP500D.btnQueryClick(Sender: TObject);
begin
strTotSum1.Cells[0,0] := ' 점검 항목';
strTotSum1.Cells[1,0] := ' 대상 건수';
strTotSum1.Cells[2,0] := ' 비 고';
strTotSum1.Cells[0,1] := 'A업무';
strTotSum1.Cells[1,1] := FormatFloat('0,',Ta1_1);
strTotSum1.Cells[0,2] := 'B업무';
strTotSum1.Cells[1,2] := FormatFloat('0,',Ta1_2);
end;
procedure TfrmNPLP500D.strTotSum1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
s:string;
pos:integer;
oldalign:integer;
begin
s := strTotSum1.Cells[acol, arow]; // 각 셀의 해당 값을 가져온다.
with strTotSum1.Canvas do
begin
fillrect(rect);
begin
if (acol = 1 ) then //오른쪽 정렬
begin
oldalign := setTextalign(handle, ta_right);
textrect(rect, rect.right, rect.Top+3, s);
setTextalign(handle,oldalign);
end
else if (acol = 2 ) then //왼쪽 정렬
begin
oldalign := setTextalign(handle, ta_left);
textrect(rect, rect.left, rect.Top+3, s);
setTextalign(handle,oldalign);
end
else //중앙 정렬
begin
pos := ((rect.Right - rect.Left) - textwidth(s)) div 2;
textrect(rect, rect.Left+pos, rect.Top+3, s);
end;
end;
end;
end;
어느부문에 오류가 있어서 발생한 것인가요?
고수님들의 고귀한 해결책 부탁드립니다.
감사합니다.
댓글 4
-
험프리
2017.11.01 14:53
-
AllwaysHappy
2017.11.01 16:08
추천해주신대로 DefaultDrawing 속성을 False로 지정한 후 실행해보았습니다.
그래더니,, Data가 더 이상하게(폰트가 너무커져 볼수가 없음) 나옵니다....
혹시 Drawing시 다른 속성을 지정하거나 잘 못 그린것은 아닌지요?
부탁드립니다.....
-
AllwaysHappy
2017.11.02 10:23
감사합니다.
DefaultDrawing를 False로 하고, Event를 삭제한 후에 다시 OnDrawcell Event를 다시 작성해서 실해하니 이중으로 나타나는 현상을
해결되었습니다. 그런데 StringGrid의 선택된 ROW가 무엇인지, 알수가 없습니다. 프라퍼티의 Options를 조정해도 조정된 값이 적용이 되지 않습니다. DefaultDrawing를 False로하면 StringGrid에 설정된 것들이 적용이 되지 않나요?
DefaultDrawing를 True로 하면 정상적으로(원하는 형태로) 할 수 있습니다. 좋은 해결책 부탁드립니다.
-
험프리
2020.02.04 11:42
또는 DrawingStyle을 gdsClassic으로 설정하면 잔상없이 타이틀의 글씨를 표시할 수 있습니다.
하지만, 위와 같이 설정 시 타이틀 등은 전통적인 스타일로 표시됩니다.(즉, 테마가 적용되지 않습니다.)
Delphi StringGrid에 출력되는 Data(제목등)이 이중(잔상?)으로 나오는데 해결책을 구합니다.
2017.11.01 10:50
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
안녕하세요!!! 고수님들의 해결책을 구합니다.
DBGrid를 사용하면 정상적으로 출력되는데 StringGrid는 이상한 현상이 나타납니다.
동일한 현상이 제가 개발하는 프로그램마다 발생하여 여러가지로 방법을 각종 사이트(데브기어 사이트와 델마당등)에서
찾아봐도 도무지 해결방법이 없어 방법을 구함니다. 이것 해결하느라 몇일동안 헤매고 있답니다.
고수님들의 해결책을 기다리고 있겠습니다.
즉 나타나는 현상은 다음과 같습니다. 파일을 Attatch하였습니다.
그리고 코딩을 다음과 같이 했습니다.
procedure TfrmNPLP500D.btnQueryClick(Sender: TObject);
어느부문에 오류가 있어서 발생한 것인가요?
고수님들의 고귀한 해결책 부탁드립니다.
감사합니다.
댓글 4
-
험프리
2017.11.01 14:53
-
AllwaysHappy
2017.11.01 16:08
추천해주신대로 DefaultDrawing 속성을 False로 지정한 후 실행해보았습니다.
그래더니,, Data가 더 이상하게(폰트가 너무커져 볼수가 없음) 나옵니다....
혹시 Drawing시 다른 속성을 지정하거나 잘 못 그린것은 아닌지요?
부탁드립니다.....
-
AllwaysHappy
2017.11.02 10:23
감사합니다.
DefaultDrawing를 False로 하고, Event를 삭제한 후에 다시 OnDrawcell Event를 다시 작성해서 실해하니 이중으로 나타나는 현상을
해결되었습니다. 그런데 StringGrid의 선택된 ROW가 무엇인지, 알수가 없습니다. 프라퍼티의 Options를 조정해도 조정된 값이 적용이 되지 않습니다. DefaultDrawing를 False로하면 StringGrid에 설정된 것들이 적용이 되지 않나요?
DefaultDrawing를 True로 하면 정상적으로(원하는 형태로) 할 수 있습니다. 좋은 해결책 부탁드립니다.
-
험프리
2020.02.04 11:42
또는 DrawingStyle을 gdsClassic으로 설정하면 잔상없이 타이틀의 글씨를 표시할 수 있습니다.
하지만, 위와 같이 설정 시 타이틀 등은 전통적인 스타일로 표시됩니다.(즉, 테마가 적용되지 않습니다.)
StringGrid의 DefaultDrawing 속성을 False로 지정해 보세요.
http://www.delmadang.com/community/bbs_view.asp?bbsNo=17&bbsCat=0&indx=299296&page=3819
단, 모든 셀의 내용을 직접 그려줘야 합니다.