В Delphi 2006, я показываю модальную форму. Пользовательский ввод в этой форме может изменять данные, которые могут отображаться в настоящее время в родительской форме, которая является основной формой. Чтобы отразить эти изменения, мне нужно принудительно перекрасить некоторые компоненты, принадлежащие владельцу, на основную форму. Я попытался сделать это вот так из модальной формы:Как перерисовать родительскую форму, пока модальная форма активна?
MainForm := Application.MainForm;
MainForm.Invalidate;
MainForm.Update;
Это не изменилось. Я всегда думал, что «обновление» на форме всегда будет перерисовывать его сразу - видимо, не так. Сам код картины должен быть в порядке, так как я могу перемещать модальную форму поверх этих компонентов ownerdraw, чтобы принудительно перерисовать вручную.
Но как я могу принудительно перекрасить при изменении данных?
Редактировать: Я попробую Application.ProcessMessages и Refresh на следующей неделе, спасибо за предложения.
Извините за то, что вы так долго отвечали и благодарили всех, кто ответил. Вызов Refresh() был частью решения, но он должен был выполняться на пользовательских компонентах рисования, а не на форме, в которой они были ... Теперь я хотел бы принять более одного ответа ;-)
Я не использую библиотеку скинов, но пользовательские компоненты рисования могут быть сопоставимы с этим. Мне пришлось найти эти компоненты «вручную» и обновить их явно. – 2009-02-10 11:31:16