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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2014, 02:25   #21
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Image1MouseMove это обработчик движения мыши по картинке. При малейшем движении ты выполняешь подгрузку иконки. Итого подгрузок 20 -30 (в зависимости от размера Image) в долю секунды... Мягко говоря ты "имеешь" процессор. Не удивительно, что программа подмигивает, перерисовываясь с такой скоростью. Решение проблемы сменить обработчик на MouseEnter
doktor255 вне форума Ответить с цитированием
Старый 13.02.2014, 07:58   #22
VMG
Пользователь
 
Аватар для VMG
 
Регистрация: 11.02.2014
Сообщений: 12
Восклицание

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Чем мешаю? Тем что в самом начале темы сказал, что нужно использовать PngImageList, чтоб ты не извращался конвертируя png в bmp и обратно пытаясь безуспешно сохранить альфаканал?
[censored]
Только сейчас задумался о том что Вы из действительности правы , стоит подучить аспект PngImageList , да и вообще попробывать его , потому что я вообще не нашёл такой функции почему то у меня в Delphi XE 5
Наверное не там смотрел ...

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Image1MouseMove это обработчик движения мыши по картинке. При малейшем движении ты выполняешь подгрузку иконки. Итого подгрузок 20 -30 (в зависимости от размера Image) в долю секунды... Мягко говоря ты "имеешь" процессор. Не удивительно, что программа подмигивает, перерисовываясь с такой скоростью. Решение проблемы сменить обработчик на MouseEnter
Действительно !
Благодарю за разъяснение и помощь !

К стати , вот такой вопрос :
Возможно реализовать к примеру вот такой функционал для Апдейтора , установить много TPanel с разными дизайнами и функционалом :

Пример :

При первом запуске Ланчера он проверяет есть ли с ним наличие в его же директории файла к примеру setting.ini

Если да , то загрузить с него параметры , если нет тогда открыть программу и пользователю предоставить TPanel1

TPanel1 к примеру будет окно настройки , там возможно выбрать язык и скин ланчера
После нажатия на ОК , создаётся файл и настройки сохраняются в файл setting.ini

Код:
setting.ini
-------------------------------
Panel=Номер Выбранной панели пользователем
Login=Логин пользователя при установленной галочки запомнить меня
Password=Аналогично функции логин
Вот допустим в Panel1 Пользователь выбрал :
Skin1 + Русский язык -> У него изчезает Panel1 Panel3 Panel4 Panel5 после нажатия кнопки Применить и появляется Panel2
Если он выбирает
Skin1 + English язык -> У него изчезает Panel1 Panel2 Panel4 Panel5 после нажатия кнопки Применить и появляется Panel3
Если он выбирает
Skin2 + Русский язык -> У него изчезает Panel1 Panel2 Panel3 Panel5 после нажатия кнопки Применить и появляется Panel4
Если он выбирает
Skin2 + English язык -> У него изчезает Panel1 Panel2 Panel3 Panel4 после нажатия кнопки Применить и появляется Panel5

то есть понятно что
Panel1 -> Окно настроек
Panel2 -> Меню ланчера Skin1 RU
Panel3 -> Меню ланчера Skin1 EN
Panel4 -> Меню ланчера Skin2 RU
Panel5 -> Меню ланчера Skin2 EN

ну и естественно что при выборе панели меняется и ссылка на сервер откуда он качает файлы игры
ну а там рассортировать по скинам
launcher.example.com/skin1/ru/
launcher.example.com/skin1/en/
launcher.example.com/skin2/ru/
launcher.example.com/skin2/en/

На каждую панель скина сделать кнопку настроек , и при нажатие на неё все панели пропадали (намного тяжелей сделать вычисление какая панель активная а какая нет , и деактивировать активную) а Panel1 активировать что бы пользователь мог изменить настройки ланчера
Ну по сути это 100% возможно , вот только не пойму с чего трогаться ...

Думаю для начала нужно сформулировать отчётливый алгоритм
1) Узнать как можно делать панель неактивной , так как если я наложу на Panel1 сверху Panel2 то она будет в любом случае перекрывать и не давать возможности работать с Panel1
Как правильно называется функция которая убирает вообще Panel1 не только визуально , но так что бы случайно с Panel2 её не зацепить , так как расположение кнопок может совпасть

2) Что использовать для того что бы считывать информацию с файла setting.ini ? ну и записывать при каждом нажатии Применить , ну и создавать файл если он отсутствует , ну и загрузить Panel1 если в файле setting.ini сделана ошибка .

Посоветуйте в какую сторону мне , что учить , что ковырять , от чего отталкиваться ??
Спасибо всем , эта тема закончена , наверное нужно создать новую и соответственно там уже это разбирать !

Последний раз редактировалось VMG; 13.02.2014 в 08:40.
VMG вне форума Ответить с цитированием
Старый 13.02.2014, 11:59   #23
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от VMG Посмотреть сообщение
При первом запуске Ланчера он проверяет есть ли с ним наличие в его же директории файла к примеру setting.ini
Для этой цели можно воспользоваться двумя модулями. Первый модуль (прописываешь в секции Uses) называется IniFiles. Пример использования:
инициализация программы
Код:
var ini: TIniFile;
begin
Ini:= TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini' ));
Edit1.Text := Ini.ReadString('Section1', 'Param1', 'Пусто') // секция, параметр, значение в случае отсутствия параметра
финализация программы
Код:
var ini: TIniFile;
begin
Ini:= TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini' ));
Ini.WriteString('Section1', 'Param1', Edit1.Text)
Проверять наличие INI не нужно. При первом запуске будут устанавливаться значение по умолчанию (третий параметр функции Ini.ReadString); Так же с ини можно читать Integer (числа), и bollean (переключатели).
Ещё есть модуль Registry, для работы с реестром. Пример использования:
Код:
var Reg: TRegIniFile;
begin
MySettings: TRegIniFile.Create('Имя программы');
Дальше все как с TIniFile.

P.S. По поводу кучи панелей, это делается через Frame. Изучай. Исходные изображения, как тебе писали выше лучше всего, если их не много, хранить в PngImageList (сторонний компонент который нужно установить, ищи в гугле), либо создать Res файл (можно использовать консольную программу из комплекта делфи brcc32, либо стороннюю Restorator), подключить к проекту, и работать непосредственно с ресурсами. Смысла в подключении внешнего DLL при объёме графики в пару мегабайт я не вижу. Такой тип подключения ресурсов необходим в играх, где размеры графики переваливают за гигабайт.

Последний раз редактировалось doktor255; 13.02.2014 в 12:12.
doktor255 вне форума Ответить с цитированием
Старый 13.02.2014, 18:04   #24
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

а не проще сделать компонент типа TImageButton (от класса TImage) и создать внутри него например 2-3 статус-картинки и обработать наведение и отведение курсора.
что-то подобное выйдет
ZuBy вне форума Ответить с цитированием
Старый 14.02.2014, 09:19   #25
victorixx
Пользователь
 
Регистрация: 29.01.2010
Сообщений: 21
По умолчанию

ToolBar в связке с обычным ImageList неплохой результат дает - там также три картинки подгружаются как раз под ваши случаи - одна просто, одна на наведение, одна на нажатие. Просто кнопки надо делать размером под изображение и тогда все ровно должно быть, даже "скрипт", собственно, писать не придется
victorixx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так чтобы при наведение мыши subbota HTML и CSS 3 03.03.2016 09:36
Классы. Чтение и создание .bmp изображения. Пропадает 1 пиксел при создании изображения. s-mumrik Visual C++ 3 12.04.2013 21:21
Смена цвета изображения при смене параметров faust-v JavaScript, Ajax 4 19.09.2011 11:46
При щелчке на ячейке DBGrid загружать изображение в Image1 из БД ulala Помощь студентам 9 09.10.2010 16:05
Смена изображения при наведении не на белую область Alex Cones Общие вопросы Delphi 6 10.05.2009 17:17