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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2009, 08:27   #1
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию Смена скина AlphaControls

Здравствуйте. В моей программе присутствуют 2 скина.
Какой код нужно писать, чтобы пользователь смог менять скины в программе?
Я написал вот так:
Код:
If SelectSkins.ItemIndex=1 Then
    Form1.sSkinManager1.SkinName:=('Office 2007 Blue');
Скин меняться та меняется.. А вот только с глюками какими то...
Некоторые части окна. Почему то не скинятся... а остается просто белая полоса... Я вообще правильно пытаюсь изменить скин?

Да кстати..
(SelectSkins - это у меня ComboBox)
Получается если в ней выбран пункт.. то есть (Индекс - 1) это получается выбран второй скин... то есть допустим Office... Тогда скин программы меняется на Office...
Подскажите где я спатыкаюсь?
ScreN вне форума Ответить с цитированием
Старый 13.01.2009, 08:42   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Скобочки там ставить не надо
Просто Form1.sSkinManager1.SkinName:='Offi ce 2007 Blue';
FaTaL вне форума Ответить с цитированием
Старый 13.01.2009, 08:59   #3
masterdela
Пользователь
 
Аватар для masterdela
 
Регистрация: 28.01.2008
Сообщений: 66
По умолчанию

Scren, эта проблема идет с модальными окнами на сколько я знаю!
После применения скина необходима перерисовка... Или используй MDIChild форму...
Была бы цель - и всё получится!
masterdela вне форума Ответить с цитированием
Старый 13.01.2009, 09:56   #4
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию

Спасибо ребята. Значит делаю правильно.. А вот на счет перерисовки.. Это получается нужно добавлять.. ( Form1.sSkinManager1.UpdateSkin ) ?.. А только что дальше писать?

Если так то..получается ( Form1.sSkinManager1.UpdateSkin; ) Только вот где это нужно прописывать? Случайно не в (procedure TForm1.sSkinManager1AfterChange(Sen der: TObject) ?
Если да то пробывал.. не помогло... так же белые полосы..

Да и еще.. скины у меня встроенные... то есть не внешние..

И почему то когда происходит смена скина.. окно с настройками мигает 3 раза...

Хм..
Код:
If ConfigForm.SelectSkins.ItemIndex=1 Then
    Form1.sSkinManager1.SkinName:='Vista';
    If ConfigForm.SelectSkins.ItemIndex=2 Then
    Form1.sSkinManager1.SkinName:='Office 2007 Blue';
Почему то на Office меняется.. А вот обратно на Vista нет... в чем может быть проблема?
А с прорисовкой скина помогите... UpdateSkin не помогает... или я пишу его не туда

Последний раз редактировалось Stilet; 28.01.2010 в 16:12.
ScreN вне форума Ответить с цитированием
Старый 13.01.2009, 11:06   #5
masterdela
Пользователь
 
Аватар для masterdela
 
Регистрация: 28.01.2008
Сообщений: 66
По умолчанию

UpdateSkin не причем! Я говорил про прорисовку окна, а не об обновлении скина... Я лично использовал форму MDIChild, и менял скины сразу по щелчку в ListBox со скинами... Работает как часы, никаких мерцаний, идет плавная смена скина!
С модальной формой была такая же проблема, у меня ее вообще не было видно, делал процедуру перерисовки всех копмонентов и самой формы, да, все компоненты отображались нормально, только вот сам заголовок окна не перерисововался! Вот это и лажа!

Думаю лучше будет, если сделаешь кнопку "Применить" по нажатию которой будет сначала закрываться окно ConfigForm, а после применяться скин...
Попробуй так:
Код:
//по нажатию на кнопку "Применить"
procedure TConfigForm.ApplyButtonClick(Sender: TObject);
begin
    close;

    If ConfigForm.SelectSkins.ItemIndex=1 Then
              Form1.sSkinManager1.SkinName:='Vista';
    If ConfigForm.SelectSkins.ItemIndex=2 Then
              Form1.sSkinManager1.SkinName:='Office2007 Blue'; 
end;
Была бы цель - и всё получится!
masterdela вне форума Ответить с цитированием
Старый 13.01.2009, 11:21   #6
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию

Блин ниче не могу понять... Прописал код на кнопку применить...
Опять же скин на Office меняется .. блин а на Vista нет... почему так? А с мерцаниями и плохой прорисовкой...я не знаю что делать... это получается мне нужно само окно с настройками FormStyle нужно ставить в MDIChild ?
И все будет нормально?
Но если я поставлю его в MDIChild.. тогда у меня перестанет работать программа... будет ошибка... Мне придется же поменять все участки кода с которыми связана форма ConfigForm

Получается AlphaControls фигня по сравнению с BusinessSkinsForm

Мда..поменял FormStyle на MDIChild.. теперь ошибка .. а кода много..очень много... че теперь мне где менять?

Блин и теперь обратно на Normal востановить не могу.... все равно ошибка... че делать?

Ппц.. я в панике.. Что делать? На Normal вернул.. все равно ошибка..

Последний раз редактировалось Stilet; 28.01.2010 в 16:13.
ScreN вне форума Ответить с цитированием
Старый 13.01.2009, 12:08   #7
masterdela
Пользователь
 
Аватар для masterdela
 
Регистрация: 28.01.2008
Сообщений: 66
По умолчанию

Scren,почему не можете восстановить в Normal? Нет, я не говорю что нужно теперь все переделывать в MDI окнах... А для того чтобы окно работало в стиле fsMDIChild необходимо главной форме установить стиль fsMDIForm...

Что у вас за мерцания? У меня лично никаких мерцаний нет и не было! Может железо слабенькое?

Да и, на Vista у вас не меняется из-за ошибки в определении выбранного скина: нумерация в ComboBox идет с нуля... т.е сделайте проверку если ItemIndex=0 то Vista, если 1 - то Office...

У вас отдельная форма только для выбора скина или здесь же другие какие-то настройки? Код, что я писал выше прекрасно работает, по нажатию кнопки "Применить" форма закрывается и сразу же применяется скин! У вас наверное есть форма с настройками из которой которой вызывается еще одна для выбора скина, так? В общем, после применения скина закрывайте все открытые окна...

Или сделайте применение скина только после перезагрузки программы. Т.е. пользователь выбрал скин, вы сохраняете его в файле, предупреждаете пользователя что изменения вступят в силу только после перезапуска программы. При загрузке программы считываете сохраненный скин и применяете его до показа формы! Все! Программа откроется уже в новом виде! )
Была бы цель - и всё получится!
masterdela вне форума Ответить с цитированием
Старый 13.01.2009, 14:00   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Цитата:
Сообщение от masterdela Посмотреть сообщение
UpdateSkin не причем! Я говорил про прорисовку окна, а не об обновлении скина... Я лично использовал форму MDIChild, и менял скины сразу по щелчку в ListBox со скинами... Работает как часы, никаких мерцаний, идет плавная смена скина!
С модальной формой была такая же проблема, у меня ее вообще не было видно, делал процедуру перерисовки всех копмонентов и самой формы, да, все компоненты отображались нормально, только вот сам заголовок окна не перерисововался! Вот это и лажа!

Думаю лучше будет, если сделаешь кнопку "Применить" по нажатию которой будет сначала закрываться окно ConfigForm, а после применяться скин...
Попробуй так:
Код:
//по нажатию на кнопку "Применить"
procedure TConfigForm.ApplyButtonClick(Sender: TObject);
begin
    close;

    If ConfigForm.SelectSkins.ItemIndex=1 Then
              Form1.sSkinManager1.SkinName:='Vista';
    If ConfigForm.SelectSkins.ItemIndex=2 Then
              Form1.sSkinManager1.SkinName:='Office2007 Blue'; 
end;
Потому что нумерация списков идёт с нуля, а не с единицы. Скины из папки берутся или они Internal Skin(то есть вшиты в программу)?
Вот так пробывали?
Загрузить названия скинов в список, при создании формы: sSkinManager1.GetSkinNames(CBox1.It ems);
Нажатие на кнопку "Применить": sSkinManager1.SkinName := CBox1.Items.Strings[CBox1.ItemIndex];
Alter вне форума Ответить с цитированием
Старый 13.01.2009, 14:26   #9
ScreN
Пользователь
 
Аватар для ScreN
 
Регистрация: 27.12.2008
Сообщений: 88
По умолчанию

Да то что нумерация идет с нуля, это я знаю.. Но не так не так не работает.. даже если поставить 0 вместо 1... я просто проверял..и поэтому забыл поменять 1 на 0.. но все равно не работает... окно с настройками у меня одно.. больше никаких окон нету... только главное окно и окно с настройками.. все...в нем есть ComboBox...в нем я выбираю скин... после нажатия на кнопку применить.. форма с настройками пропадает..и сразу же 1 раз мерцнет и снова пропадает... все... потом когда я захожу в форму с настройками.. там белые полосы вместо скина....а сама главная форма... отображается нормально...

Сейчас вообще не могу заставить программу работать... поменял на форме с настройками FormStyle в MDIChild...после этого программа перестала запускатся..выдает ошибку... я перезапустился...и поменял снова на fsNormal... после этого программа запускается.. но когда пытаешься зайти в настройки.. при открытии окна с настройками... вылезает та же ошибка...и программа перестает работать... как теперь востановить стабильность программы?

И ругается именно на открытие формы с настройками.. именно на Form1.ShowModal... Подсвечивает эту строку синем цветом Как вернуть та все.

Щас если я установлю главной форме стиль fsMDIForm то будет еще хуже... ошибок будет больше... мне это не надо...
Я уже один раз так пробывал... потом разгребал 2 дня..что же происходит..почему же не запускается программа...
Тоже самое что и сейчас с формой настроек... не открывается она... и все из-за того что 1 раз поменял стиль на MDIChild... И теперь хоть в че его ставь... при открытии ошибка..

Последний раз редактировалось Stilet; 28.01.2010 в 16:15.
ScreN вне форума Ответить с цитированием
Старый 13.01.2009, 16:22   #10
QunneD
C++ & PHP & Asm
Форумчанин
 
Аватар для QunneD
 
Регистрация: 06.12.2008
Сообщений: 300
По умолчанию

Вот лови пример, все нормально работает.
Вложения
Тип файла: rar skinselector.rar (4.2 Кб, 304 просмотров)
QunneD вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка AlphaControls spamer Компоненты Delphi 22 09.06.2012 13:37
Установка AlphaControls Gromsky Компоненты Delphi 38 11.01.2012 12:55
Глюк из-за скина Altera Свободное общение 5 11.05.2008 07:01
Установка AlphaControls v5.31 athlant64 Компоненты Delphi 4 08.03.2008 12:08
Насчёт скина JoanM Win Api 5 16.04.2007 16:45