Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по скинам DevExpress 
V
    Опции темы
xackera
  Дата 31.1.2014, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.6.2008
Где: USSR

Репутация: нет
Всего: нет



Доброго времени суток всем!
Возникла следующая проблема: 
в программе есть несколько форм - допустим:DataModule, главная форма, форма авторизации и заставка. 
Для построения интерфейса используютя компоненты от DevExpress 13.1 VCL. На DataModule размещен TdxSkinController, который скинет все формы в приложении.
При старте приложения инициализируется датамодуль, форма заставки и форма авторизации. Необходимо сделать так, чтобы заставка не скинилась. 
Форма заствки имеет класс TForm, главная и форма авторизации TdxRibbonForm. Заставка создаётся при помощи компонента TJvTransparentForm в режиме tfmLayeredWindow. Довольно удобный компонет для создания красивой формы.
Здесь посылают в документацию, я пытался сделать как написанов документации (довольно скудной кстати), но заставка всё равно скинится - причём довольно странным образом - вместо "красивой" формы появляется чёрный прямоугольник (скин DarkSide)/
У кого нибудь сть идеи как это побороть?


 

Это сообщение отредактировал(а) xackera - 31.1.2014, 19:52
PM MAIL WWW ICQ GTalk   Вверх
xackera
Дата 4.2.2014, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 17.6.2008
Где: USSR

Репутация: нет
Всего: нет



Проблема решилась достаточно просто. Суть её заключалось в том, что компонент TJvTransparentForm при создании прозрачной формыв режиме tfmLayeredWindow, создаёт дополнительную прозрачную форму класса TJvControlForm на которой размещает контролы с основной формы. Дополнительная форма расплагается над основной. Основную форму TJvTransparentForm преобразует в "слоёное"  при помощи UpdateLayeredWindow. 
TdxSkinController перехватывает сообщения WndProc для применения скина к любому окну в приложении.
В документации от devExpress написано, что для запрета применения скина к какой либо форме необходимо в событии SkinForm компонента TdxSkinController необходимо прописать:

Код

  if AForm.Class is TSplashForm then
   UseSkin:=false;


Соответственно выяснив, что TJvTransparentForm создаёт дополнительную форму, а так же учитывая, что "слоённое" окно не получает сообщения от ОС,  выше приведённый код модифицируется:

Код

 if AForm.ClassName= 'TJvControlForm' then
  UseSkin:=false;
 

И всё работает как надо. 

Это сообщение отредактировал(а) xackera - 4.2.2014, 10:55
PM MAIL WWW ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.