Q&A

  • StringGrid에 ComboBox를 넣긴 넣었는데 ...
StringGrid에 ComboBox를 넣긴 넣었는데 그 ComboBox에 item값을

넣어줄려니까 안되네요.

꼭 고수님들의 답변을 부탁드립니다.

소스는 다음과 같습니다.



procedure TForm1.Button2Click(Sender: TObject);

var y : integer;

begin

for y := 1 to stringgrid1.rowcount - 1 do

begin



StringGrid1.Objects[3, y] := TComboBox.Create(StringGrid1);

with TComboBox(StringGrid1.Objects[3, y]) do

begin



Parent := StringGrid1;

BoundsRect := StringGrid1.CellRect(3, y);

Width := StringGrid1.ColWidths[1];

Height := StringGrid1.RowHeights[1];

Style := csDropDownList;

ItemHeight := 10;

Items.Add('test'); //이렇게 해도 값이 안들어가네요....흑흑흑



end;

end;

end;

4  COMMENTS
  • Profile
    최용일 2001.04.03 21:56
    안녕하세요. 최용일입니다.



    콤보박스에 값이 들어가 졌네요... 단지 화면상에만 보이지 않을뿐입니다. 스트링그리드의 셀이 다시 그려지면서 펼쳐진 드랍다운리스트위에 다시 그려지기 때문입니다. 콤보박스의 Parent를 폼으로 해보세요... 위치도 약간씩 조정하시구요...



    ^^ 항상 즐코하세요...



    시카고 wrote:

    > StringGrid에 ComboBox를 넣긴 넣었는데 그 ComboBox에 item값을

    > 넣어줄려니까 안되네요.

    > 꼭 고수님들의 답변을 부탁드립니다.

    > 소스는 다음과 같습니다.

    >

    > procedure TForm1.Button2Click(Sender: TObject);

    > var y : integer;

    > begin

    > for y := 1 to stringgrid1.rowcount - 1 do

    > begin

    >

    > StringGrid1.Objects[3, y] := TComboBox.Create(StringGrid1);

    > with TComboBox(StringGrid1.Objects[3, y]) do

    > begin

    >

    > Parent := StringGrid1;

    > BoundsRect := StringGrid1.CellRect(3, y);

    > Width := StringGrid1.ColWidths[1];

    > Height := StringGrid1.RowHeights[1];

    > Style := csDropDownList;

    > ItemHeight := 10;

    > Items.Add('test'); //이렇게 해도 값이 안들어가네요....흑흑흑

    >

    > end;

    > end;

    > end;

  • Profile
    시카고 2001.04.04 03:13
    최용일님 답변에 감사합니다.

    답변대로 할려고 다음과 같이 고쳤는데 잘안되네요

    procedure TForm1.Button2Click(Sender: TObject);

    var y : integer;

    begin

    for y := 1 to stringgrid1.rowcount - 1 do

    begin



    StringGrid1.Objects[3, y] := TComboBox.Create(Form1);

    // StringGrid1를 Form1으로 바꿈

    with TComboBox(StringGrid1.Objects[3, y]) do

    begin



    Parent := Form1; // StringGrid1를 Form1으로 바꿈

    BoundsRect := StringGrid1.CellRect(3, y);

    Width := StringGrid1.ColWidths[1];

    Height := StringGrid1.RowHeights[1];

    Style := csDropDownList;

    ItemHeight := 10;

    Items.Add('test');



    end;

    end;

    end;



    이렇게 고쳐서 실행하니까 "Control '' has no parent window"메시지가 뜨네요.

    한번 더 조언부탁드립니다.











    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > 콤보박스에 값이 들어가 졌네요... 단지 화면상에만 보이지 않을뿐입니다. 스트링그리드의 셀이 다시 그려지면서 펼쳐진 드랍다운리스트위에 다시 그려지기 때문입니다. 콤보박스의 Parent를 폼으로 해보세요... 위치도 약간씩 조정하시구요...

    >

    > ^^ 항상 즐코하세요...

    >

    > 시카고 wrote:

    > > StringGrid에 ComboBox를 넣긴 넣었는데 그 ComboBox에 item값을

    > > 넣어줄려니까 안되네요.

    > > 꼭 고수님들의 답변을 부탁드립니다.

    > > 소스는 다음과 같습니다.

    > >

    > > procedure TForm1.Button2Click(Sender: TObject);

    > > var y : integer;

    > > begin

    > > for y := 1 to stringgrid1.rowcount - 1 do

    > > begin

    > >

    > > StringGrid1.Objects[3, y] := TComboBox.Create(StringGrid1);

    > > with TComboBox(StringGrid1.Objects[3, y]) do

    > > begin

    > >

    > > Parent := StringGrid1;

    > > BoundsRect := StringGrid1.CellRect(3, y);

    > > Width := StringGrid1.ColWidths[1];

    > > Height := StringGrid1.RowHeights[1];

    > > Style := csDropDownList;

    > > ItemHeight := 10;

    > > Items.Add('test'); //이렇게 해도 값이 안들어가네요....흑흑흑

    > >

    > > end;

    > > end;

    > > end;

  • Profile
    최용일 2001.04.04 04:00
    아래와 같이 하세요.



    Parent := Self;



    Form1과 같이 직접 참조하는 것은 피하세요...



    시카고 wrote:

    > 최용일님 답변에 감사합니다.

    > 답변대로 할려고 다음과 같이 고쳤는데 잘안되네요

    > procedure TForm1.Button2Click(Sender: TObject);

    > var y : integer;

    > begin

    > for y := 1 to stringgrid1.rowcount - 1 do

    > begin

    >

    > StringGrid1.Objects[3, y] := TComboBox.Create(Form1);

    > // StringGrid1를 Form1으로 바꿈

    > with TComboBox(StringGrid1.Objects[3, y]) do

    > begin

    >

    > Parent := Form1; // StringGrid1를 Form1으로 바꿈

    > BoundsRect := StringGrid1.CellRect(3, y);

    > Width := StringGrid1.ColWidths[1];

    > Height := StringGrid1.RowHeights[1];

    > Style := csDropDownList;

    > ItemHeight := 10;

    > Items.Add('test');

    >

    > end;

    > end;

    > end;

    >

    > 이렇게 고쳐서 실행하니까 "Control '' has no parent window"메시지가 뜨네요.

    > 한번 더 조언부탁드립니다.

    >

    >

    >

    >

    >

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다.

    > >

    > > 콤보박스에 값이 들어가 졌네요... 단지 화면상에만 보이지 않을뿐입니다. 스트링그리드의 셀이 다시 그려지면서 펼쳐진 드랍다운리스트위에 다시 그려지기 때문입니다. 콤보박스의 Parent를 폼으로 해보세요... 위치도 약간씩 조정하시구요...

    > >

    > > ^^ 항상 즐코하세요...

    > >

    > > 시카고 wrote:

    > > > StringGrid에 ComboBox를 넣긴 넣었는데 그 ComboBox에 item값을

    > > > 넣어줄려니까 안되네요.

    > > > 꼭 고수님들의 답변을 부탁드립니다.

    > > > 소스는 다음과 같습니다.

    > > >

    > > > procedure TForm1.Button2Click(Sender: TObject);

    > > > var y : integer;

    > > > begin

    > > > for y := 1 to stringgrid1.rowcount - 1 do

    > > > begin

    > > >

    > > > StringGrid1.Objects[3, y] := TComboBox.Create(StringGrid1);

    > > > with TComboBox(StringGrid1.Objects[3, y]) do

    > > > begin

    > > >

    > > > Parent := StringGrid1;

    > > > BoundsRect := StringGrid1.CellRect(3, y);

    > > > Width := StringGrid1.ColWidths[1];

    > > > Height := StringGrid1.RowHeights[1];

    > > > Style := csDropDownList;

    > > > ItemHeight := 10;

    > > > Items.Add('test'); //이렇게 해도 값이 안들어가네요....흑흑흑

    > > >

    > > > end;

    > > > end;

    > > > end;

  • Profile
    시카고 2001.04.04 04:53
    감사합니다.

    덕분에 제대로 할 수 있게 되어서.....

    다시 한번 고맙습니다.