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

Kitty

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

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

  • Посещение

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

    16

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

  1. Like
    Kitty отреагировална Andrey Efimov в Прозрачность TlistViewItem   
    Через стиль можно сделать, "itembackground.color" ставим Null. Ну и прозрачность у самого компонента включаем.
  2. Like
    Kitty отреагировална Akad в Мусор при развёртывании приложений   
    Ничего в этом плане с 7 версии не изменилось. Единственный надёжный что-то вычистить в студии способ - это far, alt+7, *.*, и искать все упоминания в данном случае файлов от DevExpress/FireDAC...
    Эта проблема из той же серии, что когда проект копируешь в другую папку, и начинаешь там без предварительной подготовки что-то править, то правишь старые файлы а не скопированные. Подобных ммм... "фишек" у студии куча. Надо или мириться, или переходить на что-то другое. В последней версии (10.2-10.2.2) они даже ctrl+пробел сломали, а Вы  про автоматическую прочистку лишних bpl.
     
  3. Like
    Kitty отреагировална Равиль Зарипов (ZuBy) в DX 10.1[Android] TMediaPlayer не работает в потоке   
    нужно использовать нативный плеер, а не компонент TMediaPlayer
    В интернете были примеры
  4. Like
    Kitty отреагировална Равиль Зарипов (ZuBy) в StatusBar Color   
    попробуйте последнюю версию
  5. Like
    Kitty отреагировална Brovin Yaroslav в Компонент нестандартной формы   
    В одном из продуктов Embarcadero - Beacons. Они используют следующий подход:
    Загружают картинку с планом помещений В специальной программе помечают регионы помещений. По сути это данные на основании которых будет определяться помещение. Программно по указанной координате можно проверить вхождение точки в один из указанных регионов. Алгоритмов, как это сделать в принципе много. Типичный алгоритм:  это обход ближайшего контура с правой стороны. Если при обходе по кривой вы все время находитесь с права от нее и в конечном итоге пришли в исходную точку, то значит вы находитесь в это регионе. Гуглить можно по теме Выпуклые оболочки.
  6. Like
    Kitty отреагировална x11 в Удаленное подключение к базе данных с помощью мобильного приложения   
    Для подключения к Firebird нужна клиентская библиотека.
    Взять можно здесь https://firebirdsql.org/en/firebird-3-0/
    в папке \lib
  7. Like
    Kitty отреагировална Brovin Yaroslav в Приведение типа - as   
    Если посмотреть, что вызывается под капотом для случая с интерфейсами, то можно увидеть:
    1. Для вызова Interface1(Instance), вызывает системный метод _IntfCopy, который по сути не проверяет типы, а просто увеличивает счетчик типов. Такое приведение типов не проверяет типы, а просто копирует указатель а реализацию.
    procedure _IntfCopy(var Dest: IInterface; const Source: IInterface); {$IFDEF PUREPASCAL} var P: Pointer; begin P := Pointer(Dest); if Source <> nil then Source._AddRef; Pointer(Dest) := Pointer(Source); if P <> nil then IInterface(P)._Release; end; {$ELSE} 2. При использовании оператора as будет вызван _IntfCast, который выполняет честное приведение типов через QueryInterface. Поэтому в этом случае вы получите на выходе честный указатель на таблицу интерфейса, если интерфейс поддерживается объектом.
    procedure _IntfCast(var Dest: IInterface; const Source: IInterface; const IID: TGUID); {$IF defined(PUREPASCAL) or defined(PIC)} // PIC: EBX must be correct before calling QueryInterface var Temp: Pointer; begin if Source = nil then Dest := nil else begin Temp := nil; if Source.QueryInterface(IID, IInterface(Temp)) <> 0 then ErrorAt(byte(reIntfCastError), ReturnAddress) else begin if Assigned(Dest) then Dest._Release; Pointer(Dest) := Temp; end; end; end;  
  8. Like
    Kitty отреагировална Alex7wrt в Новые требования на Google Play   
    Здесь речь идёт о значении targetSDK в файле манифеста. Этот параметр влияет на то,  использует ли приложение новые функции последних версий SDK. То есть какие SDK приложение гарантированно поддерживает. Но если сейчас этому параметру разработчик может в принципе придавать любые значения, то со второй половины этого года Google вводит правило, что он должен быть не ниже предпоследней версии. То есть если сейчас последняя версия равна 27, значит этот параметр должен быть с августа не ниже 26 для новых приложений, а с ноября для обновлений. В дальнейшем раз в год по мере выхода новых версий Android нужно повышать это значение на 1. Так Google побуждает разработчиков использовать функции новых версий SDK.
    Чтобы соответствовать этим требованиям, нужно обновлять значение параметра TargetSDK в файле манифеста, и все будет норм.
  9. Like
    Kitty отреагировална x11 в Перехват события звонка   
    1. Там нужно заменить Activity на Context везде. И тогда можно использовать в сервисах.
    2. В NextGen нельзя использовать Destoy напрямую, поэтому код destructor TCSBroadcastReceiver.Destroy; нужно убрать, а вместо этого сделать отдельную процедуру для UnregisterReceiver.
     
  10. Like
    Kitty отреагировална Pax Beach в Использование нативных LocalBroadcastManager и BroadcastReceiver   
    StartCommand вызывается каждый раз, когда мы вызываем из приложения StartService.
    А как обрабатывать намерение (Intent) переданный в этот метод — это наше дело.
    У меня в этой команде обрабатывался и старт и стоп.
    Убивать приложение через KillBackgroundProcess не обязательно, это осталось от моего другого приложения, где выгрузить процесс из памяти было критичным.
     
  11. Like
    Kitty отреагировална ENERGY в [Статья]Как создать простой Android Broadcast Receiver. How to implement simplest Android Broadcast Receiver in Delphi   
    Как создать простейший Android Broadcast Receiver.
    Создайте класс, для приема Intent уведомлений:
     
    uses Androidapi.JNIBridge, Androidapi.JNI.Embarcadero, Androidapi.JNI.GraphicsContentViewText; type TMyReceiver = class(TJavaLocal, JFMXBroadcastReceiverListener) public constructor Create; procedure onReceive(context: JContext; intent: JIntent); cdecl; end; uses Androidapi.Helpers, Androidapi.JNI.JavaTypes; { TMyReceiver } constructor TMyReceiver.Create; begin inherited; end; procedure TMyReceiver.onReceive(context: JContext; intent: JIntent); begin Log.d('Broadcast Received = ' + JStringToString(intent.getAction)); end;  
    Регистрируем тип уведомлений и приемник в событиях формы:
     
    type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { private } FMyListener: TMyReceiver; FBroadcastReceiver: JFMXBroadcastReceiver; public { public } end; procedure TForm1.FormCreate(Sender: TObject); var Filter: JIntentFilter; begin FMyListener := TMyReceiver.Create; FBroadcastReceiver := TJFMXBroadcastReceiver.JavaClass.init(FMyListener); Filter := TJIntentFilter.JavaClass.init; Filter.addAction(TJIntent.JavaClass.ACTION_SCREEN_OFF); Filter.addAction(TJIntent.JavaClass.ACTION_SCREEN_ON); TAndroidHelper.context.getApplicationContext.registerReceiver (FBroadcastReceiver, Filter); end; procedure TForm1.FormDestroy(Sender: TObject); begin TAndroidHelper.context.getApplicationContext.unregisterReceiver (FBroadcastReceiver); end; Все.
    Теперь когда вы запустите программу и выключите\включите экран, лог покажет :
    FMX: BroadcastSample: Broadcast Received = android.intent.action.SCREEN_OFF FMX: BroadcastSample: Broadcast Received = android.intent.action.SCREEN_ON Takashi Yamamoto
  12. Like
    Kitty отреагировална x11 в [Статья]Как создать простой Android Broadcast Receiver. How to implement simplest Android Broadcast Receiver in Delphi   
    Вот, что у меня получилось http://fire-monkey.ru/topic/4723-служба-перехват-номера/
    Покритикуйте, пожалуйста.
     
  13. Like
    Kitty отреагировална x11 в XML   
    здесь есть примеры
    http://docwiki.embarcadero.com/CodeExamples/Berlin/en/Code_Examples_by_Functionality#Xml.XMLDoc
  14. Like
    Kitty отреагировална krapotkin в [Android]как бороться с ShowMessage?   
    реально, столкнувшись с проблемами, я перешел к использованию собственных окон. просто пустая форма, в которой ректангл и все остальное. тогда не надо ждать когда пофиксят (никогда)
  15. Like
    Kitty отреагировална Евгений Корепов в Нет анимации в ChangeTabAction   
    Вот моя процедура переключения, все легко и просто:
    procedure TFormMain.SetActiveTab(ATabControl : TTabControl; ATabItem : TTabItem; ATransition : Boolean); Var ATabTransitionDirection : TTabTransitionDirection; ATabTransition : TTabTransition; begin if ATabControl.TabIndex = ATabItem.Index Then Exit; if ATransition then ATabTransition:=TTabTransition.Slide Else ATabTransition:=TTabTransition.None; if ATabControl.TabIndex < ATabItem.Index Then ATabTransitionDirection:=TTabTransitionDirection.Normal Else ATabTransitionDirection:=TTabTransitionDirection.Reversed; ATabControl.SetActiveTabWithTransition(ATabItem,ATabTransition,ATabTransitionDirection); end;  
  16. Like
    Kitty отреагировална ENERGY в Application for Windows CE   
    Зачем оно надо если сейчас ни одного нового телефона не выпускается с ОС Windows Phone (бывшая Win Mobile) и даже MS недавно перестала поддерживать Windows Phone. 
    https://itc.ua/news/microsoft-prekratila-podderzhku-windows-phone/
     
    Microsoft уходит с рынка мобильных ОС,
  17. Like
    Kitty отреагировална gonzales в Пуши в IOS   
    Еще доп. накину на вентилятор, вдруг кому пригодится. Чтобы в iOS появилась наклейка с цифрой на иконке программы нужно добавить в JSON запроса пуша в объект notification пару badge=цифра
  18. Like
    Kitty отреагировална Brovin Yaroslav в Изменение стиля TfgActivityDialog №2   
    Судя по официальной доке по кастомизации диалога: https://developer.android.com/guide/topics/ui/dialogs.html?hl=ru#CustomLayout нужно именно создать тему, а не стиль. 
    В приведенной тобой ссылке стиль применяется не к диалогу, а к контенту, что не гибко с точки зрения кастомизации, так как прозрачность диалога задается на уровне кода, а не стиля.
    Надо посмотреть тут: http://developer.alexanderklimov.ru/android/theme.php про темы в андроиде. И попробовать сделать именно тему со стилем диалога. И потом ее уже применить. Это должно сработать.
  19. Thanks
    Kitty отреагировална Andrey Efimov в Два вопроса касательно работы MultiView   
    Пользуемся сначала поиском (или заходим в нужный раздел и просматриваем темы)...
    [TMultiView] Как избежать задержки при первом появлении TMultiView?
  20. Thanks
    Kitty отреагировална Brovin Yaroslav в List of new features and customer reported issues fixed in RAD Studio 10.2 Tokyo Release 2   
    Прочитать всю новость целиком на сайте Embarcadero
  21. Like
    Kitty получил реакцию от Roman V в Программа не запускается под Android   
    #include <System.IniFiles.hpp> #include <System.IOUtils.hpp> #include <memory> //**** #ifdef __ANDROID__ String path = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetSharedDownloadsPath(), L"options.ini"); #elif _Windows String path = System::Ioutils::TPath::Combine(ExtractFilePath(ParamStr(0)), L"options.ini"); #endif if(FileExists(path)) { std::unique_ptr<TIniFile> FileINI(new TIniFile(path)); String ip = FileINI->ReadString(L"HOST", L"ip", L"127.0.0.1"); //**** 1. std::unique_ptr используется чтобы избавиться от delete. std::unique_ptr все делает сам.
    2. Файл ini для Андроида надо сохранить в UTF-8.
  22. Thanks
    Kitty получил реакцию от WebPuper в Открыть ссылку   
    Дополнительно найдено:
    #if defined(__ANDROID__) #include <Androidapi.JNI.JavaTypes.hpp> #include <Androidapi.JNI.GraphicsContentViewText.hpp> #include <Androidapi.JNI.Net.hpp> #include <Androidapi.Helpers.hpp> #include <FMX.Helpers.Android.hpp> #elif defined(__APPLE__) #include <iOSapi.Foundation.hpp> #include <Macapi.Helpers.hpp> #include <FMX.Helpers.iOS.hpp> #elif defined(MSWINDOWS) #include <shellapi.h> endif bool __fastcall OpenURL(const String &AURL) { #if defined(__ANDROID__) _di_JIntent Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW, TJnet_Uri::JavaClass->parse(StringToJString(AURL))); try { SharedActivity()->startActivity(Intent); return true; } catch (const Exception &) { return false; } #elif defined(__APPLE__) _di_NSURL NSU = StrToNSUrl(AURL); if (SharedApplication()->canOpenURL(NSU)) return SharedApplication()->openURL(NSU); else return false; #elif defined(MSWINDOWS) SHELLEXECUTEINFOW sei = {0}; sei.cbSize = sizeof(sei); sei.lpFile = AURL.c_str(); sei.nShow = SH_SHOWNORMAL; return ShellExecuteEx(&sei); #else return false; #endif } void __fastcall TForm1::Text1Click(TObject *Sender) { OpenURL(L"http://fire-monkey.tu"); }  
  23. Like
    Kitty отреагировална enatechno в TEdit с автозавершением   
    Пользуйтесь поиском на сайте.
    У TMS есть еще такой вариант TTMSFMXEdit. Но он платный
  24. Like
    Kitty отреагировална enatechno в Программа не запускается под Android   
    Думаю, для Windows предпочтительнее использовать GetDocumentsPath(), т.к.:
    1). как правило, exe-файл лежит в папке находящейся в Program Files и для записи ini-файла рядом с exe понадобятся права администратора;
    2). если работа ведется с разных рабочих столов, то каждый пользователь сможет иметь индивидуальные настройки, хранящиеся в ini-файле
  25. Like
    Kitty получил реакцию от enatechno в Программа не запускается под Android   
    #include <System.IniFiles.hpp> #include <System.IOUtils.hpp> #include <memory> //**** #ifdef __ANDROID__ String path = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetSharedDownloadsPath(), L"options.ini"); #elif _Windows String path = System::Ioutils::TPath::Combine(ExtractFilePath(ParamStr(0)), L"options.ini"); #endif if(FileExists(path)) { std::unique_ptr<TIniFile> FileINI(new TIniFile(path)); String ip = FileINI->ReadString(L"HOST", L"ip", L"127.0.0.1"); //**** 1. std::unique_ptr используется чтобы избавиться от delete. std::unique_ptr все делает сам.
    2. Файл ini для Андроида надо сохранить в UTF-8.
×
×
  • Создать...