Forum Replies Created
-
AuthorPosts
-
TCountParticipant'kao' wrote:
Добрый день.
Я бы хотел в своем проекте сделать частичную скинизацию контроллов.
Меня, например, устраивает системный вид окна и стандартных контроллов.
Я хочу скинизировать только кнопки и скроллбары.
За основу был взят скин Notes Wood – в нем скроллбар без стрелок.
Из скина почищены (кнопка Clear) данные всех секций, кроме секций Buttons и Scrollbar elements.
Также почищены все иконки и рамки в General skin options.
MASTER COPY.BMP оставил без изменений.
В SkinManager:
Code:ThirdParty: TButton, TListBox и TScrollBar.
SkinnedPopups=FalseВ SkinProvider:
Рисунок 1:
Code:DrawClientArea=True
DrawNonClientArea=TrueРисунок 2:
Code:DrawClientArea=False
DrawNonClientArea=True1. Почему скроллбар рисуется со стрелкой, если в скине он без стрелки?
2. Почему по-разному скинизируются скроллбары для TListBox и TScrollBar?
3. Почему скинизируется форма?
Что я делаю не так?
С уважением.
Значит так:
1. В SkinProvider отключаем DrawNonClientArea и включаем DrawClientArea.
2. В SkinProvider включаем SkinData.CustomColor.
3. В SkinManager отключаем SkinningRules.srStdForms.
Ответы:
1. Вы неправильно редактируете скроллбар в скине.
2. Они не по-разному скинируются, просто Вы видете два разных скролла – горизонтальный и вертикальный, которые в Вашем скине настроены совершенно по-разному.
3. Скинируется, потому как было включено ее скинирование:)
Вообще, непонятно, какого вида Вам скроллбары нужны…так я помог бы скин сделать.
TCountParticipant'Support' wrote:Должно работать с Сабменю. Можно глняуть скриншот, где не работает? Демка – было бы еще лучше.
Прошу прощения, все нормально:)
TCountParticipant'AllNicksOver' wrote:Доброго здоровья.
На рисунке панель “добро пожаловать” находится на панели “для начала добавьте класс” -> границы не пересекаются -> тень панели полная.
А кнопка и “панель со стрелкой 3” находяться на форме, и при пересечении их границ их тень объединяется.
Почему при пересечении границ компонентов, тень от них отрисовывается только по общему контуру?
Собственно, эффекты прорисовываются только на родителе.
TCountParticipant'Kvadra256' wrote:Сделал TsAlphaHint на основе фрейма, но собыития onClick на фрейме, label внутри фрейма – не работают. Нажатие мыши происходит “сквозь” всплывающую подсказку.
Подскажите пожалуйста, как сделать hint кликабельным ?
Подозреваю, что подсказка AlphaHints – это THintWindow как многослойное окно (с прозрачным стилем EX_LAYRED). И на него выводится просто картинка, которая создается на основе фрейма.
Поэтому какие-либо контролы нереальны.
Можно как вариант использовать форму вместо хинта и показывать ее по событию Application.OnShowHint, ну или когда Вам вздумается.
TCountParticipant'ms301' wrote:Скачал демо прилодение (ASkinDemo.zip (5.6 Mb, 19.11.2014)). Есть пару ошибок(обнаружил на win8.1).
1. Не закрывается приложение, если нажать на крестик окна. Анимация кнопки закрытия отрабатывается – но приложение не закрывается.
2. – Не могу точно определить в каком случае оно появляется. Кажется появляется через некоторое время после того, как форму переместить на задний фон.
3. Не знаю, баг или просто не реализация возможности – но TsSlider не подсвечивается при наведении на него мышью, в отличии от других контролов
Насчет остального не знаю, но в слайдере можно просто сменить секцию для скинирования.
TCountParticipant'AllNicksOver' wrote:Доброго здоровья!
Дано: Главная форма, на ней sSkinManager и sSkinProvider. Вторая форма, и на ней sOpenDialog и свои sSkinManager и sSkinProvider. sSkinManager второй формы isDefault=false.
Главная форма вызывает form2.showmodal и устанавливает form1.sSkinManager.Saturation:= -100; (главная темнеет пока видна вторая).
Проблема:
Окно Выбора файла sOpenDialog подчиняется sSkinManager главной формы и имеет серый вид (Saturation:= -100);
В настройках sOpenDialog нет возможности указать какой sSkinManager им управляет.
Беда.
AlphaSkin 9.17
Delphi XE3
Windows XP x32
Я как-то и не замечал такого, не было надобности) В своей проге я сделал затемнение, просто создавая полупрозрачную форму нужного цвета (например, черную), которая накладывается на ту, которая должна стать неактивной.
P.S. Может разработчик поможет Вам…
November 17, 2014 at 1:20 pm in reply to: Периодически появляется сбой, связанный с подсказками #52763TCountParticipant'Michael' wrote:Отдельной демки нет, sPanel, на ней sSpeedButton у нее hint при наведении мышки на кнопку иногда выскакивает, у меня получилось такое только один раз и то во время обычной работы, но от клиентов отчеты приходят регулярно
У меня тоже именно при нажатии на sSpeedButton ошибка вылетает иногда…Такую ошибку нельзя повтовить, потому как у меня она возникает не всегда.
Есть подозрение, что эта ошибка вылезает в момент, когда уже должна появится подсказка, но происходит нажатие и фокус контрола уходит, а AlphaHints думает, что контрол активен… Не знаю, что-то вроде этого.
В любом члучае, когда я сделал свой компонент для подсказок – проблема исчезла. Может в AlphaHints и фрейм как-то портачит, уж не знаю…
TCountParticipant'Stertor' wrote:Заметил очень неприятный баг, связанный с всплывающими подсказками. Суть его сводится к тому, что при наведении на кнопку,
hint не исчезает вообще, а начинает мигать. Используется HintManager. Баг не привязан к шкурам.
HintManager уже давно в прошлом) AlphaHints пришел ему на смену.
TCountParticipant'Boris' wrote:Версия 9.17 для Delphi 7
Если значение Caption задать начинающимся с маленькой русской буквы “я” (например, “январь”), то при выполнении формы он не отображается. Против заглавной “Я” ничего не имеет против.
В Delphi XE7 – полет нормальный.
А что, если Вы тоже самое сделаете в стандартном TCheckBox?
TCountParticipant'Support' wrote:Будет поправлено в ближайшем релизе.
В версии 9.17 исправлено)
TCountParticipant'TCount' wrote:Решит на 100% ^_^
Версия 9.17 – работает!
TCountParticipant'Support' wrote:Пока решения нет, надеюсь скоро будет.
Подождем.
TCountParticipant'Support' wrote:В ближайшем релизе будут работать OnMouseLeave и OnMouseEnter. Это решит вопрос?
Решит на 100% ^_^
TCountParticipant'DWW' wrote:Просто интернет полон примеров, в которых идут вызовы keybd_event друг за дружкой, и все нажатия типа у них нормально эмулируются. У меня без PostMessage не получается это сделать. Если кто подскажет в чем моя ошибка и что я недопонимаю. буду благодарен. Т.е. проблема, я думаю, в очереди сообщений. Без PostMessage можно как-нибудь заставить отработать нормально keybd_event? Или только потоки и все?
Просто непонятно, что прога будет делать. Виртуальная клава…Вижу, что месадж отправляется какому-то окну…Вопрос: какому?
Есть обычная процедура нажатия, но она работает только внутри проги.
procedure PressKey(Key:Integer);
begin
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
TCountParticipant'DWW' wrote:то есть если я в потоке напишу:
if VKShift then
keybd_event(VK_SHIFT, 0, 0, 0);
PostMessage(Wnd,WM_KEYDOWN, VKey,0);
if VKShift then begin
VKShift:=false;
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
end;
код отработает без проблем? только потом синхронизировать вывод надо?
Я просто не знаю структуру проги. Но логика такова, что код в потоке, а операции с окном (формой) – через синхронизацию.
TCountParticipant'DWW' wrote:Попробовал. Не помогло.
Кстати, Application.ProcessMessages опасная штука, особенно если использовать ее повсеместно. У меня в какой-то проге тоже из-за этого падения были. Именно потому, что Application.ProcessMessages манипулирует с очередью сообщений.
Может лучше через потоки реализовывать?
TCountParticipantА почему бы не установить версию 9.16 и проверить на ней?)
TCountParticipant'gangamsoft' wrote:Здравствуйте! Подскажите как сделать, чтобы на копке было 2 строки.
Первая строка – жирная и чуть больше шрифт
Вторая строка – меньше шрифт
Две строки легко сделать: Button.Caption:='Первая строка'+#13+'Вторая строка'
Но разный шрифт не получится сделать.
Единственное решение – это использовать событие OnPaint кнопки. Такое событие есть не у всех кнопок. Я бы взял TsSpeedButton.
TCountParticipant'Stertor' wrote:Привет, возможно, я ошибаюсь, но кажется мне, нужно править скин – изменить кол-во состояний чекбоксов и выставить свойство active only в true.
Если бы все так просто) Вообще, Active Only при выборе маски или картинки для секции скина указывает на то, что выбранная маска или картинка будет прорисовываться только в активном состоянии компонента.
Здесь, по-видимому, дело в самих фокусах и событиях компонента. А именно в CheckBox эти события не работают.
Например, тот же самый случай, только с tsButton…Только у кнопки работает onMouseLeave и если в этой процедуре прописать ActiveControl:=NIL или анимацию для “плавной потери фокуса”, то это сработает.
TCountParticipant'Stertor' wrote:Красиво смотрится. Отлично, значит, и с помощью панелек можно. Спасибо!
Если будут проблемы – пиши в ЛС.
-
AuthorPosts