Delphi: параметры DBGrid не сохраняются?

#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 в конструкторе, но и указать измененное значение по умолчанию, чтобы система потоковой передачи знала об этом изменении.