Как описать поле класса типа множества

отредактировано 16:36 Раздел: FastScript
Как описать поле класса типа множества, делаю так:
    fsGlobalUnit.AddEnumSet('TGridOptions','goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking');
  
    with fsGlobalUnit.AddClass(TDrawGrid,'TWinControl') do
    begin   
        AddProperty('Options', 'TGridOptions', TDrawGrid__GetProp, TDrawGrid__SetProp);
    end;


function TDrawGrid__GetProp(Instance: TObject; ClassType: TClass;
   const PropName: String): Variant;
begin
   if PropName = UpperCase('Options') then
     Result := TDrawGrid(Instance).Options
end;

Возникает ошибка преобразования в тип вариант, тип вариант не поддерживает множества.
Как же тогда быть?

Комментарии

  • Stalker4Stalker4 123
    отредактировано 16:36
    muaddib написал: »
    Как описать поле класса типа множества, делаю так:

    [code] fsGlobalUnit.AddEnumSet('TGridOptions','goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking');

    Возникает ошибка преобразования в тип вариант, тип вариант не поддерживает множества.
    Как же тогда быть?
    В данном случае рекомендую посмотреть в модуле fs_idbrtti как описана и как задействовано в методе TDataSet.Locate множество TLocateOptions. Или множество TFilterOptions.

    А на будущее очень рекомендую, перед тем как задать подобный вопрос по FS&RTTi смотреть исходники FS и FR. В них есть ответы на многие подобные вопросы (сам туда весьма часто заглядываю) да и доку по FS и FR (мануал разработчика) тоже весьма полезно почитать.

  • отредактировано 16:36
    Stalker4 написал: »
    В данном случае рекомендую посмотреть в модуле fs_idbrtti как описана и как задействовано в методе TDataSet.Locate множество TLocateOptions. Или множество TFilterOptions.

    А на будущее очень рекомендую, перед тем как задать подобный вопрос по FS&RTTi смотреть исходники FS и FR. В них есть ответы на многие подобные вопросы (сам туда весьма часто заглядываю) да и доку по FS и FR (мануал разработчика) тоже весьма полезно почитать.

    Посмотрел, извращение какое. Сам вначале об этом подумал, но не решился. Ну раз так делает разработчик...
  • отредактировано 16:36
    В строке

    TDrawGrid(Instance).Options:=IntToTGridOptions(Value);

    возникает ошибка EVariantTypeCastError Could not convert Variant of Type (Array Variant) into type Integer
  • Stalker4Stalker4 123
    отредактировано 16:36
    muaddib написал: »
    В строке

    TDrawGrid(Instance).Options:=IntToTGridOptions(Value);

    возникает ошибка EVariantTypeCastError Could not convert Variant of Type (Array Variant) into type Integer
    Приведите код вашего модуля, включая функцию IntToTGridOptions(Value). По идее такой ошибки тут быть не должно.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.