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

Сергей Сергеев

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

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

  • Посещение

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

    9

Весь контент Сергей Сергеев

  1. да, про это и написано в доках. Но при обращении на rest, в хедере, директиве Pragma=dss=ИД сессии , сервер возвращает ИД. Если слать ему ее обратно на сервер, то идет обмен все время с этим ИД. Т.Е сессия на Рест живет, Но ServerMethod уничтожается. Чего нет при обращении по tunnel ( вместо rest). Зачем ид сессии по рест, если сессии в ДС нет? явная недоделка, которую и хотел немного подправить - смоделировав обмен, как будто ДС клиент. Фреймворки не смогут.. ну можно библиотечку для PHP, JS сделать.. и смогут.. Но, к сожалению. времени нет, описания протокола tunnel нет, решил переделать методы ДС сервера на открытые, т.е. все параметры в запросе.. а сессию пусть пхп-браузер в своих куках, переменных держат. Моя сторона только ДС сервер, задача сделать АПИ для других организаций. Но если кто то раскопал про тунели.. буду рад любой информации.
  2. Добрый всем день! Уважаемые коллеги, столкнулись с такой проблемой. Если есть DataSnap сервер, работающий в режиме Session, и клиент, написанный на Delphi с использованием TSqlConnection к серверу по протоколу DataSnap. то все работает. Т.е. клиент открывает соединение, вызывает методы сервера , при этом на сервере, в экземпляре класса ServerMethod ( живущий от Коннекта, до его закрытия) - хранятся все данные сессии, ИД клиента, его настройки и т.д., и закрыват соединение, при этом сервер уничтожает экземпляр класса ServerMethod, со всеми данными. Встал вопрос, как использовать этот же сервер, с другими клиентами, работающими по REST, например PHP, JS. У DS сервера есть rest протокол, НО! после любого обращения по REST, сервер создает и уничтожает сразу класс ServerMethod ( т.е. работает в режиме LifiCicle = Invocation, о чем честно написано в документации) Т.е. хранить данные подключения не получится. Чтобы не переписывать сервер, решили попытаться прикинуться клиентом DS. Поставили между сервером DS и клиентом DS снифер. Выяснилось, что они общаются между собой по интерфейсу tunel. т.е. вместо http://docwiki.embarcadero.com/RADStudio/Rio/en/DataSnap_REST_Messaging_Protocol надо обращаться на http://host:port/datasnap/tunnel/[ClassName]/[MethodName]/[ParamValue] вообщем там целая жизнь из команд PUT, GET.. Описания этого протока не нашел.. Может кто уже имел такой опыт по сопряжению REST клиента и DS сервера в режиме LifeCicle = Session. В приложенном файле протоколе обмена - открытие соединения c с клиента , без авторизации ( TSqConnect ) - выполнение метода LoginByKartVDevOsDOC с параметрами - внутренний логин в систему, пс. а почему txt нельзя прикрепить?? пришлось зарарить.. protokol DataSnap.rar
  3. Думаю, что если в Андроид, WIN проблем нет, то, скорее всего глюк в реализации под IOS, чего нибудь Нужно попытаться обойти, например, убрать динамическое создание полей SG1, из текста не понятно, что к чему привязано.. я в таких случаях делаю пустую форму, с необходимым минимальным "падающим" функционалом, и уже на ней тестирую варианты.. и этот проект уже можно выложить целиком, если кого то попросить потестировать, посмотреть. Правда непонятно что делать с базой, приложить дампы ( усеченные) необходимых таблиц.
  4. Привет всем! столкнулся с такой проблемой, пример из Delphi и vkbdhelper не работают, если на форме, внутри VertScrollBox есть, кпримеру, набор TEdit которые не входят по высоте в форму и изначально содержимое имеет скролл. Все хорошо, пока выбирается TEdit в видимой области, если же проскроллировать вниз списка и пытаться выбрать элементы из низа списка, то это сделать невозможно, VertScrollBox перепрыгивает в верхнюю позицию, и выбранный элемент остается нивидимым, под ( или даже ниже) вирт. клавиатуры. Похоже, в обоих случаях, не учитывается начальное смещение СкроллБокса. Причем в примере Дельфи, там выравнивание Layout задано как Client , которое изначально "убивает" Scroll, у себя поставил Top, для сохранения высоты Layout, чтобы изначально Scroll появился. Приложил свой тестовый проект.. с vkbdhelper . Неужели после стольких лет fmx нет нормального решения из коробки для создания формы с длинным вертикальным списком Едитов и возможностью внесения информации в конце списка? все в детских штанах.. TestScroll.7z
  5. точно, компиляция в 10.2 и 10.3 дают разный вид DatePicker. От стиля Delphi зависит цвет вот эти вот панелек ( темные, светлые) - собственно и вопрос - как поменять.. т.е. похоже не нативный, хотя может от версии SDK андроида зависит.. пс. все таки одинаковый - "современный", SDK 22 и SDK 28.. хм.. а крутилки помню, Seatle или Berlin по моему были.. а сейчас - тыкалки.. придется самому делать наверное календарь "в цвет"
  6. Вот.. правда в v21.xml ничего не нашел, как и в .style, скорее всего отрисовка както завязана на, например, условно стиль "правый угол TaskBar" ( чтоб никто не догадался). И еще меня смущает нативность этих элементов, коллеги утверждают, что в разных Версиях они разные, а тут одинаковые.. пс. Не нашел файл FMX.Pickers.Android - где они?
  7. проект один - из Sample DatePicker, разные стили цепляю ( т.е. загружаю файл *.style в StyleBook) Delphi - получаю разные цвета .. вряд ли при этом xml файл меняется.. неужели не предусмотрена возможность менять? и даже отключить это непонятно как.. разве что не использовать TDateEdit..
  8. вот.. они зависят от стиля Дельфи, первый Андроид Dark Style, Второй Android L Light и откуда цвет надписей, выделения.. В дарк стиле все тот же неубиваемый сине-голубой.
  9. Стиль Андроид Л. Все сине-зеленые квадратики в *.png файлах стиля и линии заменил на свои. В списке элементов стиля не т такого элемента как Picker. Откуда он берет эти панельки над днями месяца?
  10. 4 файла с разными разрешениями картинок ( иконки кнопок, пунктов горизонтального и вертикального меню, сами кнопки ( круглые с тенями , фоны, и т.д). стандартных элементов там нет, он про них ничего не знает. Я взял не StyleBook и в нем редактировать, а BitMap StyleDesigner, загрузил в него Android L Light Style, добавил в него 4 файла с картинками дизайнера ( в добавок к стандартым) и пробовал в нем добавить новый Object - на основе (копии) CheckBox - пытался добавить надпись снизу, чтобы получился обьект с картинкой и надписью под ней. Не получилось. Смог только заменить картинку для состояния чек и анчек. Ссделал 8 таких обьектов - по количеству элементов горизонтального меню, картинку которого привел. Загрузил это в стиль приложения. Потом на TLayout положил чекбокс , указал ему один из новых стилей. Под ним, по центру положил Ttext, это надпись пункта меню. Но! это три обьекта, на каждый надо вешать онклик, все отдельно перекрашивать ( чекбокс и надпись), следить чтобы не "троило" ( т.е. если сработал он клик на одном обьекте ( надписи к примеру), то не реагировать на онклик панели или чекбокса). Поэтому и хочу - одним обьектом через стили. т.е. я так и сделал.. а хотел одним обьектом с надписью и панелью, ну большой чек бокс, чтоли, с надписью внизу и фоном.
  11. А сам демо пример работает? если его не менять? если работает, то как в детстве - найди 5 отличий.. пс. там еще манифест менять, +файл подкладывать в проект, для новых проектов , вроде, 10.3 сама это делает, а для старого - я вручную правил манифест и файл создавал и в деплой размещал..
  12. посмотрите как сделано в примере из поставки, и заодно проверьте работает ли у вас. PhotoEditorDemo - у меня все работает.. там есть кнопка - сделать фото с камеры и получаются все разрешения.
  13. Доброго времени суток.. Столкнулся с такой проблемой, - добавляю новые обьекты в Bitmap Style Designer - панельки с разными картинками ( задание углов картинки мышкой - это издевательство! почему нельзя вписать координаты?? окно есть для координат но только на отображение, прямо игра в минер.. особенно радует указывание 5! картинок например для чекбокса чекед + 5 для анчекед и все это в 4х разрешениях - 40 картинок! мышкой!).. потом сохраняю как style FMX. Открываю файл в StyleBook, он затирает предидущий стиль приложения, и не дай бог что либо подредактировал в StyleBook - все пропадает. Есть такой элемент MultiView. В исходнике стиля AndroidL Light ( vsf ) - в списке обьетов он отсутствует (?) хотя есть почти в каждом приложении.. шторка в нем , по умолчанию серая, сменить можно только редактирую в StyleBook, но последующая перезагрузка стиля, естественно все стирает. Как выпутаться из этого замкнутого круга? Merge стилей двоит все обьекты, нельзя ли както делать свои стили уже в формате .style , которые бы "прибавлялись" к загруженному из vsf?
  14. Спасибо за поддержку.. разместил первый вопрос в теме создание стилей.. вот второй
  15. Приветствую Вас! нарисовал дизайнер проект приложения, и по моему недосмотру не дал отдельные файлики для каждой картинки, а все картинки в одном файле для каждого разрешения, 1x 15x 20x и 30x. Также есть для 4х и 5х. Но сразу оговорюсь - использовать их не получилось - прикрепил, ссылки в них сделал, но похоже они заменили 2х и 3х, т.е. координаты для 2х и 3х почемуто применялись для файлов 4х и 5х Может ошибаюсь, убрал файлы 4 и 5 и ссылки вних - все заработало. Может в будущем пригодится. Так вот, использовать эти "простынки" с наборами картинок, я так понял можно через стили. Загрузил стиль АндроидЛайт и в нем начал пробовать добавлять обьекты. Сразу скажу - ни один из добавленных вручную ( через кнопки в правом верхнем углу ) обьектов не захотел работать - т.е. ничего не показывал. Работали только копии уже существующих в стиле обьектов - пока склонировал два - панель и чекбокс. Приложил картинку нижнего меню - набор таких вот обьектов, активный оранжевый, остальные черные. Хотел сделать обьект : общая панелька, в которой есть обьект битмап и текст под ним, все по горизонтали по - центру. Отступы от верха панельки - картинок и надписей одинаковы. Можно сказать что это чекбокс такой, с двумя состояниями - вкл и выкл. Главное чтобы работало как один обьект - панелька+ картинка + надпись. Из готового стиля чекбокса смог только заменить в нем картинку - получил обькт только для картинки - зато с двумя состояниями - чек и анчек. Понятно, что положив это на Лайоут и добавив надпись снизу - получу визуально похожее, но это три онклика на каждом, замена цветов в надписи вручную.. Как сделать вот такой единый обьект стилями? пс. кстати там еще значек - что есть нечто требующее внимание - оранжевый круг у программ на картинке.. если еще и для него удастся в стиле место приделать.. было бы здорово. Заранее всем спасибо за ответы - советы.
  16. Есть пока около 40 экранов в zeplin, прототип, и 5 наборов картинок иконок, лого, полосок и т.д. в 5 разрешениях. С пнд только начал делать новое приложение, разбираюсь со стилями.. К сожалению, я так понял, курсы по стилям из шапки сайта не работают, ответа на запросы не получил.. Есть вопросы, позже напишу в теме стилей..
  17. Сделал так.. TEdit положил внутри THorzScrollBox. Ширина TEdit больше чем Scroll, что не влезло справа, обрезалось. Спрятал ScrollBar, чтобы не портил вид. Положил на форму TrackBar c Value от 0 до 150. Для значения Value добавил TFloatAnimaton с изменением Value от 0-150 по циклу и с реверсом. На событие OnChangeValue TrackBar повесил обработчик в котором, в зависимости от значения Track меняю у HorzscrollBox позицию ползунка ( .ScrollBy (dX,dY) - еле нашел!) Результат на видео https://youtu.be/crtw-qQmjFc. Проект вечером прикреплю - может кому понадобится. "мозг" тут : var Form1: TForm1; currPos : integer=0; implementation {$R *.fmx} {$R *.LgXhdpiPh.fmx ANDROID} {$R *.Windows.fmx MSWINDOWS} procedure TForm1.TrackBar1Change(Sender: TObject); var cnt : integer; cp :integer ; begin lbT.Text := TrackBar1.Value.ToString; cp := Round(TrackBar1.Value) ; cnt := currPos - cp; currPos := cp; HorzScrollBox1.ScrollBy(cnt,0) ; end; Test.rar
  18. Привет! Как сделать "бегущую строку" в TLabel или TEdit - длинный текст, если не влазит в отведенное место по ширине, то авто скролл горизонтальный.. пробовал через добавление TFloatAnimation в CustomStyle к свойству Text, изменяя position - ничего не происходит, пробовал Font.Size менять ( для проверки - а вообще оно работает?) тоже ничего не происходило. Запускаю в Win, а нужно вообще для Androiod и Ios.
  19. Есть, написанная на Delphi FMX приложение - личный кабинет пациента поликлиники. Руководством поставлена задача :"Привести дизайн приложения в соответствие корпоративной программе идентификации.Привлечь аутсорсинг-дизайнера на рестайлинг текущей версии, заложить стилистику новых страниц" Речь идет о том, чтобы уже для существующего приложения, сделать новый "воздушный, легкий" дизайн.на первом этапе мы бы хотели получить несколько вариантов дизайна, желательно с работающими прототипами wireframeк уже существующим страницам приложения, будут добавлены новые - онлайн оплата услуг через сбер, возможно другие, но все они будут следовать и повторять дизайн уже готовых страниц.на втором этапе - создание стилей для Delphi для утвержденного руководством дизайна. Все компоненты в приложении из поставки Delphi, без использования доп. платных компонентов.ну и поддержка, доработка, исправление, если понадобится на этапе редизайна приложения с использованием Ваших стилей нашими силами.Если Вас интересует подобное предложение, пожалуйста, оцените его по срокам и стоимости. Заранее спасибо.
  20. Поставил Токио для проверки, такого я не ожидал, скажу честно. Проект, который достаточно безболезненно двигался с Сиетла в Берлин, и количество глюков уменьшалось, просто "умер" в Токио. в Андроид 4.4.2 просто не стартует после splash экрана, до точки останова на первой же команде не доходит, segmentation fault. В Андр 5.1 , 6.0 хоть запускается. Опять пропадают картинки с кнопок ( допилили). Форма с анимацией, пока идёт соединение в потоке, не анимирует. Шрифт на этой форме искажен, с зелёной обводкой. Форма не закрывается после установки соединения. Сказать что я разочарован, не сказать ничего.
  21. Проблема решена - приложение в Апп сторе. Опишу как решил. Конфигурация - Berlin 10.1 - update 2, Xcode 8. Datasnap сервер, использую tcpIp. Компоненты на клиенте TSqlConnection - для Datasnap, TIdTcpClient - использую для проверки соединения перед открытием ДатаСнар соединения, т.к. в нем не работает ТаймОут и есть вероятность "залипнуть" Сервер так и остался в ИП4 ( вначале хотел перевести его в ип6, но провайдер МТС ответил, что такие адреса не дает, сделал туннель с tunnelbroker.net на тестовый сервер, но так и не пригодилось ( кстати бесплатно, но без гарантии пропускной способности) . Никаких квадратных скобок , если у вас имена хостов а не ИП адреса не нужны. Смысл простой - у обоих компонентов нужно выставить свойства протоколов в зависимости от сети нахождения клиента. Вначале ставлю у обоих ИПв4, если коннект ексептиться - то ставлю ипв6 и еще раз пробую коннектится. и только второй ексепт скажет, что сети действительно нет. function TClientModule1.gethost(aHost : string):string; var dbxProps: TDBXDatasnapProperties; begin try TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; // ставим все в ип4 IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv4; IdTCPClient1.Host:=TabbedForm.Host4; IdTCPClient1.Port:=StrToInt(TabbedForm.port); //порт сервера DataSnap idTCPClient1.ConnectTimeout := 12000; //заданный тайм-аут Assert(SQLConnection1.DriverName = 'DataSnap', 'Driver must be DataSnap'); dbxProps := SQLConnection1.ConnectionData.Properties as TDBXDatasnapProperties; dbxProps.CommunicationProtocol := 'tcp/ip'; dbxProps.CommunicationIPVersion := 'IP_IPv4'; IdTCPClient1.Connect; if IdTCPClient1.Connected then begin //подключились result:=TabbedForm.Host4; TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; IdTCPClient1.Disconnect; end; except on E: Exception do begin //toast ('IPv4 except '+E.Message); try IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv6; IdTCPClient1.Host:= TabbedForm.Host6P; IdTCPClient1.Port:=StrToInt(TabbedForm.port); //порт сервера DataSnap idTCPClient1.ConnectTimeout := 12000; //заданный тайм-аут IdTCPClient1.Connect; if IdTCPClient1.Connected then begin //подключились result:=TabbedForm.Host6DS; TabbedForm.HostDS := TabbedForm.Host6DS; TabbedForm.HostP := TabbedForm.Host6P; IdTCPClient1.Disconnect; dbxProps.CommunicationIPVersion := 'IP_IPv6'; end; except on E: Exception do begin //не подключились result:='Не подключились'; dbxProps.CommunicationIPVersion := 'IP_IPv4'; IdTCPClient1.IPVersion := TIdIpVersion.Id_IPv4; TabbedForm.HostDS := TabbedForm.Host4; TabbedForm.HostP := TabbedForm.Host4; end; end; end; end; Тут немного есть излишества кода - думал что для Ип4 и Ип6 будут разные имена хостов, но сейчас это одно и тоже имя Сервера который находится в Ип4 и не имеет ни выхода ни адреса в ип6. вызвав эту фунцию я заполняю глобальные переменные ( ds- датаснап сервер. P- для пробного открытия ("пинг" )) на самом деле они тоже одинаковые. клиента проверял, как описано http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/ т.е. макбук подключен через 3ж модем в сеть и через WiFi раздает ИпВ6 сеть и Айфон к ней присоединен. Если приложение работает в этой внутренней ипв6 сети, то все - проблема решена - Аппле именно так и проверяет.
  22. что то я так и не понял - обязательно или нет серверу иметь адрес ipv6? сделал, как описано выше, с помощью макбук подключенному в 3ж сеть (ipv4) , расшаренную вай-фай подсеть dns64/nat64, в нее смог приконнектится только Iphone ( два китайских смарта повисли при подключении на словах - получение ИП адреса, один подключается, получает ип6 адрес, но без инета) внизу, если раскрыть 2 адреса в разделе ipv6 есть два длинных ipv6 адреса не очень понимаю - в какой сети iphon - 6 или 4? мой сайт имеющий ipv4 адрес ( по имени хоста) TWebbrowser открывает, в то же время попытка открыть connection ( TIdTcpClient) ipv4 по имени или ип адресу не работает.. exception поставил программу пинг - google.com - показывает его ipv6 адрес. как приконнектится к хосту с ИП4 только?
  23. спасибо за подсказку.. в пнд буду разбираться и со скобками, вокруг хоста, и с адресом сервера..
×
×
  • Создать...