Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2014, 03:57   #1
Kotaries
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 27
По умолчанию XE2, Стили, Глюк отображение и visible

Здравствуйте, помогите, пожалуйста, с решением непонятного мне глюка стилей XE2.
Дело в том, что если я использую стандартные стили XE2 (в данном случае, Aqua Light Slate), то на созданной мною форме иногда элементы, находящиеся на заднем плане, начинают просвечиваться сквозь те, что ближе.

Вот пример такого глюка: на форме лежат два Tmemo, а поверх них я создал Tpanel с TTreeView на нем, и в результате скроллбары Tmemo видны сквозь TPanel и TTreeView. Если им сразу указать visible=false, то все окей, а если это делать, например, при нажатии кнопки перед тем, как показать панель с деревом, то скроллбары все равно видны!



Пытался как-то с помощью кода и научного тыка решить вопрос, не получилось
Код:
memo1.visible:=false;
form1.repaint;
form1.refresh;
application.processMessages;
//какое еще шаманство сюда впихнуть - хрен знает
panel1.visible:=true;

Данный код не исправляет ситуацию :(



Похоже, что при использовании стилей, свойство visible вообще изменить программно невозможно - Tmemo не пропадают! О_о
Kotaries вне форума Ответить с цитированием
Старый 18.07.2014, 09:50   #2
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 162
Подмигивание

Не пойму зачем лепить компоненты один поверх другого? Но в любом случае можно-же и просто изменить стиль скроллбаров на ssnone, а затем вернуть как было:

Код:
panel1.visible:=true;
memo1.scrollbars:=ssnone;
memo2.scrollbars:=ssnone;

//и вернуть как было:
panel1.visible:=false;
memo1.scrollbars:=ssvertical;
memo2.scrollbars:=ssvertical;
при использовании стилей спокойно скрываются TMemo, выбирай что тебе по-душе:
Код:
memo1.Visible:=false;
memo1.Hide;
showwindow(memo1.Handle,sw_hide);
DIONISKA вне форума Ответить с цитированием
Старый 18.07.2014, 20:04   #3
Kotaries
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 27
По умолчанию

1. лепить нужно, чтобы показывать их попеременно
2. проблема не только в мемо, tlabel, например, просвечивается полностью

showwindow(memo1.Handle,sw_hide); - помогло, большое спасибо

Но проблема с Tlabel еще актуальна, ведь у него нет handle.
UPD: для Tlabel помогло "label1.hide".

Проблема решена, обе) Спасибо еще раз


UPD: найденные решения работают почему-то через раз. И с мемами и с лабелами

так что ВОПРОС АКТУАЛЕН!

Последний раз редактировалось Kotaries; 18.07.2014 в 20:36.
Kotaries вне форума Ответить с цитированием
Старый 19.07.2014, 05:20   #4
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 162
По умолчанию

Убил 20 минут чтоб проверить, но всё-же: скроллбары на tmemo перерисовываются поверх других контролов, только если родительским окном является форма, а значит баг проявляется где-то при перерисовке формы. Но как я выше упоминал, что он всплывает только если родитель - форма, а если те-же memo перенести на панель - всё будет в порядке, в не зависимости от того скрывается эта панель, или поверх неё расположена другая.

PS: чтобы показывать их попеременно ИМХО лучше использовать фрэймы, с ними обычно таких проблем не возникает, но как-говорится: хозяин-барин.
DIONISKA вне форума Ответить с цитированием
Старый 19.07.2014, 07:45   #5
Kotaries
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 27
По умолчанию

хозяин - краб-самоучка) Я тоже заметил странные телодвижения с этими скроллбарами: если я запускаю прогу и сразу начинаю работать в том окне (форме) где расположены гадские мемо - все в порядке. Если же я перед этим открыл и закрыл другую формочку программы, а потом начал работать с "баганой" - скроллбары начинают просвечиваться оО

Пойду попробую на панель их налепенить, а еще пойду фреймы покурю. Спасибо еще раз)
Kotaries вне форума Ответить с цитированием
Старый 20.07.2014, 08:21   #6
Kotaries
Пользователь
 
Регистрация: 20.06.2011
Сообщений: 27
По умолчанию

Отписываюсь: перемещение label и всяких tmemo на панель решило проблему с просвечиванием. Спасибо Диониске, я бы сам долго придумывал, как такую хрень решать)
Kotaries вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Embarcadero Delphi XE2 Partner DVD (Зборник компонентов для XE2) volod3000 Софт 2 01.11.2011 02:26
Visible [Smarik] Помощь студентам 2 28.03.2008 18:01
TObject.Visible )Игнат( Общие вопросы Delphi 19 22.01.2008 23:10