2010-07-09 2 views
4

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

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

Это похоже на скрытие/отображение клавиш акселератора (defualt скрыт в Vista/Win7).

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

ответ

2

Я думаю, что это best/easiest workaround. Он просто требует одной строки кода в OnCreate основной формы.

+0

VistaAltFix http://exodus.googlecode.com/svn/trunk/exodus/VistaAltFixUnit.pas работает отлично, без каких-либо хлопот. Большое спасибо. –

+1

VistaAltFix заставляет приложение врезаться время от времени, особенно при завершении. TFormObj.WndProc все равно будет вызван формой, которую предполагается исправить после того, как TFormObj был уничтожен. –

+0

Если вы исправляете эту проблему с помощью TVistaAltFix, будьте осторожны. Время от времени я получаю ошибки при закрытии формы в этом устройстве: 'unit VistaAltFixUnit; процедура TFormObj.WndProc (var Message: TMessage); 'Один из моих пользователей программного обеспечения сообщает о постоянных сбоях при выходе. – MaxVS

3

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

0

процедура TForm1.FormKeyDown (отправитель: TObject; var Key: Word; Shift: TShiftState); begin if Key = 18 then Key: = 0; конец;

+0

Ваш ответ должен быть ясным – Parvathy

 Смежные вопросы

  • Нет связанных вопросов^_^