-
Постов
317 -
Зарегистрирован
-
Посещение
-
Победитель дней
52
Сообщения, опубликованные dnekrasov
-
-
Вместо TTask.Run можно использовать TThread.CreateAnonymousThread в связке с TThread.OnTerminate
-
-
3 минуты назад, Вадим Смоленский сказал:
Я и рад бы это опробовать но не понял, куда именно нужно вставлять такое смещение в случае FillText
Ну как же? В первом параметре идет прямоугольник в который выводится текст. Ему и сделать Offset(-PD.GetBounds.Left, -PD.GetBounds.Top)
7 минут назад, Вадим Смоленский сказал:Хорошо бы еще научиться выравнивать его, чтобы он не лепился к этим краям, а вставал бы в середину указанного прямоугольника. Не приходит пока в голову, как это сделать
Всё просто:
PD.Translate(-PD.GetBounds.Left + DestRect.Left + (DestRect.Width - PD.GetBounds.Width) / 2, -PD.GetBounds.Top + DestRect.Top + (DestRect.Height - PD.GetBounds.Height) / 2)
-
А еще можно попробовать FillText со смещением -PD.GetBounds.Left, -PD.GetBounds.Top
-
36 минут назад, Вадим Смоленский сказал:
Увы, результат ровно тот же, с нежелательными вертикальными смещениями.
Перед FillPath попробуйте вставить
PD.Translate(-PD.GetBounds.Left, -PD.GetBounds.Top);
-
В ObjectInspector выбираете св-во MultiResBitmap ну и дальше по документации
-
4 часа назад, Letter сказал:
И еще подскажите,как подписываться на созданную тему?
Справа вверху страницы есть кнопка
-
3 часа назад, Letter сказал:
Хотел изменить png в стиле .fsf, а как вытащить картинку и обратно вставить?
Если 2 раза на stylebook нажать попадаю в style designer там файл .fsf открывается ,а как картинку вытащить и вставить?
В StyleDesigner-е находим стиль, объект которого типа TImage и называется, обычно, "[имя файла стиля без расширения]style.png" , и работаем с ним как с обычным TImage. Вот пример из стандартного стиля iOSBlack.fsf
-
-
1 минуту назад, x11 сказал:
Это баг, получается?
Похоже на то.
2 минуты назад, x11 сказал:Где-то в справке написано, что под виндой нельзя передавать массив, где больше одного элемента?
Нет, это видно из исходников, и не больше одного элемента а размерности параметров APrompts и AValues должны совпадать. От размерности APrompts зависит количество полей ввода в диалоге.
-
Хоть в хелпе и написано
ЦитатаThe length of AValues must be greater than or equal to the length of APrompts
под виндой размерности массивов должны совпадать. Посмотрите FMX.DialogHelper.TDialogBuilder.InputQuery
-
-
Лет 15 назад меня заставили написать один сборный контрол (как я ни старался убедить что фрейм лучше - не прокатило) - до сих пор - как вспомню, так вздрогну
16 минут назад, Slym сказал:но хз, надо еще подумать
Чё тут думать - ТРЯСТИ НАДО :)
-
37 минут назад, Slym сказал:
некий "сборный" контрол
Не легче ли использовать фреймы?
-
9 минут назад, Slym сказал:
Вы посмотрите как TEdit сделан и прочие контролы... аналогично - куча TLayout-ов и прочей ГУИстики...
Вот только все они наследованы не от TStyledControl. Очень редко можно встретить в стиле что-то заранее стилизованное.
30 минут назад, Slym сказал:так что "не подходит" - не засчитано
Не подходит StyleData - кто Вам мешает работать с FindStyleResource
32 минуты назад, Slym сказал:ScrollBox не подходит для работы в стиле...
Сделать можно все что угодно - вот только насколько оно будет обосновано и стоит ли оно затраченного времени - решать Вам
-
О как! Вы решили создать стиль для всего ОКНА! Стили для этого не предназначены.
18 минут назад, Slym сказал:в дереве стиля не увидите text, и StylesData['text.text']:='Hello world!'; - ничего не отобразит... т.к. ScrollBox - "фиктивный" контейнер, реальный контейнер ScrollBox.ContentLayout
Ну так Вы же сами себе и ответили. Отсюда следует, что механизм работы со стилями просто для этого не подходит.
-
1 час назад, Slym сказал:
для примера возьмем MessageBox
Чёт я вообще ничего не понял... Что такое "скрол" и куда он "бросается". Что означает "намертво съедает чаилдов". StylesData чего и куда не может добраться? На каком этапе Вы выполняете указанный вами код? Из чего состоит "MessageBoxStyle". Что означает "ну не загрузился еще стиль" - вы не подгрузили его в проекте или предполагаете, то он еще не применился к контролу?
-
По-моему вообще некорректно. Внешне-то будет выглядеть как надо, а вот логики работы не будет вообще. Ведь стиль - это только описание того, как контрол должен выглядеть, а не как работать.
Кстати, копию стиля легче получить так
MainControl := FindStyleResource('ScreenFogStyle', True);
-
39 минут назад, wamaco сказал:
Первый и второй вариант работает!
Последний - НЕТ!
Из этого следует вывод, что шрифты надо регистрировать до применения стиля (если через TStyleManager) или до создания формы (если StyleBook).
В общем лучше делать сразу после Application.Initialize - думаю это правильнее всего.
-
В 12.01.2018 в 16:56, wamaco сказал:
Интересный эффект, если запустить демку один раз, то "квадраты", если не закрывая, запустить еще раз (второй экземпляр), то иконки показывает!
Единственное моё предположение из-за чего это может быть - это момент регистрации шрифтов.
Т.к. у меня это воспроизвести не получается - то у меня большая просьба к @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.
-
1 час назад, Вадим Смоленский сказал:
Там это едва ли подойдет
Ну почему же:
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;
-
28 минут назад, x11 сказал:
а Вы пробовали?
вот скрин из моего проекта
-
15 минут назад, x11 сказал:
А кто заполняет колонку Identifier так правильно?
Ручками в поле "Resource identifier"
16 часов назад, x11 сказал:Но как я их вставил в проект не могу понять.
Если Вы вставляли - то Вы и заполняли
-
В 12.01.2018 в 14:47, Вадим Смоленский сказал:
В своем проекте (это японско-русский словарь) мне приходится выводить на TImage.Bitmap.Canvas хранящиеся в юникоде иероглифы
Чё-то я изначально затормозил... Если Вам просто надо отобразить иероглиф - то можно ведь сделать всё намного проще - через 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;
Обрезается размер у Form
в Изменение
Опубликовано
Если Вам не нужно масштабирование - просто в свойствах проекта снимите птичку "Enable High-DPI"