EXE из Delphi 2006: кнопки / флажки / радио не отображаются, пока мышь не наведена (в Vista / Win7)

В Windows Vista и Win7 существует проблема с приложениями, созданными Delphi (мы используем Delphi 2006, но похоже, что в других версиях такая же проблема), которые содержат манифест XP.

Все потомки TButtonControl (TButton, TCheckBox, TRadioButton, но не TBitBtn) не отображаются после первоначального отображения формы. Элементы управления появляются, когда вы наводите на них указатель мыши. И это происходит только один раз для каждой формы, пока я не перезапущу приложение.

Похоже, это связано с скрытием / отображением клавиш-ускорителей (по умолчанию скрыто в Vista / Win7).

Что я могу сделать, чтобы этого избежать?


person Dirk Paessler    schedule 09.07.2010    source источник


Ответы (4)


Я думаю, что это лучший / самый простой способ решения проблемы. Для этого требуется всего лишь одна строка кода в OnCreate основной формы.

person vrad    schedule 10.07.2010
comment
VistaAltFix exodus.googlecode.com/svn/trunk/exodus/VistaAltFixUnit.pas работает отлично, без проблем. Большое спасибо. - person Dirk Paessler; 12.07.2010
comment
VistaAltFix время от времени вызывает сбой приложения, особенно при завершении. TFormObj.WndProc по-прежнему будет вызываться формой, которую он должен исправить, после уничтожения TFormObj. - person Sebastian Kirsche; 18.05.2011
comment
Если вы решаете эту проблему с помощью TVistaAltFix, будьте осторожны. Время от времени я получаю ошибки при закрытии формы в этом модуле: unit VistaAltFixUnit; procedure TFormObj.WndProc(var Message: TMessage); Один из моих пользователей программного обеспечения сообщает о постоянных сбоях при выходе. - person MaxVS; 19.05.2011

Это ошибка Delphi.

person Alex    schedule 09.07.2010

Проблема исчезнет, ​​если вы скомпилируете новый манифест XP и замените им WindowsXP.res.

person histrio    schedule 09.07.2010

процедура TForm1.FormKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); начать, если Ключ = 18, то Ключ: = 0; конец;

person ali Roshani    schedule 07.02.2013