C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55329] Re:Re:StringGrid Column 크기 창에 맞추기
펭귄 [] 3351 읽음    2008-12-02 11:32
아 이제 제대로 되네요
저렇게 해둔 이유가
중간에 Column 크기가 수동으로 바뀌면
새로운 비율을 맞춰주려고 한건데

비율을 새로 잡아주는건
수동으로 빠뀔 때만
OnUpdateColumnSize에 해주니 되는군요
감사합니다


장성호 님이 쓰신 글 :
: 음...
: 님의 코드에서 문제점은
:
: 비율의 기준이 되어야 하는 ColumnWidth 가  계속변경되고있는 ColumnWidth를 가지고 한다는것입니다.
:
:
: 그러니 프로그램 시작할대 Grid의 Width와 각 Column의 Width를 저장해두고
:
: Grid의 크기가 변경되었을때(Form의 OnResize이벤트에서)
:
: 저장해둔 Original Grid-Width와 Column-Width를 가지고 비율을 계산하여
: Column->Width에 적용하면 될듯 합니다.
:
:
: 다음코드를 참고하세요
:
: int iOrgGridWid;
: int iOrgColWid[10];
: void __fastcall TForm1::FormCreate(TObject *Sender)
: {
:     iOrgGridWid=StringGrid1->Width;
: 
:     for(int c=0;cColCount;c++)
:         iOrgColWid[c]=StringGrid1->ColWidths[c];
: 
: }
: //---------------------------------------------------------------------------
: 
: void __fastcall TForm1::FormResize(TObject *Sender)
: {
:     int iNewGridWid=StringGrid1->Width;
:     for(int i=0;iColCount;i++)
:         StringGrid1->ColWidths[i]=(iOrgColWid[i] * iNewGridWid) / iOrgGridWid;
: 
: }
: //---------------------------------------------------------------------------
: 
: 

:
: 그럼..
:
: 펭귄 님이 쓰신 글 :
: : TMS의 AdvancedStringGrid를 쓰고 있는데요
: : StringGrid를 Client에 Align 해두고
: : Client Window에서 Resize를 할 때 Stringgrid 크기가 변하면
: : 거기에 맞춰 column들을 창 크기에 맞추려고 합니다.
: : 이것 저것 찾아봤는데 자동으로 적정 비율로 column 크기가 맞춰지지 않더라고요
: :
: : 대충 변환 전 column의 전체 width를 합쳐서 columnwidth라고 저장을 해두고
: :
: : i번째 column이 전체 columnwidth에서 차지하는 비율 = (ColWidth[i] / columnwidth)
: : 새로운 StringGrid의 사이즈 =  WindowWidth라고 하면
: :
: : 새로운 ColWidth[i] = WindowWidth* (ColWidth[i] / columnwidth)인데
: :
: : 이렇게 하면 문제가
: : 예를 들면
: : ColWidth[0]=100;
: : ColWidth[1]=30;
: :
: : 이런식으로 width 차이가 좀 크면 창이 커질 때 큰 Column은 계속 커지는데 작은 Column은 거의 변화가 없어서
: : 결과적으로 결과가 맘에 안듭니다
: : 창이 작아질 때 작은 Column이 줄어드는 속도도 너무 빠르고요
: : 뭐가 틀린게 있는건지 원래 이모양인지 -_-
: : StringGrid에서 Column 값을 정확한 비율로 StringGrid 크기에 맞춰서 변환하는 방법이 어떤게 있나요
: :
: :
: :
: : 참고:
: : void __fastcall TTcpPorts_Form::FormResize(TObject *Sender)
: : {
: :     int diff=WindowWidth-StringGrid1->Width;
: :     WindowWidth=StringGrid1->Width;
: :
: :     int columnwidth=0;
: :     int i;
: :
: :     StringGrid1->ColWidths[9]=0;
: :
: :     for(i=0;i<9;i++){
: :         columnwidth += StringGrid1->ColWidths[i];
: :     }
: :
: :     if((diff<0 && columnwidth<WindowWidth) || (diff>0 && columnwidth>WindowWidth)){
: :         for(i=0;i<9;i++){
: :             StringGrid1->ColWidths[i]=WindowWidth * StringGrid1->ColWidths[i] / columnwidth;
: :         }
: :
: :         for(i=0;i<9;i++){
: :             if(StringGrid1->ColWidths[i]<35)
: :                 StringGrid1->ColWidths[i]=35;
: :         }
: :     }
: : }

+ -

관련 글 리스트
55323 StringGrid Column 크기 창에 맞추기 펭귄 1438 2008/12/01
55324     Re:StringGrid Column 크기 창에 맞추기 장성호 2215 2008/12/01
55329         Re:Re:StringGrid Column 크기 창에 맞추기 펭귄 3351 2008/12/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.