0 Members and 1 Guest are viewing this topic.
Владимир, у меня к тебе предложение: раз уж столько понапихано в скин этого детища соврадиопрома, сделать выбор моделей и кассет по примеру этого скина. Это и наглядно и более цивилизованно. Можно все миниатюры собрать в одну картинку и по клику мыши переключать. Будет ещё одно окно - нормальный диалог настроек скина.
Выбор кассет вращением колеса мыши да ещё в неком потаённом месте - тоже не лучшее решение, слишком быстро всё мельтешит и сбивают с толку клики по слайдеру.
Кнопку выброса кассеты не надо было делать с фиксацией чтоб показать плейлист, нелогично получается - идёт воспроизведение, а та кнопка нажата. И плейлист всё же лучше делать видимым при первом применении скина. Кстати, поменял бы уж его, а то даже перетащить его не за что.
Ещё: при выборе кассет сразу два одинаковых хинта присутствуют.
Выбор же по картинке, согласен, - наглядно и удобно. Для смены интерфейса самое то. Подумаю...
... там ещё в окне кассеты прогрессбар имеется.
А клик... Может его отключить, оставить только скролл?..
Когда я впервые запускаю какой-нибудь скин, а поверх него по центру висит плейлист, мне первым делом хочется его закрыть, дабы не мешал лицезреть сам девайс.
Я таскаю плейлист за обложку трека ...
Владимир, у меня к тебе предложение: раз уж столько понапихано в скин этого детища соврадиопрома, сделать выбор моделей и кассет по примеру этого скина. Это и наглядно и более цивилизованно. Можно все миниатюры собрать в одну картинку и по клику мыши переключать. Будет ещё одно окно - нормальный диалог настроек скина.Выбор кассет вращением колеса мыши да ещё в неком потаённом месте - тоже не лучшее решение, слишком быстро всё мельтешит и сбивают с толку клики по слайдеру.Кнопку выброса кассеты не надо было делать с фиксацией чтоб показать плейлист, нелогично получается - идёт воспроизведение, а та кнопка нажата. И плейлист всё же лучше делать видимым при первом применении скина. Кстати, поменял бы уж его, а то даже перетащить его не за что.
procedure Execute(Sender, Arguments: TComponent);const ImgW = 92; // размеры ImgH = 64; // миниатюрыbegin with Arguments do if Get('Button') = 'mbLeft' then FindObject('Model_Counter').Set('Position', Get('Y') div ImgH * 6 + Get('X') div ImgW) // это тот счётчик, которых заведует переобуванием end;
Наглядно получилось, удобно. Но вот, опять же... Я долго не мог понять, как выбрать кассету. Оказалось, что заголовок окна кликабельный, чего в окнах не бывает. Уж надо было сделать две отдельных кнопки, чтоб заморочек таких не было, или уж всё в одном окне: и модели и кассеты.
Так у тебя каждая миниатюра это отдельных компонент? Не жалко ресурсов? И какой же это гемор всё располагать в окне, да ещё куча биндинга!Я ж предлагал простейший способ - все миниатюры собрать в одну картинку...
...и выбирать по координатам мыши. Скрипт всего в одну строчку:Code: [Select]procedure Execute(Sender, Arguments: TComponent);const ImgW = 92; // размеры ImgH = 64; // миниатюрыbegin with Arguments do if Get('Button') = 'mbLeft' then FindObject('Model_Counter').Set('Position', Get('Y') div ImgH * 6 + Get('X') div ImgW) // это тот счётчик, которых заведует переобуванием end;Пример в аттаче. Может, не точно вырез картинку со скрина, но это на результат практически не влияет.За титанический труд +1.
А как быть с КОНСТРУКТОР'ом? Для клавиш, ручек, индикаторов и кассет - каждому свою панель?
От конструктора я бы отказался. Зачем глумиться над аппаратом? Люди худо-бедно работали над дизайном, и мешать всё в кучу, несовместимые вещи, не стОит.
Если выбор кассет будет на второй странице, то, ес-но, будет нужна ещё панель, но скрипт будет такой же, только вписать новые размеры (точнее, шаг) миниатюр.P.S.Да, ещё множитель может измениться (та 6-ка) - по числу элементов в ряду. Надо было вынести в константы, чтоб понятнее было.
... но мне не удалось заставить панель в твоём примере масштабироваться...
Получается, ты заблокировал масштабирование этого окна. Зачем?
Я ж предлагал простейший способ - все миниатюры собрать в одну картинку и выбирать по координатам мыши. Скрипт всего в одну строчку:Read more...Code: [Select]procedure Execute(Sender, Arguments: TComponent);const ImgW = 92; // размеры ImgH = 64; // миниатюрыbegin with Arguments do if Get('Button') = 'mbLeft' then FindObject('Model_Counter').Set('Position', Get('Y') div ImgH * 6 + Get('X') div ImgW) // это тот счётчик, которых заведует переобуванием end;
После закрытия плеера и повторного включения все текстуры возвращаются к дефолтным. С этим можно что-то сделать?