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

AngryOwl

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

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

  • Посещение

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

    45

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

  1. Like
    AngryOwl отреагировална alexbirukov в Кому нужны программисты Fire Monkey?   
    Прочитал тему и небольшой холивар.
     
    Проблема не в том, что не требуются те или иные специалисты. Рынок у нас в России пока не дошёл уж простите, до той стадии, когда даже средние компании задумывались о каких-либо мало-мальски разработках. Да объявления появляются, требуются кодеры на ObjC и Java, но как правило крупные компании, в которых уже идёт поддержка старых продуктов.
     
    Delphi на эту сцену вышел совсем недавно и многие пока даже не подозревают, что его можно юзать для создания мобильных приложений. Отсюда низкая популярность.
     
    C# доступен всем, но опять же, спрос в этой области крайне низкий, уровень "вхождения" в язык - низкий. Язык простой. Поэтому "специалистов" куча, а оплата такой работы крайне низкая. Да и вообще в последние 1,5-2 года наблюдается сильный спад уровня ЗП в области IT в России. Сам постоянно просматриваю объявления, т.к. работаю на себя и занимаюсь фрилансом. Уровень ЗП 1С-ников, которые сейчас ближе не к программистам, а к дизайнерам форм (да простят они меня), сильно снизился. при этом сказать, что выросло качество работ, тоже сложно. Хороших продуктов сейчас выходит не так много. Так что, получается вот так и живём.
     
    А вообще, каждый язык хорош для решения определённых задач. Если вам нужная оболочка для консольных приложений или простенькие задачи, с максимально быстрой реализацией, то велкам на С#. Если что-то посложнее, с БД, то удобнее Delphi и С++. Ну и т.д.
     
    Лично я на фрилансе использую для клиентов C# и Delphi. C# для десктопных приложений с небольшими задачами. Delphi, для решения на мобильных платформах. Ибо одному осиливать 2 доп. языка и потом вести оба проекта, крайне проблематично. Да и зачем усложнять себе задачу, если можно использовать знакомые средства.
  2. Like
    AngryOwl отреагировална #WAMACO в Кому нужны программисты Fire Monkey?   
    Ну во-первых, хорошо смеется тот, кто смеется последним!
    Во вторых, наблюдаю тенденцию на других форумах
    - "обучился на JAVA, где искать работу?"
    - "как то не все сладко в JAVA. правлю legacy сраный код"
    - "группа C# кодеров запрограммерит любую задачу за еду"
    и т.д.
    такая же тенденция со всякми скрипт-языками (JavaScript и иже  с ними), пока Да - закрывают нужды времени, ваяя на коленках скрипты!
    НО, потом встанет задача оптимизации всего этого  - и начнется время натива! Вот тут многие с испорченными знаниями фреймворков и прочей шелухи начнут выпадать из жизни! уже есть конкретные заявки на именно "нативные" реализации!
    поэтому направление развития RAD абсолютно верное! а качество реализации придет! поверьте!
     
    P.S. два знакомых менеджера по продажам (уже смешно) закончили курсы по JAVA, говорят бабла хотим много!
    но при поиске работы на 1 предложение - уже 100 человек в очереди стоят! говорят: "нас обманули!"
    я говорю "на вас деньги заработали!" (по 140 тыщ. руб - курсы по JAVA, 2х140=280 тыщ.) че, неплохо так!
  3. Like
    AngryOwl отреагировална Brovin Yaroslav в [RX] [FGX] Описание версии 0.7.0.69   
    Ссылка на скачивание (Только для RAD Studio RX): fgx_0.7.0.69.zip
    Инструкция по установке: "Инструкция по установке набора компонентов FGX"
    Описание
    Эта версия включает в себя следующий набор компонентов:
    Дизайнер итемов (NEW) - дизайнер итемов. TfgToast (NEW) - класс отображения быстрых сообщений TfgFlipView (UPDATED) - слайдер изображений. Поддерживает несколько способов переключения фотографий при помощи эффектов и сдвигов. При первом использовании ОБЯЗАТЕЛЬНО прочитать инструкцию "TfgFlipView - Инструкция загрузки стиля" TfgPositionAnimation - анимация свойств типа TPosition TfgPosition3DAnimation - анимация свойств типа TPosition3D  TfgBitmapLinkAnimation - анимация свойств типа TBitmapLink  TfgProgressDialog (UPDATED)- Компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения фоновой операции можно оценить. TfgActivityDialog (UPDATED)- компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения операции не возможно адекватно оценить. TfgActionSheet - Аналог контекстного меню для мобильных платформ. TfgColorsPanel (UPDATED)- Палитра цветов с возможностью выбора цвета. TfgGradientEdit - Компонент выбора градиента. TfgLinkedLabel  - Метка поддерживающая открытие Web ссылки в браузере по умолчанию. TfgApplicationEvents - компонент с возможностью легко задать обработчики на основные события приложения: Отслеживание смены состояния приложения, простой, обновление и выполнение действий Actions, Изменение ориентации устройства и тд. TfgVirtualKeyboard - компонент облегчающий работу с виртуальной клавиатурой. Позволяет задать пользовательские кнопки над виртуальной клавиатурой под iOS, а так же отлавливать события по отображению и скрытию клавиатуры. Зарегистрированы все стилевые объекты на вкладке "FGX: Style objects" Список изменений
    TfgActionSheet: Исправлена ошибка не позволяющая использовать действия TTakePhotoFromCameraAction и TTakePhotoFromLibraryAction под iOS. Исправлена ошибка приводящая к AV, если экшен не имел обработчика OnExecute (Android, iOS) Исправлен внешний вид под iOS. Раньше, если TfgActionSheet не содержал заголовка, сверху система все равно оставляла под него пустое место. Теперь если заголовка нет, то место не выделяется. Обновлен пример ActionSheetDemo TfgProgressDialog, TfgActivityDialog: Добавлено свойство Cancellable, позволяющее сделать диалог отменяемым по нажатию на экран или кнопку Back. Добавлено событие OnCancel, вызываемое, если пользователь отменил диалог. Обновлен пример. Теперь все операции выполняются в отдельном потоке, асинхронно. Добавлен метод IsShown, позволяющий определить, показан диалог или нет Добавлено свойство TfgOrigressDialog.Max, позволяющее указать максимальное значение прогресса. Улучшена генерация имени действия. Если прикрепляется системный экшен TSysCommonAction, то имя берется из CustomText  TfgFlipView: Добавлено пролистывание при помощи жестов. Добавлена опция ShowNavigationButtons, позволяющая скрыть кнопки смены слайдов Добавлено событие OnImageClick, позволяющее отследить нажатие пользователем на слайд Обновлен пример для корректной работы на всех платформах. Исправлена ошибка слайдшоу, приводящая к невозможностью контролировать и менять параметры слайдшоу. Изменен курсор на руку TfgColorsPanel, TfgGradientEdit: Добавлены пропущенное свойство Size в секции published.
  4. Like
    AngryOwl отреагировална Tera в Семисегментный индикатор   
    Спасибо Brovin Yaroslav за советы. Все исправил. Я совсем недавно стал изучать FireMonkey.
    SevenSegment.zip
  5. Like
    AngryOwl отреагировална Tera в Семисегментный индикатор   
    Компоненты TSevSeg - семисегментный индикатор и TSeparator - разделитель.
    Переписал компоненты с VCL. Может, кому пригодится. Пример использования:
     

     
    Для разового использования можно просто подключить к проекту как модуль.
     
    SevenSegment.zip
  6. Like
    AngryOwl отреагировална Brovin Yaroslav в Семисегментный индикатор   
    Добрый день, Юрий,
     
    Красота. Хороший компонент. Возможно вам пригодятся пара замечаний по портированию с VCL на FMX, которые помогу вам сделать ваш компонент еще лучше.
    Когда вы выполняете отрисовку в перекрытом методе TControl.Paint, не надо вызывать BeginScene и EndScene. Так как этими методами руководит сцена, обычно это форма.
    procedure TSeparator.Draw(px1, py1, px2, py2: Single; pColor: TAlphaColor; Opac: Single); var MyRect: TRectF; begin MyRect := TRectF.Create(px1, py1, px2, py2); with Canvas do begin [b] BeginScene; // <!--- Не нужно[/b] Fill.Kind := TBrushKind.Solid; Fill.Color := pColor; FillRect(MyRect, 0, 0, AllCorners, Opac); [b]EndScene; [/b][b]<!--- Не нужно[/b] end; Canvas end; Дополнительно:
    1. Инициализацию точек для полигона можно сделать сразу на прямую. 
    Было:
    // Установить точки, определяющие многоугольник p1 := TPointF.Create(px1, py1); p2 := TPointF.Create(px2, py2); p3 := TPointF.Create(px3, py3); p4 := TPointF.Create(px4, py4); p5 := TPointF.Create(px5, py5); p6 := TPointF.Create(px6, py6); // Создать полигон SetLength(MyPolygon, 6); MyPolygon[0] := p1; MyPolygon[1] := p2; MyPolygon[2] := p3; MyPolygon[3] := p4; MyPolygon[4] := p5; MyPolygon[5] := p6;  Стало:
    MyPolygon := [TPointF.Create(px1, py1), TPointF.Create(px2, py2), TPointF.Create(px3, py3), TPointF.Create(px4, py4), TPointF.Create(px5, py5), TPointF.Create(px6, py6)]; При этом для динамических массивов перед присваивание не нужно  вызывать функцию SetLength. Экономия места и 6 переменных.
     
    2. Сравнение вещественных чисел должно осуществляться при помощи функции System.Math.SameValue. Это касается всех мест в этом юните. В противном случае у вас могут быть фантомные ложные срабатывания условий, которые найти будет сложно.
    Было:
    procedure TSevSeg.SetCellSpace(const Value: Single); begin if Value = CellSpace then exit; FCellSpace := Value; end; Стало:
    procedure TSevSeg.SetCellSpace(const Value: Single); begin if SameValue(Value, CellSpace) then exit; FCellSpace := Value; end;
  7. Like
    AngryOwl отреагировална krapotkin в Долгое заполенение TreeView   
    не нужно даже предполагать возможность скачивания 10000 элементов в экран размером 12 см
    даже для десктопа это плохая архитектура, а для мобилы - 100% непригодная
    нужно сразу думать о другом интерфейсе
    зайди в вк. промотай 200 записей из новостей, все и так еле шевелится...
  8. Like
    AngryOwl отреагировална Brovin Yaroslav в Слайдер для двух TImage   
    Пока в FGX есть слайдер, но он без использования жеста прокручивания. Я подумаю, чтобы добавить в следующую версию прокрутку пальцем.
  9. Like
    AngryOwl отреагировална krapotkin в Отрисовка скрытых контролов   
    в fgx компонентах на этом форуме есть
  10. Like
    AngryOwl получил реакцию от FeLDMARShaL в Отрисовка скрытых контролов   
    Я бы советовал Вам посмотреть ответ Ярослава.
    procedure PreloadContent(const Control: TControl); Не уверен, но думаю он Вам поможет.
  11. Like
    AngryOwl отреагировална Равиль Зарипов (ZuBy) в Динамическое создание и уничтожение TForm   
    TFormAdd.Create
  12. Like
    AngryOwl отреагировална Равиль Зарипов (ZuBy) в Возможности ListView   
    не верно!
     
    как нарисуешь в OnUpdateObjects, так и будет
  13. Like
    AngryOwl отреагировална Равиль Зарипов (ZuBy) в TMapsEngine   
    Компонент TMapsEngine
     
    Возможности
    Нативный LocationSensor [ANDROID] Геокодинг/Реверс геокодинг через Google API, Yandex API, Here Maps API Построение маршрута через Google Distance API Расчет дистанции по прямой Совместим со стандартным компонентом TLocationSensor  
    Видео демонстрация
     
    На видео видно как TMapView косячик с миллионом точек, приложение зависло при отрисовке, но с этим ничего не поделать.
    Без синхронизации не возможно отрисовать все точки
     
    Исходник
    TMapsEngine_source.zip
    TMapsEngine_Seattle_10.zip
     
    Скачать APK  (долго он там не пролежит, а форум не позволяет загрузить zip размером 7,4 мб )
     
  14. Like
    AngryOwl получил реакцию от Alex7wrt в Скрытие приложения с панели задач.   
    Попробуйте
    uses   {$IFDEF MSWINDOWS}, Winapi.Windows, FMX.Platform.Win{$ENDIF}; {$IFDEF MSWINDOWS} ShowWindow(ApplicationHWND, SW_HIDE); {$ENDIF}
  15. Like
    AngryOwl получил реакцию от Равиль Зарипов (ZuBy) в При свойстве Align элемента как "Scale", в TabItem он убегает [Rad Studio 10]   
    Не знаю, конечно, как остальным, но как по мне - так ссылка крайне неудачная... Отпадает желание смотреть.
  16. Like
    AngryOwl получил реакцию от Kitty в Скрытие приложения с панели задач.   
    Попробуйте
    uses   {$IFDEF MSWINDOWS}, Winapi.Windows, FMX.Platform.Win{$ENDIF}; {$IFDEF MSWINDOWS} ShowWindow(ApplicationHWND, SW_HIDE); {$ENDIF}
  17. Like
    AngryOwl получил реакцию от Vitaldj в Скрытие приложения с панели задач.   
    Попробуйте
    uses   {$IFDEF MSWINDOWS}, Winapi.Windows, FMX.Platform.Win{$ENDIF}; {$IFDEF MSWINDOWS} ShowWindow(ApplicationHWND, SW_HIDE); {$ENDIF}
  18. Like
    AngryOwl отреагировална alexbirukov в Ошибки и косяки Delphi XE10 Seattle и xCode 7   
    И так, пока русскоязычная и англоязычная части интернета молчат по поводу работы в новой Delphi XE10 Seattle в связке с xCode 7, а компании представители описывают, какое замечательное вышло обновление, пользователи столкнулись с проблемой, что приложения, сделанные на XE10 Seattle, xCode 7 + SDK9, не запускаются на предыдущих платформах.
    Не совсем понятно, почему в упомянутых сегментах интернета нет совершенно никакой информации по данному поводу. Опять впереди планеты все Китай.
    Пользователь блога подробно описывает конфигурацию, на которой он тестировал запуск приложения и описание проблемы. Несколько реальных устройств на разных прошивках, разные версии ПО и пр.
    Коротко о главном. Если вы хотите, как можно скорей перейти на новую Delphi XE10 Seattle с целью писать свежие приложения\обновления для iOS, спешу вас разочаровать. Ваши программы перестанут работать на предыдущих версиях iOS. Статистика испытаний такова, что приложения собранные на XE10 Seattle, xCode 7 + SDK9 будут работать только на устройствах под управлением iOS9.
    Вторая проблема, состоит в том, что недавнего времени AppStore при проверке приложений стала проверять их именно на iOS 9, а приложения собранные на XE8.1 такую проверку не проходят, так как зависают на стартовой заставке приложения и как следствие их отклоняют. Вот так то. Прошла уже целая неделя, а интернет по данному поводу ничего сказать нам особо не может.
    На днях появилась статья от Сарины Дю Понт, о том, как всё же запустить приложение сделанные в XE8.1 на iOS9.
    В результате изысканий Китайских друзей, получаем на данный момент такую картину:
    XE8 + iOS 6 = полёт нормальный
    XE8 + iOS 7 = полёт нормальный
    XE8 + iOS 8 = полёт нормальный
    XE8 + iOS 9 = зависание на экране заставки (если не воспользоваться советом Сарины)
    XE10 + iOS 6 = приложение вылетает
    XE10 + iOS 7 = приложение вылетает
    XE10 + iOS 8 = приложение вылетает
    XE10 + iOS 9 = полёт нормальный
    Таким образом в XE10 Seattle и xCode 7 можно получить на данный момент только приложение, работающее на iOS9.
    Ждём Delphi XE10 Seattle Update 1.
    P.S. А в на Android в Delphi XE10 Seattle приложение с компонентами для отправки Push не запускается в режиме Release — Application Store. Что тоже, очень и очень печально.
  19. Like
    AngryOwl отреагировална ruslan в Запустить приложение из сервиса или показать форму   
    йомайо, сколько крику то столько не заходил - а тут во какой срач разбираете classes.dex(гуглим), ложите все в отдельное место, берете отдельно fmx.jar, декомпилируете, собираете проект в андроид студии,  открываете com\embarcadero\firemonkey\notifications\FMXNotificationPublisher.java переписываете метод PublishGCM, которые обрабатывает пуши(можете туда хоть открытие приложения вставить, хоть отправку ваших гет запросов) билдите из проекта вытаскиваете \fmx\build\intermediates\classes\debug\com\embarcadero\firemonkey\notifications\FMXNotificationPublisher.class кладете его назад в fmx.jar пересобираете classes.dex (есть спец. утилитки) у себя в деплое меняете classes.dex на ваш новый.  Всё. дальше сами.   п.с. и не надо никаких лишних сервисов писать. уже абракадаброй добавлен пушевский сервис, который наверняка понадобиться п.с. фаирманки - зло
  20. Like
    AngryOwl отреагировална Brovin Yaroslav в Разработка настольной версии клиента для форума по FireMonkey с использованием FireMonkey   
    Немного переработан внешний вид. Теперь можно просматривать темы и посты с поддержкой форматирования. Добавлен пункт меню просмотр последних тем.  

  21. Like
    AngryOwl получил реакцию от Brovin Yaroslav в Прозрачность в стилях   
    Ссылку, которую я Вам дал, решает именно этот вопрос и именно реализацией стилей. Создается стиль. Форма делается прозрачной, размещается на нее панель и задается ей соответственно стиль. И все - нужная форма готова.
  22. Like
    AngryOwl получил реакцию от Равиль Зарипов (ZuBy) в Запрет ввода определенных символов в TEdit   
    может как-то так:
    procedure TForm1.edSumKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin   case KeyChar of     #8, '0'..'9' :  ; // цифры и <Back Space>     '.', ',' :        // разделитель целой и дробной частей числа       begin         if KeyChar <> FormatSettings.DecimalSeparator then           KeyChar := FormatSettings.DecimalSeparator; // заменим разделитель на допустимый         if Pos(FormatSettings.DecimalSeparator, edDepositing_Sum.Text) <> 0 then         begin           Key := 0; // запрет ввода второго разделителя           KeyChar := Chr(0);         end;       end;     else   // остальные символы запрещены     begin       Key := 0;       KeyChar := Chr(0);     end;   end; end;
  23. Like
    AngryOwl получил реакцию от Kitty в Запрет ввода определенных символов в TEdit   
    может как-то так:
    procedure TForm1.edSumKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin   case KeyChar of     #8, '0'..'9' :  ; // цифры и <Back Space>     '.', ',' :        // разделитель целой и дробной частей числа       begin         if KeyChar <> FormatSettings.DecimalSeparator then           KeyChar := FormatSettings.DecimalSeparator; // заменим разделитель на допустимый         if Pos(FormatSettings.DecimalSeparator, edDepositing_Sum.Text) <> 0 then         begin           Key := 0; // запрет ввода второго разделителя           KeyChar := Chr(0);         end;       end;     else   // остальные символы запрещены     begin       Key := 0;       KeyChar := Chr(0);     end;   end; end;
  24. Like
    AngryOwl отреагировална Andrey Efimov в Создание виджетов   
    Ну, лучшие книги по Java (и не только) - вроде как от издательства OREILLY (пускай знатоки поправят меня, если не прав).
    По поводу виджетов - для начальных знаний сойдёт любая более менее подробная книга, но опять же можете почитать книги от того же издательства. Вот ссылка на официальный магазин O'REILLY: Android Programming (это если на оригинальном языке)
     
    А вообще можно купить их например здесь Books.ru (не реклама
     
    p.s. Многие книги переведены на русский язык и их можно даже найти на торрентах
  25. Like
    AngryOwl получил реакцию от zonik в Как записать видео на Андроиде?   
    Вообще, конечно, собрать видео из отдельных кадров можно. Вполне реально. Но не для всего)
    И это все "свистоперделки"...
    Что касается частоты кадров - реально получать 10-15. Еще и от устройства зависит, от камеры и т.д. Но все эти тормоза из-за класса "обертки" работы с видео. Именно он выдает так мало кадров. Сама камера работает. FMX работает тоже ничего, но основные тормоза из-за того что в TCameraComponent уже "приходит" мало кадров.
    На самом деле, как я считаю, разработка для мобильных платформ должна в первую очередь решать именно мультимедийные функции (я бы сказал, что это ОЧЕНЬ важно). А мы имеем пока-что их жалкое подобие, которое нужно допиливать ручками...
    Я уже не говорю о том, что почему-то если в той же iOS что-то "запрещено", то это же касается и Android, хотя в ней все намного проще и она более "открыта". Глупо как-то, уж простите за откровенность...
×
×
  • Создать...