VXDRV

Forum Replies Created

Viewing 20 posts - 21 through 40 (of 40 total)
  • Author
    Posts
  • VXDRV
    Participant
    'VXDRV' wrote:

    Не хочется ввязываться в допиливание скинов.

    А всё таки придётся! Как вытащить и применить маски я не знаю + манипуляции с фонами. 😕

    Модификации подлежат:

    AfterBurner,

    BlueGlass,

    BlueIce,

    BluePlastic,

    Deep,

    Desert (непонятно ещё),

    Garnet II,

    Golden,

    KaraKum,

    Ledenets,

    LikeOperaStyle,

    MacMetal,

    MacOS,

    MakOS2,

    Mint,

    MoonLight (тоже непонятно),

    Office12Style,

    Rhombus,

    Terminal4Bit (заголовок – нечто невообразимое),

    Terminal4Bit_contrast (тоже самое что и пунктом выше),

    Winter2003,

    WMP 2008,

    WMP11,

    Wood.

    Придётся осваивать ASkinEditor. 😕

    VXDRV
    Participant
    'TCount' wrote:

    Приветствую!))

    А все очень просто) Дело в том, что сначала рисуется скин формы (FORM), а потом просто накладывается скин заголовка (FORMTITLE).

    Вот на скрине слева – это маска FORMTITLE. Справа – FORM. Попробуйте объединить) Что получится?) Правильно, уголки от секции FORM будут выглядывать.

    Кстати, и в скине BlueGlass тоже самое (можете понаблюдать). Там уголки заголовка “круче”, чем у формы. Вследствие накладки получается некий мутант)))

    Вобщем, думаю, разработчику просто нужно перерисовать секции FORM в скинах, где нужно. Чтобы границы рамки секции FORМ соответствовали рамкам в FORMTITLE.

    Ну это как вариант.

    Или же Вам самим допилить))))

    Да это я всё уже сам понял – вопрос в корректной обрезке углов – чтобы с фоном било. И работало на всех скинах. Форма я так понимаю создаётся по регионам из этих масок. Пробовал создать регион для TFrame по примерам – при движении фрейма в редакторе один из углов уплывал. Мысль есть – сделать аппликацию и FORMTITLE и FORM на промежуточном TBitmap (как в детском саду из бумаги), но пока не знаю как – думаю. 🙄

    Не хочется ввязываться в допиливание скинов.

    VXDRV
    Participant

    На скорую набросал проект в атаче. 🙄

    При выборе скинов GarnetII или AfterBurner например – не могу избавиться от уголков в шапке.

    VXDRV
    Participant
    'Support' wrote:

    А можно всю эту програмку посмотреть?

    Процедура вроде нормально написана, но с програмкой я точно могу сказать что не так.

    К сожалению это невозможно около 60 файлов, 200000 строк кода! Там используется куча сторонних и самописных компонентов и классов, DSPack. Может позже я скомпилю и соберу минимальное приложение?

    Суть такова – есть базовый класс TFrame, на ней панель. На панель кладутся компоненты в наследниках TFrame. И с помощью TPaintBox – я пытаюсь сэмулировать вид этой панели как TForm.

    Последний вариант у меня это использование вместо TFrame – TForm – но это крайний вариант.

    Нужно будет делать BorderStyle:=bsNone чтобы вручную рисовать у неё (у формы) заголовок – когда скинирование отключено.

    А ещё там надо будет вмешиваться в свойство Active – формы – тоже сюрпризы предполагаются.

    VXDRV
    Participant
    'Support' wrote:

    VXDRV, в Aluminium секция заголовка формы полностью прозрачна, вся форма рисуется только в секции FORM.

    То, что на последних скриншотах , так и должно быть в таком случае.

    Это я уже понял, скин Alluminium отображается нормально – это наладил.

    А AfterBurner? – привёл пример – там с углами верхними не ладится…

    А также, например Winter2003… Рисую всё это дело так:

    Code:
    procedure TFrameUI.PB_FramePaint(Sender: TObject);
    var
    BGInfo:sConst.TacBGInfo;
    IndexForm:Integer;
    IndexFormT:Integer;
    RT:TRect;
    Canvas:TCanvas;
    TX,TY,TW,TH:Integer;
    SP:TsSkinProvider;
    begin
    Canvas:=PB_Frame.Canvas;
    if SM=nil then Exit;
    SP:=SkinProvider;

    if SM.Active then
    begin
    IndexForm:=SM.GetSkinIndex('FORM');
    if IndexForm <> -1 then
    begin
    GetBGInfo(@BGInfo, PnlBG.Handle);
    PaintItem(
    IndexForm,
    'FORM',
    BGInfoToCI(@BGInfo),
    True,
    Integer(SP.FormActive),
    Rect(0, 0, PB_Frame.Width, PB_Frame.Height),
    Point(PB_Frame.Left, PB_Frame.Top),
    Canvas.Handle);
    end;

    IndexFormT:=SM.GetSkinIndex('FORMTITLE');
    if not SM.IsValidSkinIndex(IndexFormT) then Exit;
    if IndexFormT <> -1 then
    begin
    if SM.gd[IndexForm].States>1 then
    begin
    GetBGInfo(@BGInfo, PnlBG.Handle);
    PaintItem(
    IndexFormT,
    'FORMTITLE',
    BGInfoToCI(@BGInfo),
    True,
    Integer(SP.FormActive),
    Rect(0, 0, PB_Frame.Width, 20),
    Point(PB_Frame.Left, PB_Frame.Top),
    Canvas.Handle);
    end
    else
    begin
    GetBGInfo(@BGInfo, PnlBG.Handle);
    PaintItem(
    IndexFormT,
    'FORMTITLE',
    BGInfoToCI(@BGInfo),
    False,
    1,
    Rect(0, 0, PB_Frame.Width, 20),
    Point(PB_Frame.Left, PB_Frame.Top),
    Canvas.Handle);
    end;

    end;
    Canvas.Font.Style:=[fsBold];
    TW:=Canvas.TextWidth(FCaption);
    TH:=Canvas.TextHeight(FCaption);
    TX:=(PB_Frame.Width-TW) div 2;
    TY:=(20-TH) div 2;
    RT:=Rect(TX,TY,TX+TW,TY+TH);
    acWriteTextEx(Canvas,PChar(FCaption),True,RT,0,IndexFormT,SP.FormActive,SM);
    end
    else
    begin
    if TForm(Parent).Active then
    begin
    Canvas.Brush.Color:=clActiveCaption;
    Canvas.Font.Color:=clCaptionText;
    end
    else
    begin
    Canvas.Brush.Color:=clInActiveCaption;
    Canvas.Font.Color:=clInactiveCaptionText;
    end;
    Canvas.FillRect(Rect(1,1,Width-1,20));
    Canvas.Font.Style:=[fsBold];
    TW:=Canvas.TextWidth(FCaption);
    TH:=Canvas.TextHeight(FCaption);
    TX:=(PB_Frame.Width-TW) div 2;
    TY:=(20-TH) div 2;
    Canvas.TextOut(TX,TY,FCaption);
    end;
    end;

    VXDRV
    Participant

    В общем два дня парюсь – корректный результат с PaintItem для FORMTITLE разных скинов – не получил.

    Одни скины корректно рисуют шапку – другие нет! Подозреваю, что дело в масках или в регионах – уж не знаю. :a1:

    in reply to: Отрисовка TsSlider #54252
    VXDRV
    Participant
    'Support' wrote:

    Здравствуйте. Постараюсь добавить такое скоро.

    А мне, например, не нужно так – можно сделать, чтобы это дело регулировалось?

    VXDRV
    Participant
    'TCount' wrote:

    Удачи))))

    Извиняюсь! Я вспомнил почему прибегнул к PaintItem! Нужно было управлять состоянием заголовка – Активно/Неактивно. Но PaintItem вот как раз заливает текстурой формы без прозрачности (в скине Aluminium). Вариант с прозрачным TsLabel вместо заголовка конечно хорош, но нельзя управлять цветом Активный/Неактивный заголовок (State в параметрах PaintItem).

    VXDRV
    Participant
    'TCount' wrote:

    Вот панель с секцией FORM. Здесь сразу и заголовок, и сама форма.

    Просто система разработчика в том, что секция FORM прорисовывается не ДО заголовка, а на всю форму вместе с заголовком)

    Если заголовок при этом не нужно выделять, то и не нужно дорабатывать секцию FormTitle отдельно.

    Такова политика AC 🙄

    P.S. По сути, можно в секции FORM нарисовать заголовок, FormTitle сделать прозрачным и Вы не увидите, что заголовка нет) Но это не совет, это просто размышления.

    Вот спасибо! Вопрос почти решён! 🙄 😆

    Как тему закрыть?

    VXDRV
    Participant
    'TCount' wrote:

    Да, бликов чего-то не видать)) Только рамку и цвет видно)

    Посмотрел скины эти в редакторе…Дело в том, что в секции FormTitle этих скинов нет намеков на рамки, которые блики и выводят)

    Поставьте панели секцию FORM вместо FORMTITLE.

    P.S. Как бы секция FORM заменяет FORMTITLE, потому как сама секция FORM несет в себе и заголовок (правда, не во всех скинах).

    FORM – это Form без заголовка – мне ещё нужен заголовок. FORM – я и так использую под заголовком.

    Вообще задача состоит в эмуляции формы по внешнему виду из TFrame без кнопок и иконок в заголовке.

    Добавлено:

    'TCount' wrote:

    P.S. Как бы секция FORM заменяет FORMTITLE, потому как сама секция FORM несет в себе и заголовок (правда, не во всех скинах).

    Хорошо! А как тогда узнать об этом и соответствующим образом отреагировать? SkinIndex – из менеджера для FORMTITLE возвращается для любого скина!

    VXDRV
    Participant
    'TCount' wrote:

    Я вот смотрю на скины…Так ведь правильно) Обратите внимание на заголовки скинов на скринах) их же по сути и нет)

    На первом скрине заголовок однотонный, на втором прозрачный.

    Ну как нет – а блик? А регион? Доберусь до работы сделаю скрины своего приложения! Как это выглядит на одних скинах и как выглядит пустое место (как будто SkinSection:='CHECKBOX') на других скинах!

    Добавленно:

    На первом скрине всё как надо – заголовок рисуется на панели (так и задумывалось). На втором скрине – не рисуется – как будто у панели SkinSection:='CHECKBOX'.

    in reply to: Файловые диалоги… #54153
    VXDRV
    Participant

    Авторов проекта тоже в принципе понять можно – за всем не уследишь и всем не угодишь. Сам уже третий год пилю свой проект – переписал раз 20 один и тот же код (под изменчивые требования и актуальность), в проекте около 160 файлов и ещё не конец. Решил добавить поддержку скинов, плагинов – и небольшие баги, и недоделки в альфе немного удручают.

    Например – нет анимации в TsToolBar… – хотя везде она есть – придётся делать на TsSpeedButton…

    TsSlider – рисунки переключателя отличаются в состоянии включено и выключено – на некоторых скинах выключено – темнее – хотя в программе у меня это однозначные действия (либо то включить, либо это) – придётся делать опять же на TsSpeedButton… В предпоследних версиях смотрел – состояние переключателя на экране не всегда соответствовало надписям на компоненте – проявлялось при медленном таскании мышью ползунка переключателя больших размеров – в новых версиях – не смотрел ещё…

    Был непорядок с анимацией Minimazing:=True и ExtendedBorders:=False… Припоминаю, что в некоторых случаях свёрнутую форму не поднять – как сейчас – ещё не смотрел. Вот… вывалил всё, что накопилось – если, что извиняюсь!

    To TCount – А вопрос по правилам скинирования – да, для меня актуален тоже. Вот ещё и думаю – делать скины в DLL-плагинах или нет…

    in reply to: Файловые диалоги… #54151
    VXDRV
    Participant
    'TCount' wrote:

    Я так и не понял, было исправление или нет…У меня все по-прежнему) Может какое-то свойство мне изменить?

    Тоже смущает стремление AlphaControls заскинить всё, что только можно!

    Например у меня есть некий редактор – в нём я не использую скины. Есть формы для редактирования этим редактором – которые скины используют.

    Ну так вот открытие диалогов в редакторе – обычных TOpenDialog, TSaveDialog – раскрашивает их – хотя мне это не нужно!

    Тем не менее нужно раскрашивать диалоги в заскиненных формах. Опять же MessageBox – раскрашенный, для оперативных сообщений в редакторе – зачем (придётся свой MessageBox делать)? – а не нужно этого. Почему это всё нельзя, как то разделить?

    И ещё – раскрашиваются совершенно сторонние системные диалоги – приобретающие совершенно, непрезентабельный вид (например диалог настроек Web-камеры)! Если отключить, скинирование диалогов то и TsOpenDialog и TsSaveDialog не красятся!

    TOpenDialog, TSaveDialog и т. п. – они стандартны – можно их не скинить? При этом скинируя TsOpenDialog, TsSaveDialog и т. д.?

    Зачем скинируются формы и диалоги сторонних компонентов – даже не наследуемые от класса TForm?

    VXDRV
    Participant

    Да! И на стандартной деме тоже!

    Темы Aero Windows при этом отключены! Если тема задействована – глюк не проявляется.

    Присоединил к сообщению короткое видео в архиве с TsTrackBar.

    VXDRV
    Participant
    'Support' wrote:

    Спасибо за демку. Попробуйте следующий релиз, когда выйдет. Думаю, проблема будет в нем решена.

    Благодарю! 🙂

    VXDRV
    Participant

    Проблема решена!

    Воспользовался событием OnSkinItem в TsSkinProvider – извиняюсь за невнимательность!

    Code:
    procedure TForm1.SkinProviderSkinItem(Item: TComponent;
    var CanBeAdded: Boolean; var SkinSection: string);
    begin
    if Item.ClassName='TForm2' then CanBeAdded:=False;
    end;
    in reply to: Недоступен бесплатный пакет #53907
    VXDRV
    Participant
    'Support' wrote:

    Обновил базу IP, попробуйте снова.

    Спасибо за участие! Не помогло…. Поставщик интернета ALTEL 4G.

    Завтра гляну из дома – инет от Казахтелекома.

    in reply to: Не разворачивается форма #53179
    VXDRV
    Participant

    Application.MainFormOnTaskbar := True; – комментирование этой строки открывает форму, но с неактивным заголовком – хотя форма активна.

    Ваше демо-приложение работает нормально – даже перекомпилированное мной. В чем может быть проблема? Прикрепляю свой пустой тестовый проект.

    Дополнено:

    Хотя и в стандартной деме если ExtendedBorders отключить – то же самое форма разворачивается с неактивным заголовком. А при раскомментировании Application.MainFormOnTaskbar := True; – те же самые проблемы – форма полупрозрачна и “застряла” на половине разворачивания.

    in reply to: Не разворачивается форма #53178
    VXDRV
    Participant
    'Support' wrote:

    Возможно ли посмотреть на тестовое приложение с поисываемой проблемой?

    Хм… При попытке передать на другой комп EXE через интернет (хотел потестить на стороннем компе) – Chrome блокирует как вредоносный файл…

    Прошу прощения – буду разбираться – похоже вирусы какие-то незаметно работают с Delphi… то-то думаю Debug работает через раз. =

    in reply to: Не разворачивается форма #53117
    VXDRV
    Participant

    Delphi 2009, AC 9.20, W7, Aero отключен.

    ExtendedBorders – выключен.

    AnimEffectsMinimizing – помогает – но с перемигиванием как писал Andrew.

    Если свернуть и развернуть форму – получается вот так во вложении. Повторное нажатие кнопки на панели задач – вызывает перемигивание границ “невидимой” формы и всё.

    Думал пофиксят в следующем релизе – дождался – ан нет. Спасибо.

Viewing 20 posts - 21 through 40 (of 40 total)