Delphi: параметры DBGrid не сохраняются? - PullRequest
4 голосов
/ 04 октября 2011

Моя проблема следующая:

У меня есть собственная DBGrid, основанная на TDBGrid.

Поскольку во многих местах лучше видеть выделение, я решил установить его на «Создать», а редактор свойств сохранит свойство «Параметры», если позже установит «Ложное». Поэтому конструктор создаст его как:

constructor TMyDBGrid.Create(aOwner: TComponent);
begin
    inherited Create(aOwner);
    Options := Options + [dgAlwaysShowSelection];
end;

Хорошо, я подумал, что все в порядке, потому что я установил его как True, создание сначала делает его True, но в Loaded Delphi изменит его на хорошее значение (False).

Но опыт показал, что сейчас это не работает!

Не знаю почему.

Я поместил свою собственную dbgrid в Form1. Опция ASS включена. Я установил это в ложь.

Запускаю приложение. И СЕЙЧАС это СНОВА. Когда я показываю значение Option на LOaded, я получаю значение True. Таким образом, значение не загружается при необходимости.

Я не знаю, почему это произошло, но я думаю, что это основано на "По умолчанию" ??? Может по умолчанию False, поэтому, если я установлю его на False, то это не сохранять значения в DFM ...

Так, как можно сохранить значения без этого эффекта?

Спасибо за вашу помощь: дд

1 Ответ

5 голосов
/ 04 октября 2011

Потоковая система Delphi сохраняет свойства только тогда, когда они отличаются от значений по умолчанию. Эти значения по умолчанию могут быть неявными (например, 0 для Integer и '' для строк), и они могут быть установлены явно с помощью ключевого слова default . Это также относится и к TDbGrid.Options ([dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit, dgTitleClick, dTraTit).

До тех пор, пока вы не измените никакой другой параметр в наборе, установив для dgAlwaysShowSelection значение false, вы получите значение по умолчанию, которое не сохраняется в DFM. Теперь, когда вы установите для dgAlwaysShowSelection значение true в Create, а в DFM ничего не сохраняется, опция будет включена после загрузки, даже если она была отключена при сохранении.

Чтобы удовлетворить ваши потребности, вам нужно не только установить в конструкторе параметр true, но и указать измененное значение default , чтобы система потоковой передачи знала об этом изменении.

...