스트링그리드를 Parent로하는 콤보박스를 특정 칼럼을 클릭했을때, 생성되게
하였습니다. 그리고 거기에 Change 이벤트와 Exit이벤트를 주고,
특정 작업이 수행되고 나면, 그 콤보박스를 사라지게 하려 합니다.
문제는 특정칼럼을 클릭해서 Item을 선택해서 선택된 Item이 StringGrid에 보이는거 까지는 문제가 없는데, 만약 선택하지 않고 바로 다른 칼럼을 선택하면,
전에 생성되어진 ComboBox는 사라지고, 새로운 ComboBox가 생성이 되어야 할텐데, 없어지질 않습니다. 그런상태에서 계속 칼럼만 클릭하고, 선택하지 않으면, 전에 만들어진건 없어지지 않고 계속 나타나더군요. 이걸 어떻게 해야 할까요??? 답변좀 부탁드릴께요.
procedure TForm1.ViewGridMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If ViewGrid.Col <> 7 Then Exit;
StrCombo := TComboBox.Create(Form1);
StrCombo.Parent := ViewGrid;
StrCombo.Left := 528;
StrCombo.Top := ViewGrid.Row * 21;
StrCombo.Width := ViewGrid.ColWidths[7];
StrCombo.Height := ViewGrid.Height;
StrCombo.Items.Add('Test1');
StrCombo.Items.Add('Test2');
StrCombo.Items.Add('Test3');
StrCombo.OnExit := StrComboExit;
StrCombo.OnChange := StrComboChange;
end;
procedure TForm1.StrComboChange(Sender: TObject);
begin
ViewGrid.Cells[7,ViewGrid.Row] := StrCombo.Text;
ViewGrid.Cells[7,ViewGrid.Row] := TComboBox(Sender).Text;
TComboBox(Sender).Free;
end;
procedure TForm1.StrComboExit(Sender: TObject);
begin
ViewGrid.Cells[7,ViewGrid.Row] := StrCombo.Text;
TComboBox(Sender).Free;
end;