Проект, над которым я работаю, состоит из нескольких сотен форм.Они в основном вызваны из основной формы.Имя приложения указывается во всех заголовках формы.
Теперь в другой «версии» приложения необходимо изменить заголовки формы на другое имя приложения.Но это условно.
Я придумал связать
Screen.OnActiveFormChange := ScreenOnActiveFormChange;
в форме и создать для этого процедуру.
procedure TFormMAIN.ScreenOnActiveFormChange(Sender: TObject);
begin
if Newversion then begin
if assigned(screen.activeform) then begin
Screen.ActiveForm.Caption := SwapFormCaption(Screen.ActiveForm.Caption);
end;
end;
end;
Это хорошо работаетв 95% случаев.Но в этих 5% форма показывается слишком быстро.Окно рисуется перед обновлением заголовка, и окна оставляют его там.Но заголовок уже имеет новое значение.То, что работало, это увеличивало и уменьшало высоту формы на 1 пиксель, и тогда оно показывалось бы правильно.form.repaint здесь не помог.Это довольно уродливый способ делать вещи.
Что я действительно хочу, так это перехватить создание субформы вместо активации.Я пытался найти ресурсы об этом, но безуспешно.