Здравствуйте, уважаемые мастера!
Мой объект, наследник StringGrid, должен, поддерживать свойство goEditing только для чётных (по номеру столбца) ячеек, а для нечётных не реагировать, будто бы goEditing отключено. Всё это происходит если свойство (новое) goEditingEven включено. Иначе нужно работать как обычный StringGrid.
Вот что я для этого делаю:
TMyGridOption = (goFixedVertLine, goFixedHorzLine, goVertLine,
goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing,
goColSizing, goRowMoving, goColMoving, goEditing, goEditingEven, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking);
TMyGridOptions = set of TMyGridOption;
TMyGrid = class(TStringGrid)
private
FOptions: TMyGridOptions;
protected
procedure SetOptions(Value: TMyGridOptions);
published
property Options: TMyGridOptions read FOptions write SetOptions;
procedure TMyGrid.SetOptions(Value: TMyGridOptions);
begin
inherited;
if (goEditingEven in Value) then
begin
Value := Value + [goEditing];
end;
end;
В результате, на сколько я понимаю, в инспекторе свойств объекта должна измениться вкладка Options, но я не нахожу внутри goEditingEven - это первое.
И вторая проблема - не знаю как, учитывая опцию goEditingEven и не затрагивая goEditing, по двойному нажатию организовать редактирование ячейки, если она чётная...
Может быть в OnDrawCell?
if (goEditingEven in Options) and (ACol mod 2 = 0) then
StartEditCell(ACol, ARow);
Что дожно содержаться в StartEditCell?