В ячейку StringGrid добавляется ComboBox. Но при клике на ComboBox, не виден выпадающий список. Вернее, он отображается шириной в 2 пиксела. Добавленные элементы в списке ComboBox есть. Между ними можно переключаться (выбирать) при помощи клавиш вверх-вниз. Delphi 7.
| Код | TMBList = class(TStringGrid) private FParams: TParamsCollection; procedure AddItem(...); protected procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState:TGridDrawState);override; public constructor Create(AOwner: TComponent); override; published property Params: TParamsCollection read FParams write SetParams; end;
constructor TMBList.Create(AOwner: TComponent); var i:integer; begin inherited Create(AOwner); FParams := TParamsCollection.Create(Self); RowCount:=3; FixedCols:=1; FixedRows:=0; ColCount:=3; Options:=[goHorzLine, goFixedHorzLine, goFixedVertLine, goVertLine, goEditing]; ColWidths[0]:=18; ColWidths[1]:=100; ColWidths[2]:=100; for i:=0 to RowCount-1 do RowHeights[i]:=18; end;
procedure TMBList.AddItem(....); begin if (TypeOfControl=tcIndex) then begin FParams.Items[FParams.Count-1].FComboBox:=TComboBox.Create(self); //FParams.Items[FParams.Count-1].FComboBox.Caption:=''; FParams.Items[FParams.Count-1].FComboBox.Parent:=self; FParams.Items[FParams.Count-1].FComboBox.Visible:=False; //FParams.Items[FParams.Count-1].FComboBox.SetSubComponent(true); FParams.Items[FParams.Count-1].FComboBox.Style:=csDropDownList; //FParams.Items[FParams.Count-1].FComboBox.Tag:=3001; // генерировать тэги для контрола FParams.Items[FParams.Count-1].FComboBox.Items.Add('Item1'); FParams.Items[FParams.Count-1].FComboBox.Items.Add('Item2'); FParams.Items[FParams.Count-1].FComboBox.ItemIndex:=0; end; end;
procedure TMBList.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); begin if FParams.Items[arow].FComboBox<>nil then begin FParams.Items[arow].FComboBox.BoundsRect:=ARect; FParams.Items[arow].FComboBox.Visible:=true; end; end; end;
|
|