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

Лидеры

  1. rareMax

    rareMax

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


    • Баллы

      10

    • Постов

      553


  2. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      6

    • Постов

      2 517


  3. Axbor

    Axbor

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


    • Баллы

      4

    • Постов

      159


  4. enatechno

    enatechno

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


    • Баллы

      3

    • Постов

      181


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

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

  1. Хотел бы поделиться опытом. Рассмотрим случай, когда вам необходимо использовать кастомное диалоговое окно с затемнением. Вроде вот такого: Первое, что приходит в голову, это использование Rectangle’ов. Но такой подход показался мне очень сложным, и я нашёл другой способ (многие о нём уже знают) создания кастомного окна. Сам способ: Создаем вторую форму, и изменяем следующие свойства: Transparency = True Fill->Color = #78000000 Fill->Kind = Solid Поместим туда один TLayout, выставим свойство «Align» в значение «Center». И зададим нужный размер. Потом кидаем на TLayout компонент «TRectangle» со свойством «Align – Content». Чтобы TLayout не мешался во время design-time, присвоим свойству Locked значение True. Кидаем остальные компоненты, чтобы получить окно нужного нам вида. В итоге у меня получилась вот такая иерархия компонентов: Компонент TRectAnimation используем для анимирования процесса появления окна. Вы можете придумать свою анимацию. В данном случае анимируется свойства формы «Padding». Напишем следующий код, для того, чтобы при клике на тёмную область формы окно закрылось (событие формы OnTap работает на сенсорных экранах, если вам нужен OnClick тогда воспользуйтесь Layout’ми или Rectangle’ми): void __fastcall TForm2::FormTap(TObject *Sender, const TPointF &Point) { Close(); } Вот и всё. К сообщению, я приложил демо приложение с примером такого окна. У администраторов просил бы поправить допущенные ошибки так как я не владею русским языком очень хорошем уровне. Или же добавит кое какие дополнительные информации ссылки и т.д. Demo.zip
    4 балла
  2. Гитхаб: https://github.com/dimsa/ShadowEngine Скачать: https://github.com/dimsa/ShadowEngine/archive/master.zip Twitter: https://twitter.com/dimsa87 Игровой движок на FMX. Демо можете посмотреть на ютубе, ссылка в оригинальном описании. SO Engine (ShadowEngine) Delphi Firemonkey (FMX) Sprite Engine with Formatters, Animations, Collisions and etc. Some engine features you could watch on YouTube: CosmoRumba the Card Game: http://www.youtube.com/watch?v=k7TveCUHXCM Spaceship with Asteroids: https://youtu.be/w6lGasU61HQ Custom shaped Sprite. You could make parallax effect on Background Asteroids vs You: http://www.youtube.com/watch?v=veRTBIGUvNM Game from the Google Play (Android Market) Addictive game about confrontation of Humankind and Asteroids. Your aim is to avoid randomly moving asteroids. You can't shoot them. There are 3 modes: Story, Survival, Relax. In story mode level length is from 30 seconds to 2 minutes. Every next level is harder. In Survival new asteroid is spawned every 15 second. SO Engine Architecture and Features Overview With every commit it getting better! PS - хотел на 100+ в рейтинге выложить - но чуть опоздал)
    4 балла
  3. krapotkin выкладывал когда-то MyDialogs Изменения от меня: Переписан код, удалены лишние компоненты Подогнал под стандартные диалоги платформ Смена позиции кнопок "Oк", "Отмена" в зависимости от платформы Профиксил MaxLength для TEdit (при установке ограничении ввода символов для мобильных платформ) Возможность использования анонимных методов (TThreadProcedure) MyDialogs_ZuBy.7z
    3 балла
  4. enatechno

    Cancel в InputQuery

    и не только... What's New - Berlin: Simplified Dialog API Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services that provide support for synchronous and asynchronous dialog boxes, respectively. The following table summarizes the API changes: Deprecated Members New Members FMX.Dialogs.ShowMessage* FMX.Dialogs.ShowMessageFmt* FMX.Dialogs.ShowMessagePos ShowMessageAsync ShowMessageSync FMX.Dialogs.MessageDlg FMX.Dialogs.MessageDlgPos FMX.Dialogs.MessageDlgPosHelp FMX.Platform.IFMXDialogService.MessageDialog MessageDialogAsync MessageDialogSync FMX.Dialogs.InputBox FMX.Dialogs.InputQuery FMX.Platform.IFMXDialogService.InputQuery InputQueryAsync InputQuerySync * ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync or ShowMessageSync instead nonetheless. Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper classes provide class methods and functions that allow you to call the new procedures and functions for dialog boxes without the need of an instance of the corresponding dialog box platform service. Other FireMonkey
    3 балла
  5. Ааа, дошло ) xJS := SO('{"data":' + aJSON + '}');
    2 балла
  6. если внимательно посмотрели пример, то я её сам добавил. в этом нет ничего сложного
    2 балла
  7. Я закачиваю через php скрипт, который лежит на сервере. код для delphi: var par, path_windows:string; st:Tidmultipartformdatastream; RS: TStringStream ; begin path_windows:=extractfilepath(paramstr(0)); RS := TStringStream.Create(''); st:=Tidmultipartformdatastream.Create; par:= GetMIMETypeFromFile(path_windows+'\'+ 'имя файла') ; try st.AddFile( 'uploadfile',path_windows+'\'+имя файла' , par ); except messagedlg('Произошла ошибка. Файл архива не найден. При повторении ошибки, обратитесь к администратору.',mterror,[mbYes],0) ; exit; end; IdHTTP1.Request.ContentType := st.RequestContentType; try IdHTTP1.Post( 'http://'+имя сайта+'/директория на сайте/uploadfile3.php', st , RS); // uploadfile3.php - имя скрипта php except messagedlg('Произошла ошибка. Нет соединения с сервером. Это может быть вследствии его отсутствия или при наличии прокси сервера, неверная настройка программы.',mterror,[mbYes],0) ; exit; end; if RS.DataString = 'ok' и обработка Код для php: <?php if ( copy($_FILES['uploadfile']['tmp_name'],"uploads2/".basename($_FILES['uploadfile']['name']))) print "ok" ; else print "no" ; ?>
    2 балла
  8. Вот я, например, работаю с ТелеграмБот АПИ. У него есть свои типы данных(если их так можно назвать). К примеру тип User Когда вы запрашиваете какую то инфу с участием этого типа вам придет JSON с такими данными(в моем примере getMe): В "result" будет как раз этот тип "User". Что бы не парсить отдельно каждое поле я создал аналогичный класс в делфи: TTelegaUser = Class private FID: Integer; FFirstName: String; FLastName: String; FUsername: String; published /// <summary> /// Unique identifier for this user or bot /// </summary> /// <returns></returns> [ALIAS('id')] property ID: Integer read FID write FID; /// <summary> /// User‘s or bot’s first name /// </summary> [ALIAS('first_name')] property FirstName: String read FFirstName write FFirstName; /// <summary> /// Optional. User‘s or bot’s last name /// </summary> [ALIAS('last_name')] property LastName: String read FLastName write FLastName; /// <summary> /// Optional. User‘s or bot’s username /// </summary> [ALIAS('username')] property Username: String read FUsername write FUsername; End; И теперь могу заполнить данными с моего запроса приблизительно так*: FtelegUser := TTelegaUser.FromJSON(content); * - На самом деле у меня чуть подругому. * - При условии что в "content" у вас будет приблизительно такое содержание:
    2 балла
  9. Andy

    Маршалинг/ДеМаршалинг в System.JSON

    Да, согласен. Но если автор хочет "родными", то выглядит это так: type TTelegaUser = Class private FID: Integer; FFirst_Name: String; FLast_Name: String; FUsername: String; published property ID: Integer read FID write FID; property First_Name: String read FFirst_Name write FFirst_Name; property Last_Name: String read FLast_Name write FLast_Name; property Username: String read FUsername write FUsername; End; ..... procedure TForm1.Button1Click(Sender: TObject); var TelegaUser: TTelegaUser; begin TelegaUser := TJson.JsonToObject<TTelegaUser>(MEMO1.Lines.Text); end; ........ В memo1 лежит ваш JSON {"id":122041176,"first_name":"Delphi in TelegAPI","username":"test_delphi_api_bot"} Важно чтобы у класса Свойства назывались точно так-же как в JSON.
    1 балл
  10. нет другого способа, да и проблем нет никаких. сохранил-отправил-удалил а сохранять можно в Temppath или DocumentsPath
    1 балл
  11. rareMax

    LiveTile

    И FMX, и VCL. Вот кстати оно
    1 балл
  12. rareMax

    LiveTile

    Во времена Win8, согласно легенде, позволял добавить свою плитку в меню "пуск". У меня правда не получилось это сделать, но это совсем другая история
    1 балл
  13. rareMax

    Генерация QR-кода на Android

    Ну ладно... {$IFNDEF MSWINDOWS} {$ZEROBASEDSTRINGS OFF} {$ENDIF} И обращаю внимание что это только для проверки. Я код не видел - но скорее всего придется много переделывать для кроссплатформенности.
    1 балл
  14. rareMax

    Генерация QR-кода на Android

    Добавьте это {$ZEROBASEDSTRINGS ON} Инфа: http://docwiki.embarcadero.com/RADStudio/Seattle/en/Zero-based_strings_(Delphi)
    1 балл
  15. Кроме того, проверьте стандартную библиотеку System.JSON на утечку памяти (ReportMemoryLeak), каждый раз TJSONvalue надо освобождать и уничтожать.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...