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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2010, 23:01   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию [Проблема]Alphaskins: изменение темы приложения через комбобокс..

так как по правилам "одна тема - один вопрос" то.. >>

собственно тема такая:

на форме есть
1- checkbox(skinAppyRight) галочка на чекбоксе значит, что тема будет применяться мгновенно, иначе, только после нажатия кнопки "применить"

1-combobox(SkinBox)
и есть следующий нерабочий код..(он рабочий но работает не совсем так как должен.):
Код:
procedure TSettingsForm.SkinBoxChange(Sender: TObject);
begin
If skinAppyRight.Checked then
begin
if skinbox.ItemIndex=0 then
begin
MainForm.SkinManager.SkinName:='LongHorn (internal)';
end
else
MainForm.SkinManager.SkinName:='WLM (internal)';

If skinbox.ItemIndex=1  then
begin
MainForm.SkinManager.SkinName:='Office2007 Black (internal)';
end
else
MainForm.SkinManager.SkinName:='WLM (internal)';

If skinbox.ItemIndex=2  then
begin
MainForm.SkinManager.SkinName:='Shine (internal)';
end
else
MainForm.SkinManager.SkinName:='WLM (internal)';

If skinbox.ItemIndex=3  then
begin
MainForm.SkinManager.SkinName:='WLM (internal)';
end
else
MainForm.SkinManager.SkinName:='WLM (internal)';

If skinbox.ItemIndex=4  then
begin
MainForm.SkinManager.SkinName:='WMP 2008(internal)';
end
else
MainForm.SkinManager.SkinName:='WLM (internal)';

If skinbox.ItemIndex=5  then
begin
MainForm.SkinManager.SkinName:='WMP11 (internal)';
end
else
MainForm.SkinManager.SkinName:='WLM (internal)';

If skinbox.ItemIndex=6  then
begin
MainForm.SkinManager.SkinName:='XPLuna(internal)';
end
else
MainForm.SkinManager.SkinName:='WLM (internal)';
end;
end;
суть проблемы в том что все работает, тема применяется, но на 1~5 сек. но потом прокручивает все
Код:
else
MainForm.SkinManager.SkinName:='WLM (internal)';
тоесть после того как показалась тема, она откатывается на стандартную WLM (internal)' , и не 1 раз а 6 ..(приложение мигает...)

как решить?
Человек_Борща вне форума Ответить с цитированием
Старый 15.02.2010, 00:29   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ну оно как бы и не удивительно...вы вот киньте бряку на какую то строку и пройдитесь по коду - увидите почему оно так работает.
А я бы вот собственно так сделал:
Код:
procedure TForm1.SkinBoxChange(Sender: TObject);
begin
If skinAppyRight.Checked then
begin

  case skinbox.ItemIndex of
    0 : Caption:='LongHorn (internal)';
    1 : Caption:='Office2007 Black (internal)';
    2 : Caption:='Shine (internal)';
    3 : Caption:='WLM (internal)';
    4 : Caption:='WMP 2008(internal)';
    5 : Caption:='WMP11 (internal)';
    6 : Caption:='XPLuna(internal)';
    else Caption:='WLM (internal)';
  end;
end;

end;
з.ы. пример для наглядности варианта решения.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 15.02.2010, 10:17   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Потому что у Вас код такой после Else
Делайте как написано выше через Case
FaTaL вне форума Ответить с цитированием
Старый 15.02.2010, 13:49   #4
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

А вы попробуйте сами в голове скомпилировать свой код, полезно так делать)
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 15.02.2010, 18:45   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

ого, спасибо огромное, утром задумался об case of , но не знал как толком применить сие.. спасибо=)
Человек_Борща вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
А вы знаете, что пользователи могут в течении часа после создания темы редактировать заголовок темы? Alar О форуме и сайтах клуба 4 27.04.2010 15:20
Изменение БД через DBGrid Vavik БД в Delphi 17 06.05.2009 17:36
Комбобокс deadh5n1 Помощь студентам 1 11.12.2007 08:12
Изменение иконки у приложения MaGiCaN Win Api 1 16.07.2007 10:20
Изменение параметров ListView через ShowMessage Romanbl4 Компоненты Delphi 5 29.06.2007 15:46