스트링그리드의 특정 COL을 클릭시에 콤보박스를 생성하도록 하는 코딩입니다... 그러나 2가지 문제가 발생합니다 ... 도와주세요 여러분 !
1. 원하는 COL에서 클릭시에 2번째 로우에 콤보박스가 하나더 생성됩니다. 저는 3ROW, 6COL 에서 클릭을
하면 아래의 코딩에 따라 콤보박스가 생생되어야 하는데 2ROW,6COL에 하나가 더 생성됩니다. 결국은
2개가 생성된다는 이야기죠.
2. csDropDown 을 위해서 parent := Pj_value_Form 할경우 원하는 row,col에 콤보박스가 생성되는 것
이 아니라 따른곳에서 생성됩니다. cells[3.6]에서 클릭을 하면 콤보는 그 셀에 생성되는 것이 아니라 좌측
윗 부분에 생성됩니다. parent := Pj_value_Form 할 경우
Left := Pj_value_Form .Left + Rect.Left+1;
Top := Pj_value_Form .Top + Rect.Top+1;
로 수정 해서 그 셀의 위치를 찾아서 생성하게 끔 코딩했는데 뭐가 문제인지 모르겠습니다.
parent := AdvSGrd_init로 하고 cells[3.6]에서 클릭을 하면 콤보는 cells[3.6]위치에 잘 나타납니다
왜 그런지 정말 모르겠습니다. 코딩을 검토 후 조언부탁드립니다.
if ACol = 6 then
begin
FlatComboBox1 := TFlatComboBox.Create( Self );
Rect := AdvSGrd_init.CellRect(ACol,ARow);
with FlatComboBox1 do begin
// parent := AdvSGrd_init;
parent := Pj_value_Form;
Style := csDropDown;
visible := True;
Left := Pj_value_Form.Left + Rect.Left+1;
Top := Pj_value_Form.Top + Rect.Top+1;
Width := Rect.Right - Rect.Left;
Height := (Rect.Bottom - Rect.Top);
Style := csDropDown;
BringToFront;
Items.Add('a');
Items.Add('b');
Items.Add('c');
DropDownCount := 3;
Text := AdvSGrd_init.Cells[ACol,ARow];
end;
end
else
FlatComboBox1.Visible := False;