Memo-поле передергивается при возврате фокуса на него
Модератор: Модераторы
Memo-поле передергивается при возврате фокуса на него
Недавно обратил внимание на один такой неприятный момент: в Lazarus'е в отличие от Delphi
Memo-поле, загруженное достаточно большим текстом (чтобы был заполнен весь экран - заметнее)
неприятно передергивается ("пырскает") при смене фокуса и последующим возвратом на него.
С чем это связано, как побороть?
Добавлено спустя 3 часа 58 минут 48 секунд:
Для воспроизведения эффекта нужно собрать абсолютно простую программу (вообще без кода):
1. Бросить на форму Panel1, выровняв её (AlTop),на неё - Button1 и ниже на форму - Memo1 (alClient, ssVerical);
2. Запустить эту простейшую программу и, найдя у себя текст побольше, скопировать его на Memo1 (я брал текст прямо из этого форума в Chrome, нажав CTRL-U: "просмотр кода страницы");
3. Вставая мышью то на Button1, то на Memo1 (или ещё лучше - нажав и удерживая клавишу TAB) мы получаем эффект вздрагивания текста в Memo-поле, который абсолютно отсутствует в Delphi!
Сравнивались Lazarus-1.4.4 и D10-Lite (Turbo) под Win7.
Добавлено спустя 5 минут 37 секунд:
Да, и конечно же, забыл указать, программу следует распахнуть на весь экран, чтобы Memo1 было максимальным для лучшего наблюдения эффекта.
Впрочем, я думаю, это и так очевидно. Экран конечно желательно - побольше.
Добавлено спустя 1 час 3 минуты 56 секунд:
Удивительно!
Сейчас попробовал на XE7 - тоже передергивает!
Вероятно, начиная с какой-то версии от D2006 (D10-Turbo) что-то изменили в алгоритмах вывода на Memo, а в Lazaruse - повторили...
Интересно, с какой версии Delphi это произошло, как с этим у старших (последних) версий?
Memo-поле, загруженное достаточно большим текстом (чтобы был заполнен весь экран - заметнее)
неприятно передергивается ("пырскает") при смене фокуса и последующим возвратом на него.
С чем это связано, как побороть?
Добавлено спустя 3 часа 58 минут 48 секунд:
Для воспроизведения эффекта нужно собрать абсолютно простую программу (вообще без кода):
1. Бросить на форму Panel1, выровняв её (AlTop),на неё - Button1 и ниже на форму - Memo1 (alClient, ssVerical);
2. Запустить эту простейшую программу и, найдя у себя текст побольше, скопировать его на Memo1 (я брал текст прямо из этого форума в Chrome, нажав CTRL-U: "просмотр кода страницы");
3. Вставая мышью то на Button1, то на Memo1 (или ещё лучше - нажав и удерживая клавишу TAB) мы получаем эффект вздрагивания текста в Memo-поле, который абсолютно отсутствует в Delphi!
Сравнивались Lazarus-1.4.4 и D10-Lite (Turbo) под Win7.
Добавлено спустя 5 минут 37 секунд:
Да, и конечно же, забыл указать, программу следует распахнуть на весь экран, чтобы Memo1 было максимальным для лучшего наблюдения эффекта.
Впрочем, я думаю, это и так очевидно. Экран конечно желательно - побольше.
Добавлено спустя 1 час 3 минуты 56 секунд:
Удивительно!
Сейчас попробовал на XE7 - тоже передергивает!
Вероятно, начиная с какой-то версии от D2006 (D10-Turbo) что-то изменили в алгоритмах вывода на Memo, а в Lazaruse - повторили...
Интересно, с какой версии Delphi это произошло, как с этим у старших (последних) версий?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
У меня все лежит на панелях и такого эффекта нет.
У меня тоже ничего не дёргается. Окромя, конечно, курсора, который скачет туды-сюды...
meligo писал(а):С чем это связано, как побороть?
Обновить дрова на видеокарту?
Вы повторили все условия эксперимента
или пробовали на чем-то своем? - Если нет, то в результате нет уверенности...
Добавлено спустя 2 минуты 45 секунд:
Обращаю Ваше внимание, тест изначально проводился на двух компиляторах, при этом эффект наблюдался только в одном случае!
Для воспроизведения эффекта нужно собрать абсолютно простую программу (вообще без кода):...
или пробовали на чем-то своем? - Если нет, то в результате нет уверенности...
Добавлено спустя 2 минуты 45 секунд:
Обновить дрова на видеокарту?
Обращаю Ваше внимание, тест изначально проводился на двух компиляторах, при этом эффект наблюдался только в одном случае!
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
meligo, скорее всего дело в том, что при расположении Memo прямо на форме оно получает команду перерисоваться при каждом изменении формы, а не при изменении самой Memo.
meligo писал(а):Обращаю Ваше внимание, тест изначально проводился на двух компиляторах, при этом эффект наблюдался только в одном случае!
Это мешает обновить драйвера?
ИМХО, старье использует DirectX9, новые - 10. Или типа того.
Повторю, я сравнивал две ОДИНАКОВЫЕ программы на Lazarus'e и Delphi 10 Lite.
Если бы причина была в драйверах, то ОБЕ программы бы вели себя одинаково,
но Lazarus - "пырскает", а Delphi - нет!
Неужели это непонятно? Они ведут себя по разному, вне зависимости от того, какие драйвера стоят - ведь тест на одной и той же машине! Ферштеен?
Это же касается и предыдущего объяснения с перерисовкой - тестовые программы - идентичны, значит всё, что касается первой, должно касаться и второй!
Однако на деле это не так! Вот, можете убедиться сами: https://yadi.sk/d/QkkW8d58krbJi
Здесь в архиве два теста из-под Lazarus 1.4.4 и из-под D10_Lite ОДНОЙ И ТОЙ ЖЕ Программы.
Запускаем и нажимаем клавишу <TAB> и удерживаем её: Delphi - стоит как вкопанная, Lazarus - волнами "пырскает" (как работающий двигатель)
Если бы причина была в драйверах, то ОБЕ программы бы вели себя одинаково,
но Lazarus - "пырскает", а Delphi - нет!
Неужели это непонятно? Они ведут себя по разному, вне зависимости от того, какие драйвера стоят - ведь тест на одной и той же машине! Ферштеен?
Это же касается и предыдущего объяснения с перерисовкой - тестовые программы - идентичны, значит всё, что касается первой, должно касаться и второй!
Однако на деле это не так! Вот, можете убедиться сами: https://yadi.sk/d/QkkW8d58krbJi
Здесь в архиве два теста из-под Lazarus 1.4.4 и из-под D10_Lite ОДНОЙ И ТОЙ ЖЕ Программы.
Запускаем и нажимаем клавишу <TAB> и удерживаем её: Delphi - стоит как вкопанная, Lazarus - волнами "пырскает" (как работающий двигатель)
у меня не наблюдается мерцание (или как там его)
может видео запишешь?
кстати, подобный косяк есть в StringGrid - перерисовка ячеек вызывается больше раз чем требуется
может и тут что подобное?
может видео запишешь?
кстати, подобный косяк есть в StringGrid - перерисовка ячеек вызывается больше раз чем требуется
может и тут что подобное?
ev писал(а):у меня не наблюдается мерцание (или как там его)
У Вас оба exe-шника стоят "мертво"?
Добавлено спустя 1 минуту 45 секунд:
ev, А какая у Вас конфигурация железа?
meligo
Это ю нихт ферштеен русиш
meligo писал(а):идентичны
Это ю нихт ферштеен русиш
У вас нет необходимых прав для просмотра вложений в этом сообщении.
У Вас оба exe-шника стоят "мертво"?
я сделал свой exe по инструкции
запустить чужой exe не имею возможности
А какая у Вас конфигурация железа?
cpu intel i5-4670s + ram 16 gb
win 7 pro sp1
lazarus 1.2.6
meligo писал(а):Повторю, я сравнивал две ОДИНАКОВЫЕ программы на Lazarus'e и Delphi 10 Lite.
Если бы причина была в драйверах, то ОБЕ программы бы вели себя одинаково,
но Lazarus - "пырскает", а Delphi - нет!
исходники их наборах компонентов радикально разные
как исправить - копать исходник мемо - искать что порождает лишний Invalidate
ev, - у меня аналогичная конфигурация, только памяти 8, а Лазарус - 1.4.4.
Можешь выложить ссылку на свой exe-шник на Лазарусе?
Может быть разница в версиях наших Лазарусов...
resident, для Вас, что, новость, что даже различные версии компиляторов Дельфи порождают экзешники различных размеров,
а уж тем более Lazarus?!! Ну Вы даете!
- И что мешает Вам набрать эту программу самому, как это сделал, например, ev - это же пара секунд?
Просто я для ленивых выложил уже готовые версии.
Добавлено спустя 5 минут 38 секунд:
sts, это и так понятно, что
иначе бы это был не Lazarus, а Delphi.
Вопрос то был
Можешь выложить ссылку на свой exe-шник на Лазарусе?
Может быть разница в версиях наших Лазарусов...
resident, для Вас, что, новость, что даже различные версии компиляторов Дельфи порождают экзешники различных размеров,
а уж тем более Lazarus?!! Ну Вы даете!
Просто я для ленивых выложил уже готовые версии.
Добавлено спустя 5 минут 38 секунд:
sts, это и так понятно, что
,исходники их наборах компонентов радикально разные
иначе бы это был не Lazarus, а Delphi.
Вопрос то был
С чем это связано, как побороть?
мне показалось или в D10_Lite.exe отсутсвует манифест а значит темы не работают? (сам exe не запускал)
Добавлено спустя 31 секунду:
как исправить - копать исходник мемо - искать что порождает лишний Invalidate
Добавлено спустя 31 секунду:
meligo писал(а):С чем это связано, как побороть?
как исправить - копать исходник мемо - искать что порождает лишний Invalidate
