Моя первая версия этого вопроса, возможно, была специфической, поэтому я постараюсь задать более общий способ:
У меня есть рамка с компонентом, скажем, это TButton. После размещения фрейма на форме я изменяю свойство компонента, скажем, я установил тег на кнопке равным 100.
В конструкторе фреймов я хотел бы сделать что-то вроде этого:
constructor TMyFrame.Create(AOwner: TComponent);
begin
inherited;
if Button1.Tag = 100
then DoSomething
else DoSomethingElse;
end;
Я обнаружил, что в данный момент (при создании) тег кнопки все еще равен 0. Может кто-нибудь порекомендовать другой способ сделать это?
В нашем приложении есть несколько мест, где пользователи могут вводить операторы SQL. Для этого мы используем компонент SynEdit . Для этой цели мы создали рамку с расширенной функциональностью.
Иногда нам нужна версия с поддержкой данных (TDBSYnEdit), а в других случаях нам нужна «обычная» версия (TSynEdit). Мы решили эту проблему, установив управление контентом страницы во фрейме и переключившись на правильную страницу во время разработки. Вкладки скрыты, поэтому пользователь не подозревает, что это происходит.
Проблема в том, что иногда наши разработчики забывают установить правильную страницу в элементе управления страницы или случайно выбирают не ту страницу.
Я хотел исправить это, добавив следующий код к событию Create в кадре
if DBSQLMemo.DataField > ''
then pcMemos.ActivePage := tsDataAware
else pcMemos.ActivePage := tsNonDataAware;
Моя теория заключалась в том, что, если разработчик установил свойства источника данных / поля данных редактора, фрейм следует использовать в «режиме с учетом данных», а редактор с учетом данных должен быть видимым. Оказывается, на момент создания эти свойства не заданы.
У кого-нибудь есть хорошее предложение, как мне решить эту проблему?