Сергей Сергеев
Пользователи-
Постов
144 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Весь контент Сергей Сергеев
-
да, про это и написано в доках. Но при обращении на rest, в хедере, директиве Pragma=dss=ИД сессии , сервер возвращает ИД. Если слать ему ее обратно на сервер, то идет обмен все время с этим ИД. Т.Е сессия на Рест живет, Но ServerMethod уничтожается. Чего нет при обращении по tunnel ( вместо rest). Зачем ид сессии по рест, если сессии в ДС нет? явная недоделка, которую и хотел немного подправить - смоделировав обмен, как будто ДС клиент. Фреймворки не смогут.. ну можно библиотечку для PHP, JS сделать.. и смогут.. Но, к сожалению. времени нет, описания протокола tunnel нет, решил переделать методы ДС сервера на открытые, т.е. все параметры в запросе.. а сессию пусть пхп-браузер в своих куках, переменных держат. Моя сторона только ДС сервер, задача сделать АПИ для других организаций. Но если кто то раскопал про тунели.. буду рад любой информации.
-
Добрый всем день! Уважаемые коллеги, столкнулись с такой проблемой. Если есть 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
-
Думаю, что если в Андроид, WIN проблем нет, то, скорее всего глюк в реализации под IOS, чего нибудь Нужно попытаться обойти, например, убрать динамическое создание полей SG1, из текста не понятно, что к чему привязано.. я в таких случаях делаю пустую форму, с необходимым минимальным "падающим" функционалом, и уже на ней тестирую варианты.. и этот проект уже можно выложить целиком, если кого то попросить потестировать, посмотреть. Правда непонятно что делать с базой, приложить дампы ( усеченные) необходимых таблиц.
-
Привет всем! столкнулся с такой проблемой, пример из Delphi и vkbdhelper не работают, если на форме, внутри VertScrollBox есть, кпримеру, набор TEdit которые не входят по высоте в форму и изначально содержимое имеет скролл. Все хорошо, пока выбирается TEdit в видимой области, если же проскроллировать вниз списка и пытаться выбрать элементы из низа списка, то это сделать невозможно, VertScrollBox перепрыгивает в верхнюю позицию, и выбранный элемент остается нивидимым, под ( или даже ниже) вирт. клавиатуры. Похоже, в обоих случаях, не учитывается начальное смещение СкроллБокса. Причем в примере Дельфи, там выравнивание Layout задано как Client , которое изначально "убивает" Scroll, у себя поставил Top, для сохранения высоты Layout, чтобы изначально Scroll появился. Приложил свой тестовый проект.. с vkbdhelper . Неужели после стольких лет fmx нет нормального решения из коробки для создания формы с длинным вертикальным списком Едитов и возможностью внесения информации в конце списка? все в детских штанах.. TestScroll.7z
- 46 ответов
-
- vkbdhelper
- scrollable form
-
(и ещё 3 )
C тегом:
-
точно, компиляция в 10.2 и 10.3 дают разный вид DatePicker. От стиля Delphi зависит цвет вот эти вот панелек ( темные, светлые) - собственно и вопрос - как поменять.. т.е. похоже не нативный, хотя может от версии SDK андроида зависит.. пс. все таки одинаковый - "современный", SDK 22 и SDK 28.. хм.. а крутилки помню, Seatle или Berlin по моему были.. а сейчас - тыкалки.. придется самому делать наверное календарь "в цвет"
-
Вот.. правда в v21.xml ничего не нашел, как и в .style, скорее всего отрисовка както завязана на, например, условно стиль "правый угол TaskBar" ( чтоб никто не догадался). И еще меня смущает нативность этих элементов, коллеги утверждают, что в разных Версиях они разные, а тут одинаковые.. пс. Не нашел файл FMX.Pickers.Android - где они?
-
4 файла с разными разрешениями картинок ( иконки кнопок, пунктов горизонтального и вертикального меню, сами кнопки ( круглые с тенями , фоны, и т.д). стандартных элементов там нет, он про них ничего не знает. Я взял не StyleBook и в нем редактировать, а BitMap StyleDesigner, загрузил в него Android L Light Style, добавил в него 4 файла с картинками дизайнера ( в добавок к стандартым) и пробовал в нем добавить новый Object - на основе (копии) CheckBox - пытался добавить надпись снизу, чтобы получился обьект с картинкой и надписью под ней. Не получилось. Смог только заменить картинку для состояния чек и анчек. Ссделал 8 таких обьектов - по количеству элементов горизонтального меню, картинку которого привел. Загрузил это в стиль приложения. Потом на TLayout положил чекбокс , указал ему один из новых стилей. Под ним, по центру положил Ttext, это надпись пункта меню. Но! это три обьекта, на каждый надо вешать онклик, все отдельно перекрашивать ( чекбокс и надпись), следить чтобы не "троило" ( т.е. если сработал он клик на одном обьекте ( надписи к примеру), то не реагировать на онклик панели или чекбокса). Поэтому и хочу - одним обьектом через стили. т.е. я так и сделал.. а хотел одним обьектом с надписью и панелью, ну большой чек бокс, чтоли, с надписью внизу и фоном.
-
А сам демо пример работает? если его не менять? если работает, то как в детстве - найди 5 отличий.. пс. там еще манифест менять, +файл подкладывать в проект, для новых проектов , вроде, 10.3 сама это делает, а для старого - я вручную правил манифест и файл создавал и в деплой размещал..
-
посмотрите как сделано в примере из поставки, и заодно проверьте работает ли у вас. PhotoEditorDemo - у меня все работает.. там есть кнопка - сделать фото с камеры и получаются все разрешения.
-
Доброго времени суток.. Столкнулся с такой проблемой, - добавляю новые обьекты в Bitmap Style Designer - панельки с разными картинками ( задание углов картинки мышкой - это издевательство! почему нельзя вписать координаты?? окно есть для координат но только на отображение, прямо игра в минер.. особенно радует указывание 5! картинок например для чекбокса чекед + 5 для анчекед и все это в 4х разрешениях - 40 картинок! мышкой!).. потом сохраняю как style FMX. Открываю файл в StyleBook, он затирает предидущий стиль приложения, и не дай бог что либо подредактировал в StyleBook - все пропадает. Есть такой элемент MultiView. В исходнике стиля AndroidL Light ( vsf ) - в списке обьетов он отсутствует (?) хотя есть почти в каждом приложении.. шторка в нем , по умолчанию серая, сменить можно только редактирую в StyleBook, но последующая перезагрузка стиля, естественно все стирает. Как выпутаться из этого замкнутого круга? Merge стилей двоит все обьекты, нельзя ли както делать свои стили уже в формате .style , которые бы "прибавлялись" к загруженному из vsf?
-
Приветствую Вас! нарисовал дизайнер проект приложения, и по моему недосмотру не дал отдельные файлики для каждой картинки, а все картинки в одном файле для каждого разрешения, 1x 15x 20x и 30x. Также есть для 4х и 5х. Но сразу оговорюсь - использовать их не получилось - прикрепил, ссылки в них сделал, но похоже они заменили 2х и 3х, т.е. координаты для 2х и 3х почемуто применялись для файлов 4х и 5х Может ошибаюсь, убрал файлы 4 и 5 и ссылки вних - все заработало. Может в будущем пригодится. Так вот, использовать эти "простынки" с наборами картинок, я так понял можно через стили. Загрузил стиль АндроидЛайт и в нем начал пробовать добавлять обьекты. Сразу скажу - ни один из добавленных вручную ( через кнопки в правом верхнем углу ) обьектов не захотел работать - т.е. ничего не показывал. Работали только копии уже существующих в стиле обьектов - пока склонировал два - панель и чекбокс. Приложил картинку нижнего меню - набор таких вот обьектов, активный оранжевый, остальные черные. Хотел сделать обьект : общая панелька, в которой есть обьект битмап и текст под ним, все по горизонтали по - центру. Отступы от верха панельки - картинок и надписей одинаковы. Можно сказать что это чекбокс такой, с двумя состояниями - вкл и выкл. Главное чтобы работало как один обьект - панелька+ картинка + надпись. Из готового стиля чекбокса смог только заменить в нем картинку - получил обькт только для картинки - зато с двумя состояниями - чек и анчек. Понятно, что положив это на Лайоут и добавив надпись снизу - получу визуально похожее, но это три онклика на каждом, замена цветов в надписи вручную.. Как сделать вот такой единый обьект стилями? пс. кстати там еще значек - что есть нечто требующее внимание - оранжевый круг у программ на картинке.. если еще и для него удастся в стиле место приделать.. было бы здорово. Заранее всем спасибо за ответы - советы.
-
Есть пока около 40 экранов в zeplin, прототип, и 5 наборов картинок иконок, лого, полосок и т.д. в 5 разрешениях. С пнд только начал делать новое приложение, разбираюсь со стилями.. К сожалению, я так понял, курсы по стилям из шапки сайта не работают, ответа на запросы не получил.. Есть вопросы, позже напишу в теме стилей..
-
Сделал так.. 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
-
Привет! Как сделать "бегущую строку" в TLabel или TEdit - длинный текст, если не влазит в отведенное место по ширине, то авто скролл горизонтальный.. пробовал через добавление TFloatAnimation в CustomStyle к свойству Text, изменяя position - ничего не происходит, пробовал Font.Size менять ( для проверки - а вообще оно работает?) тоже ничего не происходило. Запускаю в Win, а нужно вообще для Androiod и Ios.
-
Есть, написанная на Delphi FMX приложение - личный кабинет пациента поликлиники. Руководством поставлена задача :"Привести дизайн приложения в соответствие корпоративной программе идентификации.Привлечь аутсорсинг-дизайнера на рестайлинг текущей версии, заложить стилистику новых страниц" Речь идет о том, чтобы уже для существующего приложения, сделать новый "воздушный, легкий" дизайн.на первом этапе мы бы хотели получить несколько вариантов дизайна, желательно с работающими прототипами wireframeк уже существующим страницам приложения, будут добавлены новые - онлайн оплата услуг через сбер, возможно другие, но все они будут следовать и повторять дизайн уже готовых страниц.на втором этапе - создание стилей для Delphi для утвержденного руководством дизайна. Все компоненты в приложении из поставки Delphi, без использования доп. платных компонентов.ну и поддержка, доработка, исправление, если понадобится на этапе редизайна приложения с использованием Ваших стилей нашими силами.Если Вас интересует подобное предложение, пожалуйста, оцените его по срокам и стоимости. Заранее спасибо.
-
Поставил Токио для проверки, такого я не ожидал, скажу честно. Проект, который достаточно безболезненно двигался с Сиетла в Берлин, и количество глюков уменьшалось, просто "умер" в Токио. в Андроид 4.4.2 просто не стартует после splash экрана, до точки останова на первой же команде не доходит, segmentation fault. В Андр 5.1 , 6.0 хоть запускается. Опять пропадают картинки с кнопок ( допилили). Форма с анимацией, пока идёт соединение в потоке, не анимирует. Шрифт на этой форме искажен, с зелёной обводкой. Форма не закрывается после установки соединения. Сказать что я разочарован, не сказать ничего.
-
Проблема решена - приложение в Апп сторе. Опишу как решил. Конфигурация - 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 сети, то все - проблема решена - Аппле именно так и проверяет.
-
что то я так и не понял - обязательно или нет серверу иметь адрес ipv6? сделал, как описано выше, с помощью макбук подключенному в 3ж сеть (ipv4) , расшаренную вай-фай подсеть dns64/nat64, в нее смог приконнектится только Iphone ( два китайских смарта повисли при подключении на словах - получение ИП адреса, один подключается, получает ип6 адрес, но без инета) внизу, если раскрыть 2 адреса в разделе ipv6 есть два длинных ipv6 адреса не очень понимаю - в какой сети iphon - 6 или 4? мой сайт имеющий ipv4 адрес ( по имени хоста) TWebbrowser открывает, в то же время попытка открыть connection ( TIdTcpClient) ipv4 по имени или ип адресу не работает.. exception поставил программу пинг - google.com - показывает его ipv6 адрес. как приконнектится к хосту с ИП4 только?
-
спасибо за подсказку.. в пнд буду разбираться и со скобками, вокруг хоста, и с адресом сервера..