|
음...
위 방식의 문제점 은
1. 만약 StringGrid의 Row나 Col이 많아서
가로나 또는 세로로 Scroll을 했을 경우에 어떻게 해야하죠?
ComboBox의 위치를 모두 옮겨줘야 할것 같은데....
2. Grid의 Column-Width를 변경하게되는 경우는 어떠게 하죠?
이때도 변경되는 Column을 포함해 그 뒷쪽으로 모든 ComboBox 의 위치를 재조정해 줘야 하겠죠?
3. Row가 엄청나게 많은 경우(수천/수만?)
ComboBox의 위치값이 ???? 수만 or 수십만?
==============================
대안으로는...
1 . ComboBox를 지원하는 서드파트 컴포넌트를 사용(유료면 구매하여)하는 방법이 있구요
2. ComboBox를 지원하는 StringGrid를 만드는 방법이 있구요
3. 꼼수인데.. ComboBox는 딱 1개만 가지고 있고,.. 값을 수정할때만 Select된 Cell에 ComboBox를 배치하여
선택하도록 만들고
Edit하지 않을때는 콤보막스 모양(사각형과 오른쪽끝에 내리는 화살표버튼)을 Cell영역에 그려주는 방법
등이 있을것 같습니다.
1번을 추천합니다.
그럼..
갈라파고스인 님이 쓰신 글 :
: 예.. 조언 감사드립니다.
: 제가 그정도 실력이 안되어서요...
: 찾아보니.. 아래와 같이 하니.. 되네요... 이중 포인터... 이런곳에 쓰는 거였군요..ㅠ.ㅠ
: 진짜 되는건지는 잘 모르겠습니다.
:
: TComboBox **ComboBox2;
: ComboBox2 = new TComboBox*[i+1];
: for(int j=0; j < i ; j++)
: {
: ComboBox2[j] = new TComboBox(this);
: ComboBox2[j]->Parent = StringGrid1;
: ComboBox2[j]->Style = csDropDownList;
: TRect rect;
: rect = StringGrid1->CellRect(2+j,2);
: ComboBox2[j]->Top = rect.Top;
: ComboBox2[j]->Left = rect.Left;
: ComboBox2[j]->Width = rect.Width();
: ComboBox2[j]->Height = rect.Height();
: ComboBox2[j]->Visible = true;
: .......
: }
: 이런식으로 하니까...
:
:
: 장성호 님이 쓰신 글 :
: : OnDrawCell 이벤트에
: : 그림으로 Cell에다가 ComboBox모양 그려 넣으세요.
: :
: : 실제로 TComboBox객체 생성해서 넣는것은 거의 불가능합니다.
: :
: : --------------------------------------------------------
: :
: : 그리고 아래 코드는 문법에 문제가 있네요
: :
: : 다음과 같은 코드를 원하시는것은 아닌가 하는 생각이 드네요
: :
: : pComboBox[i]= new TComboBox(this);
: :
: :
: : 그럼..
: :
: : 갈라파고스인 님이 쓰신 글 :
: : : 안녕하세요..
: : :
: : : String grid에 다수의 ComboBox를 넣어야 합니다. 그래서 아래와 같이...
: : :
: : :
: : : TComboBox *pComboBox = new TComboBox[i+1];
: : :
: : :
: : : 해보았는데요..
: : :
: : : default constructor to initialize array element of type TComboBox라고 에러 메세지가 나오네요...
: : :
: : : 콤포넌트는 array로 동적 할당을 못하는지요...
: : :
: : : 기초가 없이 하는일이라.. 보시기에 좀 어이없어도... 조언 부탁드립니다.
: : :
: : : 감사합니다.
|