Delphi 7 - изменения свойств не сохранены для связанных компонентов
У меня есть MyConnection в DataModule1 и MyQuery в Form1. Оба компонента являются связанными компонентами. И свойство Connected в MyConnection, и свойство Active в MyQuery имеют значение True. Все сохранено. Теперь я установил MyConnection Connected на False, и MyConnection автоматически изменит MyQuery Active на False. DataModule1 был помечен Delphi 7 как "измененный" (символ звездочки рядом с вкладкой файла), поэтому я могу сохранить его, но проблема в Form1 не была. Изменение формы 1 в MyQuery не сохраняется, даже если я нажал кнопку Сохранить.
В результате, когда я снова открыл Form1, MyQuery открылся со свойством Active, установленным в True, и это также автоматически изменяет MyConnection Connected обратно в True.
Я хочу решение для этого. Как я могу сохранить Form1, изменив только свойство MyConnection? Эта проблема также возникает с помощью инструмента "Задать свойства компонента" в GExperts. Если я установлю это, чтобы изменить и MyConnection и MyQuery. Из-за этой проблемы он только сообщил об изменениях в MyConnection, но не "официально" вносит изменения в MyQuery.
2 ответа
Немного перетащите форму, чтобы изменить положение, и теперь вы можете сохранить ее.
В основном: измените любое из свойств любого из компонентов VCL в форме или самой форме. Даже если вы измените их на то же значение, это сработает, и вы получите возможность сохранить свою форму.
Если проблема в том, что вы забыли установить значение false, то есть лучший способ. Вы можете создать подкласс компонента соединения и повторно ввести связанное свойство так, чтобы значение не записывалось в DFM.
Таким образом, при открытии модуля данных (или формы) свойство подключения всегда будет ложным.
Для компонента подключения ado источник будет выглядеть так:
unit adoconnection1;
interface
uses
SysUtils, Classes, DB, ADODB;
type
tadoconnection1 = class(TADOConnection)
private
protected
public
published
property Connected stored false;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('GuidoG', [tadoconnection1]);
end;
end.