#delphi #components #default #option #dbgrid
#delphi #Компоненты #По умолчанию #dbgrid
Вопрос:
У меня есть своя DBGrid, основанная на TDBGrid.
Во многих местах лучше видеть выделение, поэтому я подумал установить его на Create, и редактор свойств сохранит свойство Options, если я позже установлю его как False.
Итак, конструктор создает его как:
constructor TMyDBGrid.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
Options := Options [dgAlwaysShowSelection];
end;
Я подумал, что это нормально, потому что я установил его как True, сначала создание делает его True, но при загрузке Delphi изменит его на хорошее значение (False).
Но опыт показал, что сейчас это не работает!
Я не знаю почему.
Я поместил свою собственную dbgrid в Form1. Опция ASS включена. Я установил для него значение false.
Я запускаю приложение. И ТЕПЕРЬ это СНОВА ВКЛЮЧЕНО. Когда я показываю значение параметра при загрузке, я получаю истинное значение. Таким образом, значение не загружается по мере необходимости.
Я не знаю, почему это произошло, но я думаю, что это основано на «По умолчанию»???
Мое значение по умолчанию равно False, поэтому, если я установлю для него значение False, тогда значения не сохраняются в DFM…
Итак, каков возможный способ сохранения значений без этого эффекта?
Ответ №1:
Потоковая система Delphi сохраняет свойства только тогда, когда они отличаются от значений по умолчанию. Эти значения по умолчанию могут быть неявными (например, 0 для целых чисел и » для строк), и они могут быть явно заданы ключевым словом default . Это относится и к TDBGrid.Options ([dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit, dgTitleClick, dgTitleHotTrack] ).
Пока вы не измените какой-либо другой параметр в наборе, установив для параметра dgAlwaysShowSelection значение false, вы получите значение по умолчанию, которое не сохраняется в DFM. Теперь, когда вы установили для параметра dgAlwaysShowSelection значение true внутри Create и в DFM ничего не сохраняется, опция будет включена после загрузки, даже если она была отключена при сохранении.
Для удовлетворения ваших потребностей вам нужно не только установить для параметра значение true в конструкторе, но и указать измененное значение по умолчанию, чтобы система потоковой передачи знала об этом изменении.