Перейти к содержанию
Fire Monkey от А до Я

Error

Пользователи
  • Постов

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

  • Посещение

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

    8

Активность репутации

  1. Like
    Error получил реакцию от Kitty в Проектирование интерфейса   
    Нет никакой надобности рисовать самому, для определения попала точка в Path или нет есть метод TCanvas.PtInPath
  2. Like
    Error получил реакцию от zairkz в Проектирование интерфейса   
    Нет никакой надобности рисовать самому, для определения попала точка в Path или нет есть метод TCanvas.PtInPath
  3. Like
    Error получил реакцию от rareMax в Перспективы RAD   
    Все было бы намного лучше, если бы использовалась родная канва платформы, поддерживающая Clipping, как это происходит на Windows и MacOS, но на мобилах используется тормозная TGPUCanvas, которая ко всему прочему еще и без сглаживания рисует.
  4. Like
    Error получил реакцию от zairkz в Перспективы RAD   
    Все было бы намного лучше, если бы использовалась родная канва платформы, поддерживающая Clipping, как это происходит на Windows и MacOS, но на мобилах используется тормозная TGPUCanvas, которая ко всему прочему еще и без сглаживания рисует.
  5. Like
    Error отреагировална krapotkin в Перспективы RAD   
    Всеволод, я совсем не согласен с вашей гипотезой "сами разработчики виноваты"
    Начиная c XE4 всем говорили - волк, волк вот, программируйте на Андроид. А оно не работает.
    XE5, XE6, XE7, XE8 и все равно падает на ровных местах и никакой работодатель не хочет слушать, что я не знаю, почему (( 
    Править исходники Delphi квалификация не позволяет, да и слишком темная магия там ...
    Репутация сложилась, однако. С Сиэтла, наконец, программы перестали просто падать, а репу-то уже трудно поправить.
    Ну вот я сумел практически шантажом и обманом выкатить один проект на делфи в релиз. Но больше пока никто не соглашается выплатить мне 150000 для покупки апгрейда...
  6. Like
    Error получил реакцию от Kitty в Перспективы RAD   
    Грустно конечно, но я полагаю стоит подождать полгода-год, за это время может что-то станет видно, или вообще измениться?
    Вот кстати C++Builder - наняли нового человека, который занимается теперь плюсами, пока только лучше стало - появился бесплатный LLVM компилятор от Embarcadero.
  7. Like
    Error отреагировална Roman Yankovsky в Перспективы RAD   
    Всегда пожалуйста.
    Ну уж извините, я не работаю в эмбаркадере и ничего вам не продаю, поэтому у меня нет никакой мотивации писать тут простыни и уж тем более выкладывать код. Я просто показал пример реально работающего и часто используемого FMX-приложения, которых якобы нет.
    Спасибо за конструктивную и содержательную критику. Если б я заранее знал, что реакция на ответ на отсутствие реальных примеров FMX-приложений будет таким тролльско-идиотским, я бы наверно просто не тратил время.
  8. Like
    Error получил реакцию от Равиль Зарипов (ZuBy) в Перспективы RAD   
    MVP - это MVP, и не означает что он в Emb работает 
  9. Like
    Error отреагировална Brovin Yaroslav в Перспективы RAD   
    Я прокомментирую, но чуть попозже. Обязательно отвечу на все вопросы. 
    На самый главный вопрос на счет форума. Сразу отвечу, форум будет работать в любом случае.
  10. Like
    Error отреагировална Kitty в Перспективы RAD   
    Основатель FMX Евгений Крюков в поисках работы: https://plus.google.com/u/0/105338484741532774705/posts/SnK5twK939Y
    Основатель FireDAC Дмитрий Арефьев тоже больше не работает.
    По Вашему мнению какие все же перспективы RAD при такой кадровой политике?
  11. Like
    Error получил реакцию от Kitty в Включение TAniIdicator   
    Application.ProcessMessages после включения TAniIndicator, может помочь показать его хотябы. Но анимации точно не будет, т.к. главный поток занят созданием кнопок.
  12. Like
    Error отреагировална Rusland в Выход Update для RAD Studio 10 Berlin   
    Update2 вышел 
  13. Like
    Error получил реакцию от Kitty в Спрос на компоненты   
    Планируются все доступные платформы.
  14. Like
    Error получил реакцию от Равиль Зарипов (ZuBy) в Спрос на компоненты   
    Планируются все доступные платформы.
  15. Like
    Error получил реакцию от Kitty в Ошибка работы Code Completion   
    К сожалению на данный момент Code Completion частично сломан, и к сожалению, с каждой версией все хуже
    Как можно попробовать починить:
    Возможно у вас в коде есть синтаксическая ошибка, даже одна ошибка может поломать весь Code Completion. Попробуйте пересобрать проект (Clean + Build). Попробуйте перезапустить IDE. Попробуйте пересоздать весь проект перетащив в него все юниты и формы, возможно на новом проекте Code Completion заработает.
  16. Like
    Error получил реакцию от web_warp в Ошибка работы Code Completion   
    К сожалению на данный момент Code Completion частично сломан, и к сожалению, с каждой версией все хуже
    Как можно попробовать починить:
    Возможно у вас в коде есть синтаксическая ошибка, даже одна ошибка может поломать весь Code Completion. Попробуйте пересобрать проект (Clean + Build). Попробуйте перезапустить IDE. Попробуйте пересоздать весь проект перетащив в него все юниты и формы, возможно на новом проекте Code Completion заработает.
  17. Like
    Error получил реакцию от Rusland в Небольшой обмен опытом. О размере текста, TTextLaout.   
    К сожалению, это сделает функцию более медленной, я был перед выбором или скорость или точность, учитывая уже имеющиеся тормоза FMX я решил выбрать скорость. Но даже так функция работает весьма не плохо.
    Да, в будущем расширю обе функции для этого.
  18. Like
    Error получил реакцию от enatechno в Небольшой обмен опытом. О размере текста, TTextLaout.   
    *** Небольшой обмен опытом ***
    Вижу что вопросы о размере текста довольно частые, поделюсь своими наработками.
    function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF;
    Функция для расчета размера прямоугольника, занимаемого однострочным текстом.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Size - если 0, то Font.Size будет использоваться из Font, иначе из данного параметра Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(9999, 9999); TextLayout.Font.Assign(Font); if not SameValue(0, Size) then begin TextLayout.Font.Size := Size; end; TextLayout.WordWrap := False; TextLayout.Trimming := TTextTrimming.None; TextLayout.HorizontalAlign := TTextAlign.Leading; TextLayout.VerticalAlign := TTextAlign.Leading; finally TextLayout.EndUpdate; end; Result.Width := TextLayout.Width; Result.Height := TextLayout.Height; finally TextLayout.Free; end; end;   function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer;
    Функция возвращающая максимально возможный размер шрифта, для текста вписанного в заданный прямоугольник.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Width, Height - Ширина и высота прямоугольника MaxFontSize - Максимально возможный размер шрифта Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; const cMaxFontSize = 512; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; var Size, Max, Min, MaxIterations: Integer; Current: TSizeF; begin Max := Trunc(MaxFontSize); Min := 0; MaxIterations := 20; repeat Size := (Max + Min) div 2; Current := CalcTextSize(Text, Font, Size); if ((Abs(Width - Current.Width) < 1) and (Width >= Current.Width)) and ((Abs(Height - Current.Height) < 1) and (Height >= Current.Height)) then break else if (Width < Current.Width) or (Height < Current.Height) then Max := Size else Min := Size; Dec(MaxIterations); until MaxIterations = 0; Result := Size; end; ---
    Также данные функции можно найти в этом юните
  19. Like
    Error получил реакцию от Равиль Зарипов (ZuBy) в Небольшой обмен опытом. О размере текста, TTextLaout.   
    К сожалению, это сделает функцию более медленной, я был перед выбором или скорость или точность, учитывая уже имеющиеся тормоза FMX я решил выбрать скорость. Но даже так функция работает весьма не плохо.
    Да, в будущем расширю обе функции для этого.
  20. Like
    Error получил реакцию от Равиль Зарипов (ZuBy) в Небольшой обмен опытом. О размере текста, TTextLaout.   
    *** Небольшой обмен опытом ***
    Вижу что вопросы о размере текста довольно частые, поделюсь своими наработками.
    function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF;
    Функция для расчета размера прямоугольника, занимаемого однострочным текстом.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Size - если 0, то Font.Size будет использоваться из Font, иначе из данного параметра Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(9999, 9999); TextLayout.Font.Assign(Font); if not SameValue(0, Size) then begin TextLayout.Font.Size := Size; end; TextLayout.WordWrap := False; TextLayout.Trimming := TTextTrimming.None; TextLayout.HorizontalAlign := TTextAlign.Leading; TextLayout.VerticalAlign := TTextAlign.Leading; finally TextLayout.EndUpdate; end; Result.Width := TextLayout.Width; Result.Height := TextLayout.Height; finally TextLayout.Free; end; end;   function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer;
    Функция возвращающая максимально возможный размер шрифта, для текста вписанного в заданный прямоугольник.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Width, Height - Ширина и высота прямоугольника MaxFontSize - Максимально возможный размер шрифта Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; const cMaxFontSize = 512; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; var Size, Max, Min, MaxIterations: Integer; Current: TSizeF; begin Max := Trunc(MaxFontSize); Min := 0; MaxIterations := 20; repeat Size := (Max + Min) div 2; Current := CalcTextSize(Text, Font, Size); if ((Abs(Width - Current.Width) < 1) and (Width >= Current.Width)) and ((Abs(Height - Current.Height) < 1) and (Height >= Current.Height)) then break else if (Width < Current.Width) or (Height < Current.Height) then Max := Size else Min := Size; Dec(MaxIterations); until MaxIterations = 0; Result := Size; end; ---
    Также данные функции можно найти в этом юните
  21. Like
    Error получил реакцию от Alex7wrt в Небольшой обмен опытом. О размере текста, TTextLaout.   
    К сожалению, это сделает функцию более медленной, я был перед выбором или скорость или точность, учитывая уже имеющиеся тормоза FMX я решил выбрать скорость. Но даже так функция работает весьма не плохо.
    Да, в будущем расширю обе функции для этого.
  22. Like
    Error получил реакцию от Rusland в Небольшой обмен опытом. О размере текста, TTextLaout.   
    *** Небольшой обмен опытом ***
    Вижу что вопросы о размере текста довольно частые, поделюсь своими наработками.
    function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF;
    Функция для расчета размера прямоугольника, занимаемого однострочным текстом.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Size - если 0, то Font.Size будет использоваться из Font, иначе из данного параметра Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(9999, 9999); TextLayout.Font.Assign(Font); if not SameValue(0, Size) then begin TextLayout.Font.Size := Size; end; TextLayout.WordWrap := False; TextLayout.Trimming := TTextTrimming.None; TextLayout.HorizontalAlign := TTextAlign.Leading; TextLayout.VerticalAlign := TTextAlign.Leading; finally TextLayout.EndUpdate; end; Result.Width := TextLayout.Width; Result.Height := TextLayout.Height; finally TextLayout.Free; end; end;   function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer;
    Функция возвращающая максимально возможный размер шрифта, для текста вписанного в заданный прямоугольник.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Width, Height - Ширина и высота прямоугольника MaxFontSize - Максимально возможный размер шрифта Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; const cMaxFontSize = 512; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; var Size, Max, Min, MaxIterations: Integer; Current: TSizeF; begin Max := Trunc(MaxFontSize); Min := 0; MaxIterations := 20; repeat Size := (Max + Min) div 2; Current := CalcTextSize(Text, Font, Size); if ((Abs(Width - Current.Width) < 1) and (Width >= Current.Width)) and ((Abs(Height - Current.Height) < 1) and (Height >= Current.Height)) then break else if (Width < Current.Width) or (Height < Current.Height) then Max := Size else Min := Size; Dec(MaxIterations); until MaxIterations = 0; Result := Size; end; ---
    Также данные функции можно найти в этом юните
  23. Like
    Error получил реакцию от Alex7wrt в Небольшой обмен опытом. О размере текста, TTextLaout.   
    *** Небольшой обмен опытом ***
    Вижу что вопросы о размере текста довольно частые, поделюсь своими наработками.
    function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF;
    Функция для расчета размера прямоугольника, занимаемого однострочным текстом.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Size - если 0, то Font.Size будет использоваться из Font, иначе из данного параметра Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(9999, 9999); TextLayout.Font.Assign(Font); if not SameValue(0, Size) then begin TextLayout.Font.Size := Size; end; TextLayout.WordWrap := False; TextLayout.Trimming := TTextTrimming.None; TextLayout.HorizontalAlign := TTextAlign.Leading; TextLayout.VerticalAlign := TTextAlign.Leading; finally TextLayout.EndUpdate; end; Result.Width := TextLayout.Width; Result.Height := TextLayout.Height; finally TextLayout.Free; end; end;   function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer;
    Функция возвращающая максимально возможный размер шрифта, для текста вписанного в заданный прямоугольник.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Width, Height - Ширина и высота прямоугольника MaxFontSize - Максимально возможный размер шрифта Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; const cMaxFontSize = 512; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; var Size, Max, Min, MaxIterations: Integer; Current: TSizeF; begin Max := Trunc(MaxFontSize); Min := 0; MaxIterations := 20; repeat Size := (Max + Min) div 2; Current := CalcTextSize(Text, Font, Size); if ((Abs(Width - Current.Width) < 1) and (Width >= Current.Width)) and ((Abs(Height - Current.Height) < 1) and (Height >= Current.Height)) then break else if (Width < Current.Width) or (Height < Current.Height) then Max := Size else Min := Size; Dec(MaxIterations); until MaxIterations = 0; Result := Size; end; ---
    Также данные функции можно найти в этом юните
  24. Like
    Error получил реакцию от #WAMACO в Когда много таймеров   
    Это некий вспомогательный класс, к примеру TEventManager, который хранит список событий в формате <СсылкаНаОбработчик, НеобходимаяЗадержкаПередВызовом>,
    Внутри класса молотит 1 таймер, обработчик которого проходит по списку и смотрит какие события необходимо вызвать и удалить из списка, или не удалять если нужна периодичность, а просто перенести НеобходимаяЗадержкаПередВызовом вперед.
    Когда нам надо создать событие мы делаем что-то типо EventManager.Add(OnAnoterTimer, 100);
  25. Like
    Error получил реакцию от Steepe_Hare в Когда много таймеров   
    Добавлю что менеджер событий - это единственное верное решение, в противном случае (куча таймеров) приложение станет настолько не детерминированным, что глюки будут лезть отовсюду, а нормальная отладка просто невозможна.
×
×
  • Создать...