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.
Другие вопросы по тегам