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

zairkz

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

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

  • Посещение

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

    12

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

  1. Like
    zairkz отреагировална Brovin Yaroslav в [Android] [XE7] Как получить GPS координаты без компонента?   
    Добрый вечер,
     
    Можно задействовать сенсоры из RTL напрямую:
    Запросить менеджер сенсоров System.Sensors.TSensorManager.Current; Запросить у менеджера сенсоров список сенсоров по категории TSensorCategory.Location  TSensorManager.GetSensorsByFilter Выбрать из списка сенсоров необходимый. Проверив, доступные свойства TCustomLocationSensor.AvailableProperties, которые каждый может выдавать и другие характеристики сенсоров. Работать на прямую с выбранным сенсором локации TCustomLocationSensor P.S. Но по сути вы получите тот же объект, что и в компоненте TLocationSensor.Sensor. Правда без использования непосредственно компонента.
  2. Like
    zairkz отреагировална #WAMACO в Кнопка параллелограмм   
    так делайте это сразу в редакторе StyleBook, а не на форме!
  3. Like
    zairkz отреагировална Alexander в Какие статьи вы хотели бы видеть в блогах?   
    Создание сложных стилей с привязкой к создаваемым пользовательским классам. Заполнение интерфейса DisignTime и RealTime.
  4. Like
    zairkz отреагировална Andrey Efimov в [Android]Каталог, вывод в 2-3 колонки   
    Отдельную тему создавайте (в правилах ясно указано: одна тема-один вопрос), здесь обсуждается другая тема.
  5. Like
    zairkz отреагировална krapotkin в listBoxItem управление цветом   
    да, если строк > 10 listBox сразу идет в топку
    положить в ListViewItem все нужные компоненты вообще не очень сложно
    при этом главное помнить что в FMX можно вкладывать что хочешь куда попало!
    и совсем не обязательно использовать уже положенные туда Text Detail и т.д.
  6. Like
    zairkz отреагировална walexw в listBoxItem управление цветом   
    zairkz, большое спасибо за развернутый ответ! Буду переваривать. Думаю пригодится не только мне.
    Для Крапоткина: тоже большое спасибо, учту ваши советы.
  7. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в listBoxItem управление цветом   
    На ListView скролл значительно лучше и без лагов, и вообще очень мощный компонент, все равно, рано или поздно вы откажетесь от ListBOX.
    Кнопку можно разместить стандартным способам в настройках самой ListView. Если же вам нужно сто кнопок в одном Итеме, тогда да придется чуток заморочиться. 
     
    Во первых надо в настройках ListView в ItemAppearance включить ImageListItemBottomDetailRightButton.
    Далее в ItemAppearanceObjects -> ItemObjects можете указывать любые настройки, через PlaseOffset.X - Y перемещать текст и детайл текст как хотите и куда хотите, тоже самое с картинкой и кнопкой, менять цвета и шрифты.
    Можете повесить обработчик в свойствах на OnItemClick, а также нажатие на саму кнопку OnButtonClick.
    При заполнении Item'ам присваивайте Tag и по ним ориентируйтесь. 
    Далее для покраски Item'ов подключите Хелпер Zuby(все таки не хелпер, а измененный исходник TListView) FMX.ListView.zip, пропишите пару процедур:
     
    procedure myDefaultItemColor(const aLV: TListView; const aItemIndex: integer; const aUseCustomColor: Boolean = false);
    begin   with aLV.Items[aItemIndex] do   begin     Data['aUseCustomColor'] := aUseCustomColor;   end; end;   /// <summary> устанавливаем кастомный цвет для Item'a </summary> procedure myCustomItemColor(const aLV: TListView; const aItemIndex: integer; const aCustomColor: TAlphaColor;   const aUseCustomColor: Boolean = true); begin   with aLV.Items[aItemIndex] do   begin     Data['aUseCustomColor'] := aUseCustomColor;     Data['aCustomColor'] := aCustomColor;   end; end;   Далее к примеру заполняем ListView  ListViewPoisk.BeginUpdate;   for i := 0 to 15 do   begin     ListViewPoisk.Items.Insert(0);     ListViewPoisk.Items[0].Tag := i;     ListViewPoisk.Items[0].Text := 'X_text';     ListViewPoisk.Items[0].Detail := 'X_detail';     ListViewPoisk.Items[0].ButtonText := 'X_buttext';     ListViewPoisk.Items[0].Data['offer'] := 0; //Если нужно хранить не отображаемые данные.     ListViewPoisk.Items[0].Bitmap.Assign(Image1.Bitmap);     if i mod 2 = 0 then        myCustomItemColor(ListViewPoisk, ListViewPoisk.Items[0].Index, TAlphaColors.Lime);     // TAlphaColors.Lime можно заменить TAlphaColorF.Create(70 / 255, 130 / 255, 180 / 255, 155 / 255).ToAlphaColor;   end;   ListViewPoisk.EndUpdate;
  8. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в [Android]Каталог, вывод в 2-3 колонки   
    На ListView будет достаточно сложно это реализовать.
    Попробуйте TPresentedScrollBox и элементы стиля.
    Стиль нужен: к примеру:
    Вам необходимо фиксированные размеры панелек, например глобальные переменные
      ObjectHeight := 205;
      ObjectWidth := 160;
      PanHeight := 200;
      PanWidth := 148;
    Затем вычислить количество колонок на FormResize, тоже глобальные пр.
     
    procedure TForm_main.FormResize(Sender: TObject);
    begin
      PrColumns := Floor(Form_main.ClientWidth / ObjectWidth);
      AllMargins := (Form_main.ClientWidth - (PrColumns * PanWidth)) / (PrColumns + 1);
    end;
     
    Процедура заполнения, здесь только создания панелей в скроллбоксе, я использовал обычный button в виде панельки
    procedure TForm_main.LoadObject();
    var
      x, i: integer;
      LT: TLayout;
      Butt: TButton;
    begin
      x := 0;
      for i := 0 to OBJ.Count - 1 do
      begin
          if x mod PrColumns = 0 then
          begin
            LT := TLayout.Create(PresentScrolBox);
            LT.Parent := PresentScrolBox;
            LT.Position.y := PresentScrolBox.ContentBounds.Height + 100;
            LT.Align := TAlignLayout.Top;
            LT.Height := ObjectHeight;
            LT.HitTest := false;
          end;
     
          Butt:= TButton.Create(LT);
          Butt.Parent := LT;
          Butt.Position.x := LT.Width;
          Butt.Height := PanHeight;
          Butt.Width := PanWidth;
          Butt.Align := TAlignLayout.Left;
          Butt.Margins.Top := (ObjectHeight - PanHeight) / 2;
          Butt.Margins.Bottom := (ObjectHeight - PanHeight) / 2;
          Butt.Margins.Left := AllMargins;
          Butt.StyleLookup := 'buttonx';
          Butt.text := '';
          Butt.tag := 55; //Пример
          Butt.TextSettings.WordWrap := True;
          Butt.OnTap := Form_main.ButObjTap;
    {$IFDEF MSWINDOWS}
          Butt.OnClick := Form_main.ButtObjectClick;
    {$ENDIF}
          Butt.OnApplyStyleLookup := Form_main.ObjectStyle;
          x := x + 1;
        end;
      end;
      LT := TLayout.Create(SB_Object);
      LT.Parent := SB_Object;
      LT.Position.y := SB_Object.ContentBounds.Height + 100;
      LT.Align := TAlignLayout.Top;
      LT.Height := 72;
    end;
     
    После создания заполнять данными необходимо в Butt.OnApplyStyleLookup := Form_main.ObjectStyle;
    procedure TForm_main.ObjectStyle(Sender: TObject);
    var
      i: integer;
    begin
      for i := 0 to 9 do
        if TButton(Sender).tag=i then
        begin
          TButton(TButton(Sender).FindStyleResource('btn_add')).tag := i;
          // TButton(TButton(Sender).FindStyleResource('btn_add')).text := ‘+’;
          TButton(TButton(Sender).FindStyleResource('btn_add')).OnClick := Form_main.But_Main_Add;
          TText(TButton(Sender).FindStyleResource('text')).text := 'i = '+inttostr(i);
          TText(TButton(Sender).FindStyleResource('obj_price')).text := ‘500’;
          TImage(TButton(Sender).FindStyleResource('img')).Bitmap.Assign(Какой нибудь битмап);
          break;
        end;
    end;
     
    Желательно данные и картинки загрузить сперва в Record, затем заполнять их в OnApplyStyleLookup.
    ХЗ может подойдет вариант, на слабых телефонах лагов не много, но и ListView на слабых подлагивает.
     
    Как вариант старое наше с Zuby приложение по доставке еды Gepard, не судите строго мы его забросили): https://play.google.com/store/apps/details?id=kz.vbaze.Gepard

     
     
     
  9. Like
    zairkz отреагировална POV в Косяк при показе формы в среде   
    Так, я всё последнее накиданное на форму перенёс на фрейм (через "вырезать-вставить"), который создаётся динамически и опять же на форму помещается. Ошибка перестала выскакивать. В том числе нет ошибки и на показе фрейма.
    Но вопрос остался - что за фигня, куда копать когда это опять неизбежно появится по причине космических флуктуаций?
     
     
    О! Опять началось. Теперь уже для фрейма.
  10. Like
    zairkz отреагировална Andrey Efimov в [Android]Каталог, вывод в 2-3 колонки   
    Тема создана по просьбе Mantikor
    Сообщения перенесены из темы TListViewHorz
  11. Like
    zairkz получил реакцию от walexw в listBoxItem управление цветом   
    На ListView скролл значительно лучше и без лагов, и вообще очень мощный компонент, все равно, рано или поздно вы откажетесь от ListBOX.
    Кнопку можно разместить стандартным способам в настройках самой ListView. Если же вам нужно сто кнопок в одном Итеме, тогда да придется чуток заморочиться. 
     
    Во первых надо в настройках ListView в ItemAppearance включить ImageListItemBottomDetailRightButton.
    Далее в ItemAppearanceObjects -> ItemObjects можете указывать любые настройки, через PlaseOffset.X - Y перемещать текст и детайл текст как хотите и куда хотите, тоже самое с картинкой и кнопкой, менять цвета и шрифты.
    Можете повесить обработчик в свойствах на OnItemClick, а также нажатие на саму кнопку OnButtonClick.
    При заполнении Item'ам присваивайте Tag и по ним ориентируйтесь. 
    Далее для покраски Item'ов подключите Хелпер Zuby(все таки не хелпер, а измененный исходник TListView) FMX.ListView.zip, пропишите пару процедур:
     
    procedure myDefaultItemColor(const aLV: TListView; const aItemIndex: integer; const aUseCustomColor: Boolean = false);
    begin   with aLV.Items[aItemIndex] do   begin     Data['aUseCustomColor'] := aUseCustomColor;   end; end;   /// <summary> устанавливаем кастомный цвет для Item'a </summary> procedure myCustomItemColor(const aLV: TListView; const aItemIndex: integer; const aCustomColor: TAlphaColor;   const aUseCustomColor: Boolean = true); begin   with aLV.Items[aItemIndex] do   begin     Data['aUseCustomColor'] := aUseCustomColor;     Data['aCustomColor'] := aCustomColor;   end; end;   Далее к примеру заполняем ListView  ListViewPoisk.BeginUpdate;   for i := 0 to 15 do   begin     ListViewPoisk.Items.Insert(0);     ListViewPoisk.Items[0].Tag := i;     ListViewPoisk.Items[0].Text := 'X_text';     ListViewPoisk.Items[0].Detail := 'X_detail';     ListViewPoisk.Items[0].ButtonText := 'X_buttext';     ListViewPoisk.Items[0].Data['offer'] := 0; //Если нужно хранить не отображаемые данные.     ListViewPoisk.Items[0].Bitmap.Assign(Image1.Bitmap);     if i mod 2 = 0 then        myCustomItemColor(ListViewPoisk, ListViewPoisk.Items[0].Index, TAlphaColors.Lime);     // TAlphaColors.Lime можно заменить TAlphaColorF.Create(70 / 255, 130 / 255, 180 / 255, 155 / 255).ToAlphaColor;   end;   ListViewPoisk.EndUpdate;
  12. Like
    zairkz отреагировална Rusland в Android compile   
    Вроде писали, что минимально поддерживаемая версия 4.1
  13. Like
    zairkz отреагировална Rusland в как получить адрес по карте   
    janovskis, почитайте темы в этом же разделе, узнаете много полезного.
    Private FMarkers: TList<TMapMarker>; procedure Tfmain.FormCreate(Sender: TObject); begin FMarkers := TList<TMapMarker>.Create; End; Procedure AddMarker; var mapCenter: TMapCoordinate; MyMarker: TMapMarkerDescriptor; Begin mapCenter := TMapCoordinate.Create(StrToFloat(Lat), StrToFloat(Lon)); MyMarker := TMapMarkerDescriptor.Create(mapCenter, 'Text'); fmain.MapView1.Location := mapCenter; FMarkers.Add(fmain.MapView1.AddMarker(MyMarker)); End;
  14. Like
    zairkz получил реакцию от enatechno в listBoxItem управление цветом   
    На ListView скролл значительно лучше и без лагов, и вообще очень мощный компонент, все равно, рано или поздно вы откажетесь от ListBOX.
    Кнопку можно разместить стандартным способам в настройках самой ListView. Если же вам нужно сто кнопок в одном Итеме, тогда да придется чуток заморочиться. 
     
    Во первых надо в настройках ListView в ItemAppearance включить ImageListItemBottomDetailRightButton.
    Далее в ItemAppearanceObjects -> ItemObjects можете указывать любые настройки, через PlaseOffset.X - Y перемещать текст и детайл текст как хотите и куда хотите, тоже самое с картинкой и кнопкой, менять цвета и шрифты.
    Можете повесить обработчик в свойствах на OnItemClick, а также нажатие на саму кнопку OnButtonClick.
    При заполнении Item'ам присваивайте Tag и по ним ориентируйтесь. 
    Далее для покраски Item'ов подключите Хелпер Zuby(все таки не хелпер, а измененный исходник TListView) FMX.ListView.zip, пропишите пару процедур:
     
    procedure myDefaultItemColor(const aLV: TListView; const aItemIndex: integer; const aUseCustomColor: Boolean = false);
    begin   with aLV.Items[aItemIndex] do   begin     Data['aUseCustomColor'] := aUseCustomColor;   end; end;   /// <summary> устанавливаем кастомный цвет для Item'a </summary> procedure myCustomItemColor(const aLV: TListView; const aItemIndex: integer; const aCustomColor: TAlphaColor;   const aUseCustomColor: Boolean = true); begin   with aLV.Items[aItemIndex] do   begin     Data['aUseCustomColor'] := aUseCustomColor;     Data['aCustomColor'] := aCustomColor;   end; end;   Далее к примеру заполняем ListView  ListViewPoisk.BeginUpdate;   for i := 0 to 15 do   begin     ListViewPoisk.Items.Insert(0);     ListViewPoisk.Items[0].Tag := i;     ListViewPoisk.Items[0].Text := 'X_text';     ListViewPoisk.Items[0].Detail := 'X_detail';     ListViewPoisk.Items[0].ButtonText := 'X_buttext';     ListViewPoisk.Items[0].Data['offer'] := 0; //Если нужно хранить не отображаемые данные.     ListViewPoisk.Items[0].Bitmap.Assign(Image1.Bitmap);     if i mod 2 = 0 then        myCustomItemColor(ListViewPoisk, ListViewPoisk.Items[0].Index, TAlphaColors.Lime);     // TAlphaColors.Lime можно заменить TAlphaColorF.Create(70 / 255, 130 / 255, 180 / 255, 155 / 255).ToAlphaColor;   end;   ListViewPoisk.EndUpdate;
  15. Like
    zairkz отреагировална masmat в Push под iOS   
    Завтра-послезавтра тоже начинаю в iOS версии Push делать. Пока для себя оставил вот эту закладочку
    Ссылка 
    Может пригодится.
  16. Like
    zairkz получил реакцию от enatechno в [Android]Каталог, вывод в 2-3 колонки   
    На ListView будет достаточно сложно это реализовать.
    Попробуйте TPresentedScrollBox и элементы стиля.
    Стиль нужен: к примеру:
    Вам необходимо фиксированные размеры панелек, например глобальные переменные
      ObjectHeight := 205;
      ObjectWidth := 160;
      PanHeight := 200;
      PanWidth := 148;
    Затем вычислить количество колонок на FormResize, тоже глобальные пр.
     
    procedure TForm_main.FormResize(Sender: TObject);
    begin
      PrColumns := Floor(Form_main.ClientWidth / ObjectWidth);
      AllMargins := (Form_main.ClientWidth - (PrColumns * PanWidth)) / (PrColumns + 1);
    end;
     
    Процедура заполнения, здесь только создания панелей в скроллбоксе, я использовал обычный button в виде панельки
    procedure TForm_main.LoadObject();
    var
      x, i: integer;
      LT: TLayout;
      Butt: TButton;
    begin
      x := 0;
      for i := 0 to OBJ.Count - 1 do
      begin
          if x mod PrColumns = 0 then
          begin
            LT := TLayout.Create(PresentScrolBox);
            LT.Parent := PresentScrolBox;
            LT.Position.y := PresentScrolBox.ContentBounds.Height + 100;
            LT.Align := TAlignLayout.Top;
            LT.Height := ObjectHeight;
            LT.HitTest := false;
          end;
     
          Butt:= TButton.Create(LT);
          Butt.Parent := LT;
          Butt.Position.x := LT.Width;
          Butt.Height := PanHeight;
          Butt.Width := PanWidth;
          Butt.Align := TAlignLayout.Left;
          Butt.Margins.Top := (ObjectHeight - PanHeight) / 2;
          Butt.Margins.Bottom := (ObjectHeight - PanHeight) / 2;
          Butt.Margins.Left := AllMargins;
          Butt.StyleLookup := 'buttonx';
          Butt.text := '';
          Butt.tag := 55; //Пример
          Butt.TextSettings.WordWrap := True;
          Butt.OnTap := Form_main.ButObjTap;
    {$IFDEF MSWINDOWS}
          Butt.OnClick := Form_main.ButtObjectClick;
    {$ENDIF}
          Butt.OnApplyStyleLookup := Form_main.ObjectStyle;
          x := x + 1;
        end;
      end;
      LT := TLayout.Create(SB_Object);
      LT.Parent := SB_Object;
      LT.Position.y := SB_Object.ContentBounds.Height + 100;
      LT.Align := TAlignLayout.Top;
      LT.Height := 72;
    end;
     
    После создания заполнять данными необходимо в Butt.OnApplyStyleLookup := Form_main.ObjectStyle;
    procedure TForm_main.ObjectStyle(Sender: TObject);
    var
      i: integer;
    begin
      for i := 0 to 9 do
        if TButton(Sender).tag=i then
        begin
          TButton(TButton(Sender).FindStyleResource('btn_add')).tag := i;
          // TButton(TButton(Sender).FindStyleResource('btn_add')).text := ‘+’;
          TButton(TButton(Sender).FindStyleResource('btn_add')).OnClick := Form_main.But_Main_Add;
          TText(TButton(Sender).FindStyleResource('text')).text := 'i = '+inttostr(i);
          TText(TButton(Sender).FindStyleResource('obj_price')).text := ‘500’;
          TImage(TButton(Sender).FindStyleResource('img')).Bitmap.Assign(Какой нибудь битмап);
          break;
        end;
    end;
     
    Желательно данные и картинки загрузить сперва в Record, затем заполнять их в OnApplyStyleLookup.
    ХЗ может подойдет вариант, на слабых телефонах лагов не много, но и ListView на слабых подлагивает.
     
    Как вариант старое наше с Zuby приложение по доставке еды Gepard, не судите строго мы его забросили): https://play.google.com/store/apps/details?id=kz.vbaze.Gepard

     
     
     
  17. Like
    zairkz отреагировална Andrey Efimov в Помогите начать   
    Проблема в поддержке версии Андроид, в данном случае, XE5 не поддерживает разработку приложений под Android 5.
    Как уже сказал Zuby, чтобы разрабатывать под пятый Андроид, необходимо установить более свежую версию RAD Studio. Поддержка появилась с версии XE7 Upd 1, ставьте её, а ещё лучше, сразу последнюю, RAD Studio Seattle и будет вам счастье.
     
    Справка по поддерживаемым версиям Android:
    XE5: http://docwiki.embarcadero.com/RADStudio/XE5/en/Android_Devices_Supported_for_Application_Development
    XE6: http://docwiki.embarcadero.com/RADStudio/XE6/en/Android_Devices_Supported_for_Application_Development
    XE7 (для Android 5, выпущен ап): http://docwiki.embarcadero.com/RADStudio/XE7/en/Android_Devices_Supported_for_Application_Development
    XE8: http://docwiki.embarcadero.com/RADStudio/XE8/en/Android_Devices_Supported_for_Application_Development
    Seattle: http://docwiki.embarcadero.com/RADStudio/Seattle/en/Android_Devices_Supported_for_Application_Development
     
    p.s. Разрабатывать на XE5, самое неблагодарное дело (как вспомню, сколько там багов было, даже в дрожь бросает), переходите на новую версию.
  18. Like
    zairkz отреагировална Mantikor в [Android]Каталог, вывод в 2-3 колонки   
    zairkz, спасибо! Правда оказалось немного не то что мне нужно. Горизонтальный скролл оказывается нужен только вертикальный скролл. Пытаюсь сделать подобие каталога, как на скриншоте. Нужно в зависимости от ширины экрана выводить список товаров в одну/две/три колонки. Только с вертикальным скролом. Пробую через TListView, но что то не получается. Опыта написания для Android можно сказать нет, весь опыть - написание БД, много лет назад. Буду благодарен за помощь, можно в личку.

  19. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в Как реализовать это?   
    Нужен Timer и ListView
    Например в ListView -> OnUpdateObjects
    procedure TForm1.ListViewPoiskUpdateObjects(const Sender: TObject; const AItem: TListViewItem); var   aTime: TListitemText; begin   aTime := AItem.Objects.FindDrawable('time') as TListitemText;   if aTime = nil then   begin     aTime := TListitemText.Create(AItem);     aTime.Name := 'time';     aTime.PlaceOffset.X := 0;     aTime.PlaceOffset.Y := 2;     aTime.Font.Size := 14;     aTime.TextVertAlign := TTextAlign.Center;     aTime.TextAlign := TTextAlign.Center;   end;   aTime.Width := 72;   aTime.Height := 20;   //Двигаем Text итема с отступом   AItem.Objects.TextObject.PlaceOffset.X := aTime.Width + 6; end; И таймер procedure TForm1.Timer1Timer(Sender: TObject); var   i: integer; begin   if ListView1.ItemCount > 0 then     for i := 0 to ListView1.ItemCount - 1 do       ListView1.Items[i].Data['time'] := FormatDateTime('ss сек.', Now); end;
  20. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Как реализовать это?   
    нет, я просто отрисовал нужные контролы в Item'e. а тот класс это для покраски TListView, через него я убрал разделитель.
    все что вам нужно находиться в OnUpdateObjects, посмотрите на константы и как присваиваются данные
  21. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в TListViewHorz   
    https://yadi.sk/d/ziNcatNipiKZD
  22. Like
    zairkz отреагировална Kitty в Движок форума надо заменить   
    Не возможно пользоваться форумом с мобильных устройств
    - режет сообщения
    - закрывает клавиатурой текст сообщения и т.п.
     
    Форум бесценен. Интерфейс ужасен.
     
  23. Like
    zairkz отреагировална enatechno в [DX10] Drag-and-Drop Пример   
    https://www.youtube.com/watch?v=ta_N6DSi0Xg
    с 22 минуты
  24. Like
    zairkz отреагировална Kitty в BeaconFence   
    Прошу прощения, что не по теме FM, а по теме RAD в общем.
    Просто на этом форуме можно получить вразумительный ответ от профессионалов.
    Вот есть такая технология у Embarcadero: http://www.embarcadero.com/ru/products/beaconfence
    Я смутно представляю, что это, поэтому вопрос такой:
    Можно ли контролировать с помощью этой технологии, например, продавцов на месте их работы в магазине, чтобы контролировать учет их рабочего времени? Фиксация - пришел на работу, фиксация - ушел с работы?
    Или эта технология совсем для других целей?
    Спасибо.
  25. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в Серьезно о FireMonkey на Android и iOS   
    если выбрать правильные инструменты, то возможно.
    FMX + сервак + PHP (или любой серверный язык) всю работу с БД и с картами (такие как запросы геокодинга и прочие ssl запросы на другие сайты) на PHP, а клиент-приложение только в виде отображения контента.
    и можно делать не только одноформенные приложения, а сложные
×
×
  • Создать...