Доска почета


Popular Content

Showing most liked content since 16.02.2017 Во всех областях

  1. Ссылка: http://blog.rzaripov.kz/2017/02/firebase-android-ios.html Автор: Зарипов Равиль @ZuBy Описание: Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS
    10 likes
  2. 3 likes
  3. У стандартного TListView уже все есть: //устанавливаем режим редактирования у списка либо в редакторе свойств выставляем ListView1.EditMode := True; //... //Получаем список всех выбранных элементов ListView1.Items.CheckedIndexes(true); //обращаться к свойству текущего элемента так: ListView1.Items.SetChecked(const Index: Integer; const Value: Boolean); ListView1.Items.GetChecked(const Index: Integer): Boolean;
    3 likes
  4. от души рекомендую заменить TJSONObject на XSuperObject https://github.com/onryldz/x-superobject код будет таким примерно uses XSuperObject; ... procedure TForm1.b1Click(Sender: TObject); var x:ISuperObject; arr:ISuperArray; str:string; begin X:=TSuperObject.Create(); X.S['jsonrpc'] := '2.0'; X.S['method'] := 'get_accounts'; X.I['id'] := 1; arr:=TSuperArray.Create(); arr.Add('captain'); X.A['params']:=arr; ... str:=X.AsJSON(); ... но для начала вам нужно убедиться, что для правильного запроса правильный ответ. ваша строка с образцом не совпадает только в id у вас это строка, а в приведенных примерах - число. может, в этом проблема h:=THTTPClient.Create(); // h.Accept := 'application/json' // h.AcceptCharSet := 'UTF-8'; src:=TStringStream.Create('{"jsonrpc":"2.0","method":"get_accounts","id":1,"params":["captain"]}'); res:=TStringStream.Create(); resp:=h.Post(URL,src,res); if resp.StatusCode=200 then begin ShowMessage('Ответ'+sLineBreak+res.DataString); end; FreeAndNil(h); FreeAndNil(res); FreeAndNil(src); так же может быть, нужно правильно указывать кодировку запроса-ответа и другие заголовки HTTP проверьте этот код. а потом уже делайте JSON любым способом
    3 likes
  5. Самый простой вариант - нарисовать в обычном графическом редакторе нужный прямоугольник с дыркой и сохранить его в png. Сложный вариант копать сторону TPath - - по факту это SVG формат, векторная графика. Можно сделать вот как на видео (обвести иконки, создать path и закинуть SVG данные вTPath). Только вот я не знаю в какой программе это делать, если узнаете подскажите тоже в этой теме. http://www.webdelphi.ru/2012/04/firemonkey-2/
    2 likes
  6. Вот вам гадание на кофейной гуще (в след. раз, предоставьте логи): 1) Перепроверить Deployment, в идеале сбросить всё на Default (кнопка Revert to Default в Deployment) и попробовать запустить. Если запустится, то постепенно добавлять файлы в деплоймент, так выясните из-за какого файла косяк. (p.s. Очень-очень давно сталкивался с такой проблемой, косяк был в файле манифесте, который оказался повреждённым). В случае с манифестом, могли скобку где-то не закрыть или ещё что-то сделать. 2) Вместе с первым шагом делать Clean у проекта в Project Manager 3) На всякий случай, добавить параметр " -cleaninstall" в меню "Run -> Parameters:Parameters" 4) Проверить на других устройствах 5) Самый жёсткий вариант, очистить папку с файлами проекта от всех файлов, кроме .dpr; .fmx; .dproj; .pas. Открыть проект и перепроверить всё необходимое для проекта, попробовать запустить. Из студии, apk заливается через ADB. ADB сильно расширяет все возможности по управлению устройством, например установка приложения без проверки разрешений в манифесте или копирование файла из закрытой директории и т.д.
    2 likes
  7. обязательно делать разные проекты на ios, т.к. при отправке пушей пакет указывается (два одинаковых пакета не может быть на одном устройстве) Для андроид возможно сделать скорей всего, но смысла не вижу никакого
    2 likes
  8. 1) нужно пилить сервис, а вариант с AlarmManager не подойдёт? только не для приложения, а для сервиса 2) если особо не заморачиваться с БД (сразу отсылать на сервер или sqlLite), то можно в JSON 3) для сервисов да и вообще у ембы есть нативные реализации T(Net)HTTPClient
    2 likes
  9. Создал https://quality.embarcadero.com/browse/RSP-16910 по этой проблеме. Надеюсь разработчики что то подскажут.
    2 likes
  10. Андрей Ефимов, мое персональное вам спасибо и почтение, счастье и здоровье в комплекте! Без вас Delphi сообщество многое бы потеряло.. Насчет склеивания dex файлов, судя по коммандной строке в батнике, dex файлы можно склеивать просто указав их пути - к примеру, в ней указано сразу 3 файла classes.dex (который может лежать тут, это может быть какой нибудь предыдущий dex файл) test_classes.dex и classes.dex от Embarcadero. java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger %PROJ_DIR%\output\dex\classes.dex %PROJ_DIR%\output\dex\test_classes.dex %EMBO_DEX% Еще один ньюанс о котором я забыл, и промучился пол дня переименовывая проект 10 раз т.к. выскакивали разные ошибки. А переименовывать его нужно было, потому что - андроид запоминал битый пакет и не давал его ставить по новой. Не забудьте в Deployment при добавлении classes.dex поставить напротив него в колонке Remote Path строчку "classes\"! Иначе будет Unable to create process: Unable to install '<APK file>'. Failure [INSTALL_FAILED_DEXOPT] Также есть оф. инструкция: Using a Custom Set of Java Libraries In Your RAD Studio Android Apps
    2 likes
  11. Вроде там все просто, не запутанно. https://community.embarcadero.com/blogs/entry/timagelistxe8ru
    2 likes
  12. Прикладывайте к таким сообщениям скрины. Планшеты есть не у всех. Можно попробовать покрасить форму в чёрный цвет, на форму кинуть, например, TPanel (или TRectangle) с необходимыми размерами, выравниванием по центру и уже в него вставлять все остальные компоненты.
    2 likes
  13. На Андроиде, главная форма всегда растягивается на весь экран (если точнее, то на размеры Активити), задать ей определённый размер нельзя.
    2 likes
  14. Анимацию и эффекты можно добавлять прямо в стиль, и события назначать тут же через триггеры.
    2 likes
  15. мы в чатике провели небольшое расследование. получилось что ресурсы на мобильных (на андроиде точно) сделаны для совместимости кода, т.к. даже если вы добавите в ресурсы файл, он все равно окажется в деплойменте и доступ будет и через TResourceStream и по пути. тест был такой 1) Новый проект 2) Project - Resources and Images 3) добавляем файл (camera_1x.png) 4) компилируем на андроид устройство 5) проверяем оба варианта procedure TForm1.Button1Click(Sender: TObject); var ResourceStream: TResourceStream; begin ResourceStream := TResourceStream.Create(hInstance, 'camera', RT_RCDATA); try ResourceStream.Position := 0; Image1.Bitmap.LoadFromStream(ResourceStream); finally FreeAndNil(ResourceStream); end; end; procedure TForm1.Button2Click(Sender: TObject); begin Image1.Bitmap.LoadFromFile(TPath.Combine (TPath.GetDocumentsPath, 'camera_1x.png')); end; в deployment'е наш файлик
    2 likes
  16. Andrey Efimov Там еще нужно все пути скомбинировать в один путь, плюс если путь сложный - он будет неправильно отображен (Tpath срежет часть данных), нужно его упростить (Simplify) krapotkin Плюс векторных иконок в том, что они масштабируются без квадратиков и размытия. Остаются четкими всегда при любом размере. Хотя согласен иконки лучше оставить в png, но какие то символические картинки большого размера, имхо лучше в векторе. Еще один плюс, цвет заливки и рамки можно менять в RunTime - иконки могут быть любого цвета, всего лишь указать Fill Color и Stroke Color. А ведь еще можно и анимацию сделать.
    1 like
  17. события нет, нужно переопределить оконную процедуру и там ловить сообщение WM_SIZE (если не ошибаюсь)
    1 like
  18. 1 like
  19. Согласен. Добавлю только, что суммарно у 10.x и 9.x охват в 94% - думаю, версии ниже перечисленных проверять уже просто бессмысленно.
    1 like
  20. вот вам код. бессмысленный ессно но прямо с мобилы type TMyClass=class s:string; end; procedure TForm1.b1Click(Sender: TObject); var l:TObjectList<TMyClass>; begin l:=TObjectList<TMyClass>.Create; l.add(TMyClass.Create); l.add(TMyClass.Create); end;
    1 like
  21. Хм. Поменял у второго label= MyNewName и второй проект действительно пропал и перезаписался с новым именем. Ingalime, вам проще переименовать проект, нажав F2 вот тут:
    1 like
  22. для AppStore нужна 64 bit версия (с включенной опцией Universal binary file) у меня стоит sdk 10, работает на IOS 9.3.5 и выше, ниже не проверял
    1 like
  23. Обратите внимание на Build Configuration(Release/Debug), где вы заполнили и какой выбран
    1 like
  24. настройки (Version Info) одинаково заполнили для 32/64? включили опцию universal binary file?
    1 like
  25. SDK в среду подтянул? http://cc.embarcadero.com/Item/30680
    1 like
  26. Возможно, причина как раз в этом. Восьмой XCode не гарантирует работу с 10.2, о чем честно пишет в окне Devices при подключении устройства. Требуется обновить XCode и установить hotfix для PAServer. Альтернативный вариант, который я использовал до появления hotfix: запустить XCode - Windows - Devices - выбрать подключенное устройство, нажать "+", найти сформированный ipa-файл (в первую очередь он деплоится именно в эту папку, и только потом копируется на комп с IDE и на устройство) и выбрать его. Путь, по которому лежит ipa на маке - сейчас не подскажу, завтра утром могу глянуть.
    1 like
  27. для http есть THttpClient для остальных протоколов только indy
    1 like
  28. Я бы не пользовался упаковщиками исполняемых файлов, т.к. размер самого файла уменьшается, а вот оперативной памяти такой упакованный файл начинает жрать в 2-3 раза больше.
    1 like
  29. скорей всего стили платформенные win7style RCDATA "styles\platform\win\Win7.fsf" win8style RCDATA "styles\platform\win\Win8.fsf" win10style RCDATA "styles\platform\win\Win10.fsf" 32761 CURSOR "Controls_cur32761.cur" 32762 CURSOR "Controls_cur32762.cur" 32763 CURSOR "Controls_cur32763.cur" 32766 CURSOR "Controls_cur32766.cur" 32767 CURSOR "Controls_cur32767.cur" сейчас (Seattle/Berlin) такие платформ-стили на Win
    1 like
  30. Ускорить вы можете только выбором Release конфига, если он не стоит
    1 like
  31. Можете попробовать что-нибудь извлечь из https://community.embarcadero.com/blogs/entry/xe5-165 Но в общем присоединяюсь в своём недоумении к Равилю.
    1 like
  32. Яндекс переводчик вроде как по-лучше с этим справляется :o)
    1 like
  33. 1 like
  34. 1 like
  35. не совсем понимаю выбор FMX, если Вам кросс не нужен. делайте на VCL. В FMX только один хэндл, и сообщения винапи обрабатываются криво, не мучайтесь, пишите на VCL
    1 like
  36. Спасибо, приятно слышать :). А конечный файл нормальный получается? по размерам и по работоспособности? По размерам должен получиться на несколько КБ больше, чем основной classes.dex приложения. Ага, поэтому, я в каждой статье связанной с classes.dex пишу об этом
    1 like
  37. вот нашёл ответ в примере Embarcadero\Studio\18.0\Samples\CPP\Mobile Snippets\AndroidIntents\SendIntent\ if (MainActivity()->getPackageManager()->queryIntentActivities(intent, TJPackageManager::JavaClass->MATCH_DEFAULT_ONLY)->size() > 0) { MainActivity()->startActivity(intent); } else { ShowMessage("Receiver not found"); }
    1 like
  38. 1) Откройте bat файл 2) найдите строку, которая начинается на "javac" (примерно 19) если файл из статьи, то выглядит вот так: javac %VERBOSE_FLAG% -Xlint:deprecation и т.д. замените на javac -source 1.7 -target 1.7 %VERBOSE_FLAG% -Xlint:deprecation Если не получится, то замените цифры на 1.6. (т.е. вам надо добавить -source 1.7 -target 1.7 сразу после javac) 3) Отпишитесь о результате.
    1 like
  39. 1 like
  40. в делфи нельзя сделать такое с формой, но можно сделать на фрейме и вставить по центр (в какой-нить TLayout)
    1 like
  41. В далёком 2013 переводил эту заметку, читать тут: Создание выпадающего меню в приложении на Android
    1 like
  42. Посмотрите пример по вашей задаче: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\User Interface\Forms
    1 like
  43. Спасибо Равиль! По факту используется ListBox. В случае TCustomPopover и TCustomListPicker все равно придется (проще всего) его использовать. Самый простой варинат, как уже написал Равиль, TMultiView с режимом Popover. Как это сделать вручную без TMultiView пошагово: https://community.embarcadero.com/blogs/entry/creating-an-overflow-menu-on-android-463 На случай если статья пропадет: Также этот же вариант описан в бесплатной книге в главе Create an Overflow Menu
    1 like
  44. 1 like
  45. В ОС есть специальные сервисы которые делают "подписку" вашего приложения на уведомления. Нам же из проекта нужно просто дать им понять, что мы хотим получать уведомления. Если запущено, то уведомление сразу поступает в приложение Если не запущено, то отображается в шторке
    1 like
  46. из деплоймента вытаскивает файлы в нужные папки, не трогайте этот модуль
    1 like
  47. Вот пример как у меня идет добавление в архив используя zip в MacOS: function ZipAdd(AArchName, AFileName: String): boolean; {$IFDEF MACOS} var s, sRoot, sFileName, sArchName: String; {$ENDIF} begin Result := False; {$IFDEF MACOS} try if DirectoryExists(AFileName) then begin if AFileName[AFileName.Length] = PathDelim then System.Delete(AFileName, AFileName.Length, 1); sRoot := ExtractFilePath(AFileName); AFileName := AFileName.Remove(0, sRoot.Length); s := Format('pushd "%s"; zip -r "%s" "%s"; popd', [sRoot, AArchName, AFileName]); _system(PAnsiChar(UTF8String(s))); end else begin s := Format('zip -j "%s" "%s"', [AArchName, AFileName]); _system(PAnsiChar(UTF8String(s))); end; Result := FileExists(AArchName); except Result := False; end; {$ENDIF} end; Замените зиповские команды архивирования на раровские разархивирования, добавьте необходимую Вам логику и наслаждайтесь
    1 like
  48. Для мобильных есть (не)визуальные нативные компоненты TCustomPopover - http://docwiki.embarcadero.com/Libraries/Berlin/en/FMX.MultiView.Types.TCustomPopover TCustomListPicker - http://docwiki.embarcadero.com/Libraries/Berlin/en/FMX.Pickers.TCustomListPicker TMultiView с режимом Popover TfgActionSheet - http://fire-monkey.ru/topic/3173-rx-fgx-описание-версии-071118/
    1 like
  49. Так не устраивает? procedure TFormMain.sbSelectFolderClick(Sender: TObject); var PathFolder: string; begin if SelectDirectory('Выбор папки...', '', PathFolder) then ePathFolder.Text := PathFolder; end; SelectDirectory
    1 like
  50. ImageList1.Bitmap(Size, Index); Возвращает картинку растянутую до указанного размера. Размер указывается в физических пикселях, т.е. учитывать масштаб надо самостоятельно (этот метод ни чего не знает о масштабе канвы). При этом выбирается наиболее подходящая по размеру картинка из тех, что имеется. Есть еще ImageList1.Draw который рисует на канве картинку. Там учитывается масштаб канвы. Т.е. если указали прямоугольник 16x16 а TCanvas.Scale = 2, то будет выбрана картинка 32x32 если имеется. >> практически полное управление всеми элементами Очевидно, в ImageList вы можете самостоятельно управлять всеми элементами иначе каким образом туда попадают данные из редактора. Может поможет статья. >> скажем пихать полученные битмапы в ListView Не пробовали посмотреть демку что ли? Там есть добавление пунктов в ListView в Run-Time C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\User Interface\ImageList\ImageListDemo.dpr
    1 like
This leaderboard is set to Москва/GMT+03:00