Таблица лидеров


Популярный контент

Показан контент с высокой репутацией за 22.05.2018 во всех областях

  1. 8 баллов
    Первые пробы портирования существующего приложения с FMX на FGX. За основу был выбран классный проект Станислава Ихнатовича из Беларуссии с мобильным расписанием, отличающийся от других продуманным интерфейсом и детальной шлифовкой UI. Станислав любезно предоставил исходные коды своего проекта. Предлагаю вам ознакомиться с первым наброском его приложения на базе FGX. Обратите внимание, на сколько удобно идет создание стиля расписания пары, сделанного на базе компонента TfgCollectionView. В дизайн тайме созданы три варианта стилей без единой строчки кода для отображения расписания одной пары в разных исполнениях. Используя всю мощь FlexBox, удается достигнуть разнообразных вариантов "резинового" выравнивания контролов. А связь с данными не размазывается по коду, а сосредоточена вся в одном месте. Меню навигации сделано на базе нового компонента TfgListMenu без единой строчки кода, за исключением обработчиков нажатия на пункты меню и открытия отдельных форм, которым отведена роль отображения экранных страниц. Отдельно стоит указать, что специально для данного мобильного приложения была расширена возможность задавать задний фон контролов на базе картинки. А также были расширены возможности отображения и выравнивания форм относительно других. Так например форму можно встроить в любой контрол контейнерного типа, как фрейм. Или же просто отобразить форму, как всплывающее окно. P.S. Портирование приложения на FGX Native находится на стадии разработки. Screenrecorder-2018-05-28-00-54-39-998.mp4
  2. 4 балла
    Alex7wrt

    Audio Streaming

    Под Android я тоже делал аудио чат родными средствами, но через Bass получилось лучше и проще. В частности, там буферизация из коробки, можно эффекты накладывать, например усиление голоса при записи через микрофон. Поэтому и предложил, ведь под Bass код, что под Android, что под iOS, один и тот же. Поделиться не сложно. Ниже надергал основную схему из того приложения, о котором говорил выше. uses FMX.Radio.Bass; var BLoaded: boolean; chanPlay, ChanMic: Dword; avail, freq: word; buffer: TIDBytes; procedure TForm1.OnCreate(Sender: TObject); begin //Создаем UDP сервер UDP_Rec:=TIDUDPServer.Create; with UDP_Rec do begin DefaultPort:=UDP_RecPort; BufferSize:=1600; BroadcastEnabled:=true; Active:=true; end; freq:=16000; //Частота дискретизации setlength(buffer,UDP_Rec.BufferSize); BLoaded:=BASS_Init(-1, 44100, 0, nil, nil); //Подключаем библиотеку BASS_RecordInit(-1); //Инициализируем запись end; //Захват звука с микрофона procedure TForm1.Recording(Sender: TObject; const Point: TPointF); begin isrecording:=not isrecording; if isrecording then begin UDP_Rec.OnUDPRead:=nil; chanMic:=BASS_RecordStart(freq, 1, 0, nil, nil); VoiceThread:=TVoiceThread.Create; //Создание потока для отправки по UDP end end; //Передача буффера в потоке procedure TVoiceThread.Execute; begin while isrecording do begin try avail:=BASS_ChannelGetData(chanMic, nil, BASS_DATA_AVAILABLE); if avail>=UDP_Rec.BufferSize then begin //Если в буффере собралось не меньше 1600 байт, отправляем try BASS_ChannelGetData(chanMic, buffer, UDP_Rec.BufferSize); UDP_Rec.Broadcast(Buffer,UDP_RecPort); except end; end; finally sleep(20); end; end; BASS_ChannelStop(chanmic); BASS_StreamFree(chanmic); end; //Создание канала для воспроизведения звука из буффера: procedure TForm1.receiving(Sender: TObject); begin chanPlay:= BASS_StreamCreate(freq, 1, 0, STREAMPROC_PUSH, nil); UDP_Rec.OnUDPRead:=UDP_RecRead; BASS_ChannelPlay(chanPlay, false); end; //Получаем буффер из UDP procedure TForm1.UDP_RecRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); begin try BASS_StreamPutData(chanPlay, AData,length(AData)) except end; end; Bass.zip
  3. 4 балла
    Тык тык https://github.com/zhaoyipeng/FMXComponents/blob/master/ComponentsSource/FMX.Graphics.NativeCanvas.pas
  4. 4 балла
    Спасибо. Приложение обязательно будет доступно на пощупать чуть позже, когда я завершу его. Более того, можно будет поставить себе с плей маркета это оригинальное приложение, написанное на FMX и сравнить его же, сделанного на FGX.
  5. 4 балла
    Alex7wrt

    Не выбирается цвет кнопки

    Если нужно менять цвет, то выбирайте TRectangle, как выше писали. Он полностью заменяет TPanel + имеет много возможностей по оформлению заливки и рамки, даже углы можно закруглить и т.п.
  6. 4 балла
    Практически любое мобильное приложение сложно представить без стандартной навигации. В FMX меню обычно делается на базе TListBox. Однако, при всей гибкости данного компонента зачастую создать меню, которое будет следовать гайдлайнам ОС довольно сложная задача, поскольку она требует хороших навыков работы со стилями. Именно с этой целью разработан новый компонент TfgListMenu для FGX Native, который значительно упрощает создание меню навигации в вашем приложении. Компонент полностью построен с использованием концепций материал дизайна для андроида и следует всем его рекомендациям. Данный компонент использует заранее разработанные стили пунктов меню, которые позволяют быстро и гибко создать навигацию по примерам, изображенным ниже. Помимо этого компонент поддерживает несколько режимов выделения итемов. Начиная от работы без выделения и заканчивая множественным выделением элементов. На уровне каждого пункта меню в отдельности можно настроить реакцию пукнта меню на выделение и нажатие. Screenrecorder-2018-05-23-03-34-12-146.mp4
  7. 3 балла
    gonzales

    Пуши в IOS

    Все правильно, так и работает. При публикации в аппсторе sandbox (песочница) надо снять
  8. 3 балла
    Barbanel

    Как убрать черту под TSpinBox?

    Скорее всего это в объекте Background. Найтиде свойство SourceLinks, откройте и посмотрите на какую часть изображения ссылается фон. Возможно там что-то сдвинулось, или такая задумка дизайнеров.
  9. 3 балла
    Maximus

    Картинку с вебки зеркально отобразить

    Не подойдёт? http://docwiki.embarcadero.com/Libraries/Berlin/en/FMX.Graphics.TBitmap.FlipHorizontal
  10. 3 балла
    Всем привет! Не реклама, просто думаю это будет интересно. Был в прошлый четверг на семинаре от TMS, где они представляли свою новую разработку: создание приложений для Web на Delphi, прямо в IDE. Пайплайн примерно такой: -в студию устанавливается плагин, который добавляет в опции проекта и опции ИДЕ настройки для веб -создается приложение на основе ихнего шаблона, и использует FNC-компоненты (ессно от TMS) -приложение пишется практически как обычное VCL-приложение на языке Delphi, только в пространстве имен FNC -для использования контролов на форме (т.е. в окне браузера) они перевели практически все необходимые контролы -после компиляции студия запускает браузер, и ваше приложение работает в браузере. Как это работает: -под капотом ихний собственный т.н. DelphiToJavaScript Compiler, построенный на основе опенсорсного FPC -этот компилятор читает дельфи-код и преобразовывает его в яваскритп -есть возможность использовать как шаблон формы свой собственный HTML -HTML также может быть сгенерирован компилятором автоматически -можно использовать CSS -можно подгружать свои собственные js-библиотеки (не показывали как, но утверждают что можно) -после запуска студия открывает браузер и стартует ваше приложение в браузере -приложение можно дебажить, НО: -а) только в браузере -б) браузер получает от студии map-файл с инфой для отладки, и отображает исходный код на дельфи (это показали, действительно в браузере код на дельфи, и деже отображаются значения переменных) -можно подключаться к БД посредством REST-технологии, все запросы к БД при этом работают асинхронно дополнение) можно писать серверное приложение, которое будет принимать и обрабатывать эти запросы к БД, т.е. аналог фронтэнда и бэкэнда можно писать на дельфи -приложение выполняется полностью в браузере -минимальный размер приложения был от 250кб, утверждалось что если пройтись спец. оптимизатором по ява-коду, то будет еще меньше Мое личное имхо: очень интересно, мы будем это у себя пробовать. Лично я раньше не очень уважал TMS и их поделки, но пообщавшись с их командой изменил свое мнение, эта работа действительно очень впечалила. PS. это не реклама и я никак не причастен к TMS и этой разработке, просто считаю что это интересная тема, и залуживает чтобы ее немного осветили.
  11. 2 балла
    Год назад в одной из веток проскочила ссылка на китайский сайт (http://www.raysoftware.cn/?p=559), где предлагалось готовое решение для показа анимированных гифок средствами FireMonkey на любых платформах. Сейчас эта ссылка, как и весь сайт raysoftware.cn, упорно не открывается; по счастью, контент сохранился в гугловском кэше. Я скопировал оттуда код юнита и перевел гуглом все китайские комментарии на английский, добавив их в скобках. Там был еще сопроводительный текст, в котором автор излагал мотивы, побудившие его взяться за эту проблему; каких-то важных технических деталей я в этом тексте не увидел. Привожу весь юнит ниже и очень надеюсь, что кто-нибудь из продвинутых коллег объяснит мне, как именно этим кодом можно воспользоваться, чтобы показать пользователю анимированный файл в формате GIF. Моей программерской квалификации, к сожалению, не хватает.
  12. 2 балла
    {$ZEROBASEDSTRING ON} и работай с учётом что строка с 0 начинается. Либо юзай хелперы
  13. 2 балла
    не совсем понятно чем обычный THTTPClient не угодил?
  14. 2 балла
    Anatoliy

    Пуши в IOS

    После публикации в app store пуши перестали приходить. Помогло обратно вернуть в false 'sandbox' => false, и пуши пошли. Таким образом, не знаю как у других, но у меня во время разработки пуши работают если 'sandbox' => true, а после публикации в app store вернуть обратно 'sandbox' => false Может кому пригодиться эта информация. Почему так не знаю.
  15. 2 балла
    There is an interesting post on Medium aiming to inspire students why to learn C++. Its main point is that learning C++ teaches fundamental computer science concepts: memory management, compile-time vs run-time, polymorphism implementation, iterators and containers, and more. Unfortunately, it phrases itself in an exclusionary manner. While C++ is not the only language where you can learn these fundamentals, it is one of the most popular. However, with dozens of coding "boot camps" popping up and charging thousands of dollars for the promise of a quick path to a software development career, why should you consider learning a complex language like C++? Here are three key reasons to learn and use C++ today: Technical Foundation It's Widely Used Support and Future Let’s look at these in order. Technical Foundation C++ is one of the most common languages used to teach strong foundational knowledge that is applicable to all other languages. There are many core concepts you can learn with C++: Memory management: Allocating and freeing; use of pointers, and very quickly why you should not manually manage memory Different memory management models: reference-counted in the form of shared_ptr; strict ownership in the form of unique_ptr Ownership and deterministic behaviour, illustrated by RAII (see C++ specifics) Polymorphism behaviours: this one is in fact illustrated by some odd behaviours of C++, such as that the type identity of an object changes throughout its construction - hint, what happens when you call a virtual method in a constructor? Fundamental containers and algorithms Optimizations: what causes fast or slow code? Functional programming: while not a pure functional language, functional style is a direction the language has been heading and is very powerful in C++ If you learn C++, you will have a solid background that will allow you to understand other languages’ designs and implementations. It’s Widely Used C++ is the most widely used language for software today, especially in areas requiring performance. The following applications are written totally or mostly in C++: Windows Explorer Photoshop Word Clang compiler Windows (key area, including the new wrappers for XAML and desktop in C++17) Amazon’s key services Large parts of Apple’s macOS Bloomberg’s financial software And many more. Why is it widely used? Because C++ is powerful, expressive, concise, and performant. When you need to write solid, fast, applications and need powerful concepts in your code, you use C++. Support and the Future Finally, one key item in learning a language is the direction it’s going in the future. C++ is an ISO standard, and is evolving rapidly. You can read an overview of the various standard versions here. It’s a language that is being kept up-to-date and extended as developers need it. That’s a language to rely on. Ready to Get Started learning or expanding your C++ knowledge? Start with our free tools and C++ Bootcamp replays. Просмотр полной статьи
  16. 2 балла
    GASCHE

    Конвертация HString в string

    Вроде тут System.Win.WinRT.pas есть.
  17. 2 балла
    Ярослав, когда планируете сделать первый релиз FGX?
  18. 2 балла
    На сенсорном экране нужно обрабатывать тап, в Делфи есть компонент для жестов. Копай в эту сторону
  19. 2 балла
    На форуме Эмбаркадеро этот вопрос я задал еще на прошлой неделе - то ли в четверг, то ли в пятницу. Получил сообщение: мол, ваш вопрос будет опубликован после того, как его просмотрит модератор. Сегодня уже среда, а модератор всё спит. Довольно странно функционирует этот форум, я уже не в первый раз замечаю. Существуют ли, интересно, способы как-то на них воздействовать? Обращался также к известному дельфийскому эксперту Марко Канту по электронной почте. Он несколько раз ответил - но видно было, что даже он в этих вопросах пока плавает. Теперь вовсе замолчал. Если в конце концов разберусь, то статья будет, обещаю. Но буксую уже второй месяц, и уверенности, что разберусь, всё меньше.
  20. 2 балла
    Alex7wrt

    Не выбирается цвет кнопки

    Кидаете на форму панель, нажимаете на нее правой кнопкой - > Edit Custom Style - > И там в стиле меняете свойство Fill
  21. 2 балла
    Обычно я делаю класс TCore, в котором все необходимое и настройки и переменные, я стараюсь формы и логику всегда отделять (раньше для Windows я вообще отделял логику и ядро в DLL ). Формы нужны только для отображения содержимого. Этот класс создаю в dpr до всех форм, Core соответсвенно в отдельном модуле, и глобальная переменная gCore там же в interface. Этот Core.pas подключаю уже везде. Это очень практично.
  22. 2 балла
    Ay^Wao corporation

    Добавить текст

    Здравствуйте, помогу вам с исправлением ошибки этой в C++, попробовав сам перевести с Delphi! Все, у кого возникла данная ошибка, делайте как я: Memo1->InsertAfter(Memo1->CaretPosition, L"txt", Fmx::Memo::Types::TInsertOptions()<<TInsertOption::MoveCaret); === P.S. Надеюсь я многим помог, я заметил, что в интернете невозможно найти информации по данному вопросу, полез в .hpp и сам выяснил. InsertAfter вставляет заданный нами текст в определённое место текста компонента Memo, это место указано нами в первом параметре. Во втором параметре мы указываем текст, который хотим вставить (например, SlineBreak - для вставки переброса строки; ну или прописываем любой текст (причём, если хотите чтобы на андроиде не крякозябры отображались, то приводите строку к юникоду с помощью L"")). В 3-м параметре указывается что сделать при вставке: 1) Selected - применяется эффект выбора для вставленного текста; 2) MoveCaret - Перемещает каретку в позицию последнего вставленного символа (прямо после последнего из нами вставленных символов будет мигать); 3) CanUndo - Указывает, можно ли удалить операцию удаления (если при вызове InsertAfter из параметров удаляется TInsertOption::CanUndo, то реализованные изменения не могут быть отменены); 4) UndoPairedWithPrev - указывает, связана ли текущая операция вставки с предыдущей.
  23. 2 балла
    Вынеси эту переменную в отдельный модуль 'MyVariableUnit.pas' и добавь его во все места, где нужно обращаться к переменной
  24. 2 балла
    ra.eremeev

    Download FGX Nativo

    Добрый день! Ярослав, Вы - молодец! Удивительно, что Embarca не движется в этом направлении, развивая лишь среду и сопровождая текущий набор компонентов... Очень хочется попробовать TfgCollectionView. Надеюсь на скорый релиз Когда планируете выпустить первую версию?
  25. 1 балл
    Alex7wrt

    Audio Streaming

    Методом проб и ошибок обнаружил, что для речи запись с частотой дискретизации 16000 выдает практически такое же качество, как и 44100, но ощутимо лучше, чем 8000. При этом используется одноканальная запись (моно), что с учетом 16 бит на семпл дает 32 кБ/с (256 кбит/с), что не сильно нагружает WiFi сеть. Потерь нет (и это в UDP протоколе). Также, одна из причин, почему я не использую сжатие в данном приложении, это телефоны-приемники, которые у нас по большей части старые смартфоны с одноядерным процессорм. А в приложении кроме аудиочата есть и другие нагружающие фичи. Не хочется лишний раз нагружать проц и садить батарею, если и так все норм.
Эта таблица лидеров рассчитана в Москва/GMT+03:00