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

AngryOwl

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

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

  • Посещение

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

    45

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

  1. Like
    AngryOwl получил реакцию от zonik в Как записать видео на Андроиде?   
    Вообще, конечно, собрать видео из отдельных кадров можно. Вполне реально. Но не для всего)
    И это все "свистоперделки"...
    Что касается частоты кадров - реально получать 10-15. Еще и от устройства зависит, от камеры и т.д. Но все эти тормоза из-за класса "обертки" работы с видео. Именно он выдает так мало кадров. Сама камера работает. FMX работает тоже ничего, но основные тормоза из-за того что в TCameraComponent уже "приходит" мало кадров.
    На самом деле, как я считаю, разработка для мобильных платформ должна в первую очередь решать именно мультимедийные функции (я бы сказал, что это ОЧЕНЬ важно). А мы имеем пока-что их жалкое подобие, которое нужно допиливать ручками...
    Я уже не говорю о том, что почему-то если в той же iOS что-то "запрещено", то это же касается и Android, хотя в ней все намного проще и она более "открыта". Глупо как-то, уж простите за откровенность...
  2. Like
    AngryOwl отреагировална Alex7wrt в Как записать видео на Андроиде?   
    Да чего там )) Все точно подмечено. Напишу немного не в тему, тоже извините... Я вот удивляюсь, почему относительно несложные приложения на андроиде после установки на устройство занимают около 30 МБ, когда нативные могут и меньше мегабайта весить. Неоспоримый плюс FMX - возможность практически одним кодом писать для нескольких платформ, из-за чего страдает качество в каждом из них. Здесь однозначно есть к чему стремиться.
  3. Like
    AngryOwl получил реакцию от zairkz в Как записать видео на Андроиде?   
    Вообще, конечно, собрать видео из отдельных кадров можно. Вполне реально. Но не для всего)
    И это все "свистоперделки"...
    Что касается частоты кадров - реально получать 10-15. Еще и от устройства зависит, от камеры и т.д. Но все эти тормоза из-за класса "обертки" работы с видео. Именно он выдает так мало кадров. Сама камера работает. FMX работает тоже ничего, но основные тормоза из-за того что в TCameraComponent уже "приходит" мало кадров.
    На самом деле, как я считаю, разработка для мобильных платформ должна в первую очередь решать именно мультимедийные функции (я бы сказал, что это ОЧЕНЬ важно). А мы имеем пока-что их жалкое подобие, которое нужно допиливать ручками...
    Я уже не говорю о том, что почему-то если в той же iOS что-то "запрещено", то это же касается и Android, хотя в ней все намного проще и она более "открыта". Глупо как-то, уж простите за откровенность...
  4. Like
    AngryOwl отреагировална megajack991 в Как записать видео на Андроиде?   
    Уууу, как печально.. И неожиданно- как так, мобильная мультиплатформа и без видео.. Это же нереально- собирать видео из отдельных кадров..
  5. Like
    AngryOwl отреагировална Равиль Зарипов (ZuBy) в RAD XE9 (RAD X Seattle)   
    Минусы
    1. Баг с использованием старых стилей, ждём новые Premium Styles (спасает стандартные стили которые генерирует BitmapStyleDesigner)
    2. TMultiView -> Drawer не перекрывает TMapView
    3. Работа со стилями в рантайме через TStyleManager изменили
    4. В старых проектах нужно удалять все uses'ы и дать среде самой сгенерировать uses'ы
     
    Плюсы
    1. Исправили TLocationSensor
    2. TMapView новые фичи
    3. Среда шустрей запускается
     
    Пока все что заметил
  6. Like
    AngryOwl получил реакцию от Freezer_86 в Как нарисовать круглый TImage   
    var   BmpNew     : TBitmap; begin     BmpNew := TBitmap.Create;     BmpNew.SetSize({нужный размер}, {нужный размер});     BmpNew.Canvas.BeginScene;     try       BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap;       BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;       BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап};       BmpNew.Canvas.Clear(0);       BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1);     finally       BmpNew.Canvas.EndScene;     end;     TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
  7. Like
    AngryOwl отреагировална Alex Bozhko в Самый простой способ работы с SQLite   
    Ну, FDGUIxWaitCursor1, FDPhysSQLiteDriverLink1 - один раз повесили рядом с FDConnection, настроили и забыли - не особая и проблема (за универсальность чем-то платить всегда приходится).

    Query? Ну, используйте FDTable. Если ничего из ряда вон выходящего не нужно - будет прекрасно работать.
     
    LiveBinding (BindSourceDB1 и т. д.) - тут все сложнее... Эта технология предназначена для замены TDataSource. Суть в чем? B VCL мы используем TDataSource, но при этом все контролы, работающие с источником данных, - специальные. DBGrid, DBComboBox и т.д. В обычный ComboBox, иначе как руками данные из источника не запихать.
    Здесь же с помощью LiveBinding практически любой контрол можно связать с источником данных. Делается это в визуальном редакторе, а потом дотачивается руками. И не важно, какой набор компонентов доступа к данным вы используете (хоть FireDAC, хоть UniDAC. хоть Fib'ы). Если вы хотите "как VCL", то проблема не в FireDAC, проблема в отсутствии специальных контролов, для работы с данными. Единственная альтернатива LiveBinding сегодня - вытаскивать данные и "заполнять" контролы вручную (кстати, я так и делаю). Это не будет проще, но определенные преимущества есть.
  8. Like
    AngryOwl отреагировална Denis Vasilyev в Серия статей, как настроить Android, OS X, iOS Simulator, iOS с RAD Studio (Delphi, C++ Builder)   
    Серия статей с пошаговой инструкцией, как подключить и настроить Android, OS X, iOS Simulator, iOS для работы с RAD Studio.
     
    Как настроить Android и RAD Studio XE7 (Delphi, C++ Builder)
    http://habrahabr.ru/company/delphi/blog/253929/

     
    Как настроить Mac OS X, iOS-симулятор и RAD Studio XE8 (Delphi, C++ Builder)
    http://habrahabr.ru/company/delphi/blog/255721/

     
    Как настроить iOS-устройство и RAD Studio XE8 (Delphi, C++ Builder)
    http://habrahabr.ru/company/delphi/blog/265313/

  9. Like
    AngryOwl получил реакцию от sulion в Как программно отмасштабировать TImage   
    Если попроще, то я бы сделал так:
    - один TListBox (с выравниванием либо Bottom, либо Client)
    - с нужным количеством TListBixItem, соответственно кол-ву "фигур"
    - у TListBox Columns = кол-ву TListBixItem, либо ListStyle = Horizontal
    - ну и соответственно все настройки по высоте и т.п.
    - TListBox.StyleLookup = 'transparentlistboxstyle'
    - поместил бы в каждый TListBixItem по картинке (TImage) с выравниванием Bottom
    и менял бы высоту этих картинок.......
     
    З.Ы. Если Вам не нужно что-то более "красивое"
     
    З.З.Ы. А можно сделать свой дополнительный стиль для TListBixItem, взяв за основу стандартный стиль и изменив в нем объект 'icon'. Тогда не нужен будет TImage для каждого TListBixItem, и можно будет управлять им через StylesData['icon.....']...
  10. Like
    AngryOwl отреагировална Brovin Yaroslav в "Лишние" Items в отладчике?   
    Чтобы каждый раз при добавлении элемента не запрашивать память на 1 элемент, список растет на несколько элементов вперед. За это отвечает свойство Capacity. Таким образом скорость добавления элементов возрастает.
    Да, но не смотря на это, пользователь работает только в границах от [0, Count -1]
  11. Like
    AngryOwl отреагировална rareMax в "Лишние" Items в отладчике?   
    Частенько замечаю что в отладчике, для списков создаются лишние поля. На скрине видно что полей в списке 2, но отладчик добавил еще 2 лишних поля(3 и 4 с пустыми значениями). Это вообще норма или баг? с чем это связано? 

  12. Like
    AngryOwl отреагировална Alex Bozhko в Страница, посвященная книгам на офф сайте   
    Подборка книг "из первых рук".
     
    http://community.embarcadero.com/resources/books
  13. Like
    AngryOwl получил реакцию от sulion в Как нарисовать круглый TImage   
    var   BmpNew     : TBitmap; begin     BmpNew := TBitmap.Create;     BmpNew.SetSize({нужный размер}, {нужный размер});     BmpNew.Canvas.BeginScene;     try       BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap;       BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;       BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап};       BmpNew.Canvas.Clear(0);       BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1);     finally       BmpNew.Canvas.EndScene;     end;     TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
  14. Like
    AngryOwl получил реакцию от Kitty в Как заставить обычную форму отображаться как Popup?   
    Можно сделать так:
    procedure TfmForma.FormCreate(Sender: TObject); begin   inherited;   Left := Screen.Size.Width - ClientWidth;   Top  := Screen.Size.Height - ClientHeight; {ну или где там она должна появляться} end;
  15. Like
    AngryOwl отреагировална Vitaldj в [TfgRichEdit]- компонент редактирования текста с поддержкой форматирования   
    Ярослав, а все таки когда будет доступен компонент простым пользователям? Очень нужен! )
  16. Like
    AngryOwl получил реакцию от enatechno в Как нарисовать круглый TImage   
    var   BmpNew     : TBitmap; begin     BmpNew := TBitmap.Create;     BmpNew.SetSize({нужный размер}, {нужный размер});     BmpNew.Canvas.BeginScene;     try       BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap;       BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;       BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап};       BmpNew.Canvas.Clear(0);       BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1);     finally       BmpNew.Canvas.EndScene;     end;     TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
  17. Like
    AngryOwl отреагировална Brovin Yaroslav в [TfgRichEdit]- компонент редактирования текста с поддержкой форматирования   
    Новые вести с полей.
    Проверена работа на Андроиде. Рендеринг прошел нормально.  Добавлена возможность указывать межстрочный интервал для параграфов. Значительно переработаны настройки. Теперь можно задавать настройки для всех элементов в целом, для всех параграфов, так и локально для одного параграфа.
  18. Like
    AngryOwl получил реакцию от Brovin Yaroslav в Как нарисовать круглый TImage   
    var   BmpNew     : TBitmap; begin     BmpNew := TBitmap.Create;     BmpNew.SetSize({нужный размер}, {нужный размер});     BmpNew.Canvas.BeginScene;     try       BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap;       BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;       BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап};       BmpNew.Canvas.Clear(0);       BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1);     finally       BmpNew.Canvas.EndScene;     end;     TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
  19. Like
    AngryOwl получил реакцию от BenTen в Как нарисовать круглый TImage   
    var   BmpNew     : TBitmap; begin     BmpNew := TBitmap.Create;     BmpNew.SetSize({нужный размер}, {нужный размер});     BmpNew.Canvas.BeginScene;     try       BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap;       BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch;       BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап};       BmpNew.Canvas.Clear(0);       BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1);     finally       BmpNew.Canvas.EndScene;     end;     TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
  20. Like
    AngryOwl получил реакцию от Kitty в Доступ к объекту стиля через StylesData в одном из примеров для XE8   
    Вот уже в который раз обсуждается подобный вопрос...
    Я бы даже сказал - тот же самый!
    Почти каждый раз пишу одно и то же, но все упорно наступают на те же самые грабли. При этом пытаясь меня убедить в том, что делать то я что я пишу - необязательно, и при этом жалуются что у них с их вариантами - не получается достичь нужного результата.
    Отройте ссылку и в фрагменте кода найдите КЛЮЧЕВУЮ! строку:
    newItem.OnApplyStyleLookup := MissMessageApplyStyle; Смысл - переопределите событие OnApplyStyleLookup для создаваемых итемов, а внутри MissMessageApplyStyle (назовите как угодно..) - перерисовывайте содержимое. Т.е. - буквально, обновляйте содержимое "ручками".
    Тогда у Вас будет все работать как надо, картинки пропадать не будут, и т.д. и т.п.
     
    З.Ы. И да, еще. Если ваш итем ну очень сложный какой-то, например, с необходимостью отрисовки срок разными цветами или что-то еще сложнее - можете переопределить OnRepaint...
     
    З.З.Ы. В той же теме можете увидеть, насколько сложные итемы я создавал и что у них внутри есть, и все работает как надо...
  21. Like
    AngryOwl получил реакцию от FIL в Доступ к объекту стиля через StylesData в одном из примеров для XE8   
    Вот уже в который раз обсуждается подобный вопрос...
    Я бы даже сказал - тот же самый!
    Почти каждый раз пишу одно и то же, но все упорно наступают на те же самые грабли. При этом пытаясь меня убедить в том, что делать то я что я пишу - необязательно, и при этом жалуются что у них с их вариантами - не получается достичь нужного результата.
    Отройте ссылку и в фрагменте кода найдите КЛЮЧЕВУЮ! строку:
    newItem.OnApplyStyleLookup := MissMessageApplyStyle; Смысл - переопределите событие OnApplyStyleLookup для создаваемых итемов, а внутри MissMessageApplyStyle (назовите как угодно..) - перерисовывайте содержимое. Т.е. - буквально, обновляйте содержимое "ручками".
    Тогда у Вас будет все работать как надо, картинки пропадать не будут, и т.д. и т.п.
     
    З.Ы. И да, еще. Если ваш итем ну очень сложный какой-то, например, с необходимостью отрисовки срок разными цветами или что-то еще сложнее - можете переопределить OnRepaint...
     
    З.З.Ы. В той же теме можете увидеть, насколько сложные итемы я создавал и что у них внутри есть, и все работает как надо...
  22. Like
    AngryOwl получил реакцию от Alex7wrt в Недостающий вариант Image WrapMode   
    Особо править нет времени, разберетесь. Все просто - это компонент, унаследованный от стандартного TImage, с теми свойствами, которые Вам нужны.
    unit Sphere.ImageEx; interface uses   System.Classes, System.Types, FMX.Types, FMX.Objects, FMX.Graphics;   type     TBitmapFit = (bfDefault, bfWidth, bfHeight, bfBoth);     TImageEx = class(TImage)     private       FBitmapDisplayRect: TRectF;       procedure SetBitmapFit(const Value: TBitmapFit);     protected       FBitmapFit: TBitmapFit;       procedure Paint; override;     public       constructor Create(AOwner: TComponent); override;       function ImagePointToBitmap(const APoint: TPointF): TPointF;       property BitmapDisplayRect: TRectF read FBitmapDisplayRect;     published       property BitmapFit: TBitmapFit read FBitmapFit write SetBitmapFit;     end; implementation { TImageEx } constructor TImageEx.Create(AOwner: TComponent); begin   inherited;   FBitmapFit := bfDefault;   FBitmapDisplayRect := TRectF.Empty; end; function TImageEx.ImagePointToBitmap(const APoint: TPointF): TPointF; begin   Result := APoint;   if not (BitmapDisplayRect.IsEmpty) and Assigned(Bitmap) then   begin     Result.X := Result.X - Trunc(BitmapDisplayRect.Left);     if Bitmap.Width > BitmapDisplayRect.Width then       Result.X := Result.X / (BitmapDisplayRect.Width / Bitmap.Width );     Result.Y := Result.Y - Trunc(BitmapDisplayRect.Top);     if Bitmap.Height > BitmapDisplayRect.Height then       Result.Y := Result.Y / (BitmapDisplayRect.Height / Bitmap.Height );   end; end; procedure TImageEx.Paint; begin {весь код - в прикрепленном файлике}   // всегда центрируем для этих методов отрисовки   else if FBitmapFit <> bfDefault then   begin     // растягиваем по ширине с обрезкой верхнего/нижнего краев     Canvas.BeginScene();     try       Coef := B.Width / B.Height;       R := RectF(0, 0, B.Width, B.Height);       if FBitmapFit = bfWidth then         R := RectF(0, 0, Width, Width / Coef)         else         if FBitmapFit = bfHeight then           R := RectF(0, 0, Height * Coef, Height)           else           if FBitmapFit = bfBoth then           begin             if Coef >= 1 then               R := RectF(0, 0, Height * Coef, Height)               else               R := RectF(0, 0, Width, Width / Coef);           end;       RectCenter(R, LocalRect);       Canvas.DrawBitmap(B, RectF(0, 0, B.Width, B.Height), R, AbsoluteOpacity, DisableInterpolation);       FBitmapDisplayRect := R;     finally       Canvas.EndScene();     end;   end; end; procedure TImageEx.SetBitmapFit(const Value: TBitmapFit); begin   if FBitmapFit <> Value then   begin     FBitmapFit := Value;     Paint();   end; end; //initialization //  RegisterFMXClasses([TImageEx]); end. Sphere.ImageEx.zip
  23. Like
    AngryOwl отреагировална Brovin Yaroslav в [TfgRichEdit]- компонент редактирования текста с поддержкой форматирования   
    Работа продолжается.
    Добавлена поддержка расскраски Delphi кода. Создана система, позволяющая самостоятельно обрабатывать блоки документа. Например, чтобы сделать разметку кода. Значительно проработаны отступы для блоков. Добавлены внешние и внутренние отступы.  Исправлены многострочные списки. Теперь если элемент списка занимает больше одной строки, он отображается корректно. Добавлена поддержка закрашивания заднего фона.
    Так же этот компонент уже интегрирован в будущую настольную версию клиента форума.

  24. Like
    AngryOwl получил реакцию от zairkz в Заставка приложения до Form1.Show   
    "- создайте форму (например fmSplash) и на ее событие OnFormCreate делаете все что вам нужно
    - и когда, на ваш взгляд, уже пора создать главную форму приложения - обновите информацию в TfgProgressDialog и в блоке
      TThread.Synchronize(TThread.CurrentThread, procedure
      begin
        {....}
        Application.CreateForm(TfmMain, fmMain);
      end);
    создайте все формы вашего приложения..."
     
    чего там только нет... даже боюсь начать перечислять...
  25. Like
    AngryOwl отреагировална VladimirS в транслировать изображение экрана Андроид-смартфона   
    Подскажите, как транслировать изображение экрана Андроид-смартфона на ПК? Желательно без root и для версии 4.1.1   4.2
×
×
  • Создать...