Прекратите мерцание кнопок в delphi
Как я могу изменить приведенный ниже код, чтобы остановить мерцание кнопок?
процедура TCustomEdit.WMPaint (сообщение var: TWMPaint);
начать
унаследованный;
EditLayout.WMPaint(Сообщение);
конец;
Здесь TCustomEdit-это базовый класс для мерцающих кнопок.
Проблема заключается в editlayout.
Когда мы удаляем / комментируем строку editlayout, мерцание не происходит.
Но нам нужен editlayout для других функций.
Можете ли вы предложить, как изменить editlayout, приведенную ниже часть кода.
процедура TEditLayout.WMPaint (сообщение var: TWMPaint);
вар
iDC: HDC;
r: TRect;
начать
унаследованный;
if (csDesigning in fEdit.ComponentState), а затем выйти;
если fFlat то
начать
iDC := GetWindowDC(fEdit.Ручка);
пробовать
GetWindowRect(федит.Ручка, r);
MapWindowPoints(0, fEdit.Ручка, r, 2);
Inc (r. Top, 2);
Inc (r. Left, 2);
с fCanvas do
пробовать
Ручка: = iDC;
если фмоусейн или федит.Тогда сосредоточься
Ручка.Цвет: = clBtnShadow
ещё
Ручка.Цвет: = clWindow;
Полилиния([Р.Левой, точки(р. Правильно, научно.Сверху), R.Левой, точки(р. Слева, R.Дно)]);
Инк(Р.Топ);
Инк(Р.Слева);
если фмоусейн или федит.Тогда сосредоточься
Ручка.Цвет: = clWindowText;
Полилиния([Р.Левой, точки(р. Правильно, научно.Сверху), R.Левой, точки(р. Слева, R.Дно)]);
Декабря(Р.Слева);
если фмоусейн или федит.Тогда сосредоточься
начать
Ручка.Цвет: = clBtnFace;
Полилиния([точка(Р.Слева, R.Нижняя), Р.Нижнем, точки(р. Правильно, научно.Сверху), R.Нижнем]);
конец
ещё
начать
Полилиния ([точка (r.Left, r. Bottom), r.BottomRight]);
Инк(Р.Дно);
Полилиния([точка(Р.Слева, R.Нижняя), Р.Нижнем, точки(р. Правильно, научно.Сверху), R.Нижнем]);
конец;
наконец
Ручка: = 0;
конец;
наконец
ReleaseDC(федит.Ручка, iDC);
конец;
TEditButtons (fCollection).ToggleFlat;
конец;
TEditButtons (fCollection).Аннулировать;
конец;
Что я уже пробовал:
Попробовал удалить editlayout. Но он нужен для других целей. Пожалуйста, посоветуйте, как редактировать / модифицировать код.