Почему делают некоторые компоненты Delphi требуют “AOwner: TComponent” для построения их?

Мне любопытно узнать о вашей ошибке. это поможет другим дать вам точное решение. Ваш запрос в порядке, он должен возвращать много строк, поскольку вы выполняете перекрестное соединение, поэтому, если сначала из части [( SELECT COUNT(DAY_IN) AS arr FROM t_hospital WHERE DAY_IN between @start_check and @finish_check and RES_DATE between @start_res and @finish_res and ID_daily_hos =@daily_hos group by DAY_IN )e,] возвращается 4, и позволяет сказать, что другие возвращают 3,5,6, тогда вы получите 4 * 5 * 6 * 3 = 360 строки, и я думаю, вы этого не хотите. чтобы получить точный ответ, запустите каждую часть запроса select на экране печати phpmyAdmin / sqlyog и вставьте его в SO с тем, что вы хотите.

14
задан QAZ 23 January 2009 в 22:04
поделиться

5 ответов

Компонент владельца, как предполагается, управляет всеми своими находящимися в собственности компонентами. Находящиеся в собственности компоненты уничтожаются автоматически, когда владелец уничтожается.

Это помогает разработчику, который просто перетаскивает компоненты от палитры инструментов, отбрасывает их на форме и просто поднимает трубку события для движения его работы, вызывающей беспокойство об управлении временем жизни компонентов.

форма является владельцем всех компонентов, отброшенных на нем. Объект приложения является владельцем формы. Когда приложение закрывается, Объект приложения уничтожается, который в свою очередь уничтожает формы и все компоненты.

, Но владелец не действительно необходимо, когда компоненты создаются. При передаче Ноля параметру компонент будет создан без владельца, и в этом случае это будет обязанность управлять временем жизни компонента.

36
ответ дан 1 December 2019 в 06:12
поделиться

Все потомки TComponent требуют Владельца, это определяется в конструкторе TComponent. Компонент Владельца ответственен для уничтожения всех Находящихся в собственности компонентов.

, если Вы хотите управлять временем жизни, можно передать ноль как параметр.

9
ответ дан 1 December 2019 в 06:12
поделиться

Только добавить некоторую дополнительную информацию.

Каждое управление также имеет родителя. (TWinControl). Где владелец заботится о времени жизни, родитель заботится о показе объекта.

, Например, форма имеет панель, и панель имеет кнопку. В этом случае форма владеет панелью и кнопкой. Но форма является родителем панели, и панель является родителем кнопки.

3
ответ дан 1 December 2019 в 06:12
поделиться

Существует также что-то еще для знания. Я использовал больше чем несколько сторонних компонентов, которые полагаются на компонент Владельца, передаваемый в Конструкторе, Создают, и если Вы передадите в Ноле, то выдаст исключение.

конечный результат состоит в том, что эти компоненты будут хорошо работать, когда Вы будете использовать визуально в IDE, но вызываете проблемы, когда они создаются во времени выполнения.

причиной этих проблем является, в некотором смысле, плохой дизайн. Ничто в правилах не указывает, что Вы не можете не передать в NIL как aOwner параметр.

3
ответ дан 1 December 2019 в 06:12
поделиться

Объект не делает , ТРЕБУЮТ , tComponent передается как AOwner. Можно легко передать ноль этому и обработать разрушение сами. Чаще всего я склонен использовать эту технику для локализованных стандартных программ, где используемый компонент не будет использоваться за пределами существующего метода. например:

Procedure TForm1.Foo;
var
  XmlDoc : tXmlDocument;
begin
  XmlDoc := tXmlDocument.Create(nil);
  try
    // do processing of the XMLDoc here
  finally
    FreeAndNil(XmlDoc); 
  end;
end;
1
ответ дан 1 December 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: