У меня есть фрагмент кода, где я переопределяю редактор Inplace TStringGrid и окно подсказки. Для этого я создал свою собственную строковую сетку на основе TStringGrid и использовал TEdit для редактора inplace и подсказки TPanel для инструментов. В TMyStringGrid.Create конструктору я инициализировать их следующим образом:Создание составного элемента управления (родительский элемент других элементов управления) во время выполнения
Constructor TMyStringGrid.Create();
Begin
inherited Create(AOwner);
MyEditor:= TEdit.Create(Self);
MyEditor.Parent := Self;
End;
В этом случае владелец (основная форма) является освобождающим управлением. Я использовал это в течение многих лет, и это сработало. Дело в том, что другие люди утверждают, что программист должен использовать NIL вместо «Я» при создании экземпляра, которым управляет ребенок, а затем вручную освободить их в Destroy destructor. Похоже, что вторая альтернатива имеет гигантское преимущество перед первым, особенно когда вы динамически создаете множество дочерних элементов управления (не мое дело). Говорят, что другая проблема с моим кодом заключается в том, что дочерние элементы управления могут быть освобождены после вызова Application.ProcessMessages, пока приложение все еще может их использовать.
Итак, я должен оставить свой код без изменений или я должен вручную создать и освободить дочерние элементы управления? Существует ли какой-либо пример комбинированных элементов управления Borland?
Delphi 7, Win XP
Ссылка: http://delphi.about.com/od/kbcurt/ss/dynamiccreateno.htm
Спасибо. +1. Правильно TLabeledEdit! Я полностью забыл о TLabeledEdit в тот момент, когда задал вопрос :) – Ampere