dnekrasov

Пользователи
  • Публикаций

    173
  • Зарегистрирован

  • Посещение

  • Победитель дней

    15

Весь контент dnekrasov

  1. Лет 15 назад меня заставили написать один сборный контрол (как я ни старался убедить что фрейм лучше - не прокатило) - до сих пор - как вспомню, так вздрогну Чё тут думать - ТРЯСТИ НАДО :)
  2. Не легче ли использовать фреймы?
  3. Вот только все они наследованы не от TStyledControl. Очень редко можно встретить в стиле что-то заранее стилизованное. Не подходит StyleData - кто Вам мешает работать с FindStyleResource Сделать можно все что угодно - вот только насколько оно будет обосновано и стоит ли оно затраченного времени - решать Вам
  4. О как! Вы решили создать стиль для всего ОКНА! Стили для этого не предназначены. Ну так Вы же сами себе и ответили. Отсюда следует, что механизм работы со стилями просто для этого не подходит.
  5. Чёт я вообще ничего не понял... Что такое "скрол" и куда он "бросается". Что означает "намертво съедает чаилдов". StylesData чего и куда не может добраться? На каком этапе Вы выполняете указанный вами код? Из чего состоит "MessageBoxStyle". Что означает "ну не загрузился еще стиль" - вы не подгрузили его в проекте или предполагаете, то он еще не применился к контролу?
  6. По-моему вообще некорректно. Внешне-то будет выглядеть как надо, а вот логики работы не будет вообще. Ведь стиль - это только описание того, как контрол должен выглядеть, а не как работать. Кстати, копию стиля легче получить так MainControl := FindStyleResource('ScreenFogStyle', True);
  7. Механизм, который позволяет использовать иконку символьного шрифта вместо картинки на кнопках. Уж очень мне не нравится стандартный механизм добавления картинки на кнопку, поэтому, пару лет назад, начал искать альтернативу и остановился на символьных шрифтах (таких как FontAwesome). Вот что из этого получилось: IconicFontGlyph.zip Под Windows работает без проблем - на других системах не пробовал. Как это работает Добавляем в проект модуль UIExt.IconicFont.pas Добавляем в проект модули описания шрифтов, которые будут использоваться (см. ниже) Описываем символ, который будет использоваться в качестве иконки (см. ниже) В обработчике события OnApplyStyleLookup кнопки пишем одну строчку - TIconicFont.ApplyButtonStyle(TCustomButton(Sender)); Модули описания шрифтов UIExt.IconicFont.FA.pas - Font Awesome UIExt.IconicFont.IM.pas - IcoMoon UIExt.IconicFont.IML.pas - IcoMoon Lindua UIExt.IconicFont.IMLN.pas - IcoMoon Linear UIExt.IconicFont.MDI.pas - Material Design Icons UIExt.IconicFont.WHHG.pas - WebHostingHub Glyphs Описание символа Для описания символа используется свойство StyleName (не знаю как остальные - лично я его нигде не использую). Само описание - это строка в определённом формате: [Короткое имя шрифта];[код символа];[размер шрифта];[цвет] 2 первых поля - обязательны. Короткое имя шрифта можно увидеть в его модуле описания (TIconicFont.Short) Примеры можно увидеть на скриншотах выше (текст над кнопками). Ну и напоследок - небольшая демка IconicFontDemo.zip
  8. Из этого следует вывод, что шрифты надо регистрировать до применения стиля (если через TStyleManager) или до создания формы (если StyleBook). В общем лучше делать сразу после Application.Initialize - думаю это правильнее всего.
  9. Единственное моё предположение из-за чего это может быть - это момент регистрации шрифтов. Т.к. у меня это воспроизвести не получается - то у меня большая просьба к @wamaco отредактируйте, плз, файл проекта и попробуйте запустить ... begin TIconicFont.FontsReg; try Application.Initialize; TStyleManager.TrySetStyleFromResource('STYLE_Dark'); Application.CreateForm(TMainForm, MainForm); Application.Run; finally TIconicFont.FontsUnreg; end; end. Ну и если запустится нормально, то еще 2 варианта (чтоб точно знать когда надо регистрировать шрифты) 1: ... begin Application.Initialize; TIconicFont.FontsReg; try TStyleManager.TrySetStyleFromResource('STYLE_Dark'); Application.CreateForm(TMainForm, MainForm); Application.Run; finally TIconicFont.FontsUnreg; end; end. 2: ... begin Application.Initialize; TStyleManager.TrySetStyleFromResource('STYLE_Dark'); TIconicFont.FontsReg; try Application.CreateForm(TMainForm, MainForm); Application.Run; finally TIconicFont.FontsUnreg; end; end.
  10. Вертикальное смещение юникодных шрифтов

    Ну почему же: var F: TFont; PD: TPathData; begin F := TFont.Create; try F.Family := 'Kozuka Gothic Pr6N B'; F.Size := 60; with TBitmap.Create do try Canvas.Font.Assign(F); PD := TPathData.Create; try if Canvas.TextToPath(PD, RectF(0, 0, 10000, F.Size), '字字字 AsD АыЩ', False, TTextAlign.Leading, TTextAlign.Leading) then begin PathLabel.Width := PD.GetBounds.Width; PathLabel.Data := PD; end; finally PD.Free; end; finally Free; end finally F.Free; end; end;
  11. Ручками в поле "Resource identifier" Если Вы вставляли - то Вы и заполняли
  12. Вертикальное смещение юникодных шрифтов

    Чё-то я изначально затормозил... Если Вам просто надо отобразить иероглиф - то можно ведь сделать всё намного проще - через TPathLabel (она должна сама обрезать все отступы) var F: TFont; FG: TFontGlyph; bmp: TBitmap; begin F := TFont.Create; try F.Family := 'Kozuka Gothic Pr6N B'; F.Size := 60; FG := TFontGlyphManager.Current.GetGlyph(Char.ConvertToUtf32('字', 0), F, 1, [TFontGlyphSetting.Path]); try PathLabel.Width := FG.Path.GetBounds.Width; PathLabel.Height := F.Size; PathLabel.Data := FG.Path; // ну и если всё-таки bitmap-ка нужна bmp := PathLabel.MakeScreenshot; try // что-то делаем с битмапкой finally bmp.Free; end; finally FG.Free; end; finally F.Free; end; end;
  13. Теперь понял Не через Deploymet, а через пункт меню Project->Resources and Images
  14. Судя по коду - у Вас стиль в базе хранится (хотя тоже под вопросом - что такое dm, dm.UniConnection1, AppStyleParamName и что делает dm.GetOption2Param). Если так - то как они туда попадают? Так что не зная логики проекта или не видя исходники - трудно сказать. А само применение стиля - это последняя строчка - TStyleManager.SetStyle(aStyle)
  15. Куда подевался сохраненный стиль?

    Хм... Странно... Ведь стиль с названием "Windows 10 Desktop" создаётся автоматически именно в момент создания view "Windows Desktop"
  16. А это уже на Ваше усмотрение. Есть 2 возможности применения стилей - через StyleBook на главной форме и пользуясь методами TStyleManager, загружая стили из ресурсов. Судя по всему у Вас используется второй метод. Просто поищите по всем файлам проекта (Ctrl+Shift+F) строку "TStyleManager." - я думаю Вы найдёте где применяется стиль.
  17. Куда подевался сохраненный стиль?

    А вы удалите "Windows 10 Desktop". И что у Вас в дизайнере форм? Я подозреваю, что создана view-шка "Windows Desktop" и она сильно отличается от "Master". Это тоже может создавать проблемы (я думаю что в этом всё и дело).
  18. Вертикальное смещение юникодных шрифтов

    Про это можно почитать здесь Как я понял: Metrics.tmAscent = unitsPerEm / Font.Size * uWinAscend
  19. Вертикальное смещение юникодных шрифтов

    Говорит, что слышала - однокурсники нахваливают, а преподаватели советуют. Посмотрите раздел "Baseline to Baseline Distances". Метрики шрифта я вытягивал с помощью редактора FontForge - как это сделать программно - не знаю, надо досконально разбираться в формате.
  20. Вертикальное смещение юникодных шрифтов

    @Вадим Смоленский, а можно как-то увидеть Ваш проект - а то дочка японский учит - сказала, что хороший словарик всегда пригодится
  21. Вертикальное смещение юникодных шрифтов

    Во как! Значит GetTextMetrics неправильно рассчитывает tmExternalLeading и tmInternalLeading. Сам расчет описан здесь.
  22. Вертикальное смещение юникодных шрифтов

    @Вадим Смоленский, попробуйте для шрифта Yu Gothic рассчитывать смещение как Font.Size * 0.408576 а для Kozuka Gothic Pr6N B - Font.Size * 1.0033 (мне просто интересно - правильно ли я рассчитал коэффиценты)
  23. Вертикальное смещение юникодных шрифтов

    Вообще, судя по спецификации, смещение надо вычислять так Metrics.tmAscent + Metrics.tmDescent + Metrics.tmExternalLeading - F.Size
  24. Вертикальное смещение юникодных шрифтов

    А ещё загляните сюда - здесь много того, что не помешает знать при работе со шрифтами.