-
Постов
2 517 -
Зарегистрирован
-
Посещение
-
Победитель дней
264
Активность репутации
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в DeviceInfo - модуль для получения информации о девайсе
Android 6.0 и выше, не выдаёт Bluetooth, Wi-Fi MacAddress
по дефалту 02:00:00:00:00:00
подробней
-
Равиль Зарипов (ZuBy) отреагировална Евгений Корепов в Установка ScrollViewPos после добавления ListViewItem
Вы будете смеяться, но проблема решена. Методом научного тыка.
Не работающая установка значения ListView.ScrollViewPos решается следующей строкой ListView.ItemIndex:=0; (Не важно 0 или любое другое число).
Т.е. для того чтоб заработало делаем так:
ListView.ItemIndex:=0; ListView.ScrollViewPos:=333; // Ура, работает!!! Почему так работает, я не понял.
-
Равиль Зарипов (ZuBy) отреагировална krapotkin в Работа с БД Firebird
все же от задачи зависит...
например у меня две задачи - транспортная диспетчерская и кассовая программа, в обеих очень интенсивный трафик.
постоянный коннект с базой с толстого клиента по локалке ничем не хуже постоянного коннекта с ней HTTP-сервера и уж точно лучше чем 100500 переконнектов
логин-пароль я вообще ставлю один гостевой на вход в базу в процедуру аутентификации, а авторизацию я провожу сам. она идет уже после ввода пароля вручную, HTTP-сервер работает точно так же
часть операций выполняют хранимые процедуры на сервере
при активном использовании дисконнект проявится мгновенно
а вот если задача по способу работы напоминает Web-серфинг, работа с документами, формами, время от времени сбор и отсылка данных, тогда да, я присоединяюсь к вашему посту
-
Равиль Зарипов (ZuBy) отреагировална Евгений Корепов в Как создать хелперы для массива?
Вот здесь посмотрите https://code.google.com/p/delphi-foundations/source/browse/trunk/Book/06.+Arrays,+collections+and+enumerators/Simple+search+%28TArray+class+helper%29/CCR.Generics.SimpleArraySearch.pas?r=29
-
Равиль Зарипов (ZuBy) получил реакцию от Руслан Лыков в Координаты текущего местоположения на MapView
ага, действительно. в коде указано что берется позиции камеры
InvokeOnMap( procedure(Map: JGoogleMap) begin TJMapsInitializer.JavaClass.initialize(TAndroidHelper.Activity); // workaround for older version of gms FCameraPosition := Map.GetCameraPosition; end); а нужно указать
InvokeOnMap( procedure(Map: JGoogleMap) begin TJMapsInitializer.JavaClass.initialize(TAndroidHelper.Activity); // workaround for older version of gms FCameraPosition := Map.getMyLocation; end); хорошо было бы добавить это как еще одно свойство, но пока нет времени этим заниматься
-
Равиль Зарипов (ZuBy) получил реакцию от Andrew в Координаты текущего местоположения на MapView
ага, действительно. в коде указано что берется позиции камеры
InvokeOnMap( procedure(Map: JGoogleMap) begin TJMapsInitializer.JavaClass.initialize(TAndroidHelper.Activity); // workaround for older version of gms FCameraPosition := Map.GetCameraPosition; end); а нужно указать
InvokeOnMap( procedure(Map: JGoogleMap) begin TJMapsInitializer.JavaClass.initialize(TAndroidHelper.Activity); // workaround for older version of gms FCameraPosition := Map.getMyLocation; end); хорошо было бы добавить это как еще одно свойство, но пока нет времени этим заниматься
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в Координаты текущего местоположения на MapView
ага, действительно. в коде указано что берется позиции камеры
InvokeOnMap( procedure(Map: JGoogleMap) begin TJMapsInitializer.JavaClass.initialize(TAndroidHelper.Activity); // workaround for older version of gms FCameraPosition := Map.GetCameraPosition; end); а нужно указать
InvokeOnMap( procedure(Map: JGoogleMap) begin TJMapsInitializer.JavaClass.initialize(TAndroidHelper.Activity); // workaround for older version of gms FCameraPosition := Map.getMyLocation; end); хорошо было бы добавить это как еще одно свойство, но пока нет времени этим заниматься
-
Равиль Зарипов (ZuBy) получил реакцию от Cody71727172 в [TMultiView] Правки стандартного примера MultiViewDemo
Доработал чуть CustomPresentation из демо
1) убрал баг с утечкой памяти
было так с включенным ReportMemoryLeaksOnShutdown := true;
2) неточное отображение на форме, не по центру
было
стало
3) при открытой MV закрыть программу, утечка памяти ReportMemoryLeaksOnShutdown := true;
4) Добавил события OnShown, OnHidden
MultiView.zip
-
Равиль Зарипов (ZuBy) получил реакцию от Евгений Корепов в ListBox, Edit и клавиатура
Пользуюсь еще вот таким модулем
просто подключаем в uses и используем для Андроид
vkbdhelper.zip
-
Равиль Зарипов (ZuBy) получил реакцию от zairkz в [TMultiView] Правки стандартного примера MultiViewDemo
Доработал чуть CustomPresentation из демо
1) убрал баг с утечкой памяти
было так с включенным ReportMemoryLeaksOnShutdown := true;
2) неточное отображение на форме, не по центру
было
стало
3) при открытой MV закрыть программу, утечка памяти ReportMemoryLeaksOnShutdown := true;
4) Добавил события OnShown, OnHidden
MultiView.zip
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в Связка клиента на Anroid и сервера на Delphi7
лучше использовать json, читаемость лучше и размер данных меньше
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в Связка клиента на Anroid и сервера на Delphi7
Nik, советую почитать про JSON удобная штука, тем более если использовать xSuperObject
-
Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в [TMultiView] Правки стандартного примера MultiViewDemo
Доработал чуть CustomPresentation из демо
1) убрал баг с утечкой памяти
было так с включенным ReportMemoryLeaksOnShutdown := true;
2) неточное отображение на форме, не по центру
было
стало
3) при открытой MV закрыть программу, утечка памяти ReportMemoryLeaksOnShutdown := true;
4) Добавил события OnShown, OnHidden
MultiView.zip
-
Равиль Зарипов (ZuBy) отреагировална alexbirukov в Доступ к Yandex.Disk
Читал вот тут недавно статейку. Но сам пока не проверял.
-
Равиль Зарипов (ZuBy) отреагировална zonik в Unsupported media file
Я сталкивался
решил проблему использованием бесплатной библиотеки BASS сайт http://www.un4seen.com/ на сайте есть примеры использования на нескольких языках, в том числе и на Delphi
-
Равиль Зарипов (ZuBy) отреагировална Nik в Связка клиента на Anroid и сервера на Delphi7
Я читал твои впечатления.. В принципе согласен с твоими теми выводами, но в моём конкретном случае количество данных небольшое и по структуре они очень простые.. Цеплять к программе дополнительную библиотеку по обработка JSON, чтобы прочитать 2-5 полей у одной записи - это слишком накладно по моему мнению. Но в целом с JSON надо будет познакомить для общего развития )
-
Равиль Зарипов (ZuBy) отреагировална Cody71727172 в ScrollBox лагает
Попробуйте так, возможно, это то что вам нужно:
http://fire-monkey.ru/topic/1495-tmultiview-kak-izbezhat-zaderzhki-pri-pervom-poiavlenii-tmultivie/?p=7293
-
Равиль Зарипов (ZuBy) отреагировална Brovin Yaroslav в Цвет фона TMultiView
TMultiView использует стиль 'MultiViewStyle' Измените существующий или создайте свой.
-
Равиль Зарипов (ZuBy) получил реакцию от Alisson R Oliveira в SuperObject vs JSON
Привет Всем!
Решил поделится впечатлениями по работе с SuperObject'ом и родным JSON'ом
тест был файла с 2000+ объектами в JSON файле
структура файла была такая
{ "status":"OK", "last_id":"711", "objects":[ { "obj_id":"1", "obj_acc_id":"1", "obj_cat_id":"24", "obj_title":"13 магистраль", "obj_descr":"ЖК представляет собой комфортный дом, состоящий из 14 блок-секций (подъездов). Расположен в перспективном развивающемся районе по 13 Магистрали с удобным выездом как на левый берег, так и в старую часть города. Вблизи Жилого комплекса распологается новая школа, парк отдыха и культуры.", "obj_address":"ул. Мамышулы - 104, д. 16\/1", "obj_address2":null, "obj_url":"3fa07dd73be072b049529c80c7d74732", "obj_planet":"1", "obj_country":"1", "obj_region":"1", "obj_city":"292", "obj_lat":"51.141", "obj_lon":"71.4835", "obj_insert_dt":null, "obj_update_dt":null, "obj_editted":"0", "obj_updated":"0", "obj_deleted":"0", "obj_showed":"1", "obj_rating":"0", "obj_pro_top":"0", "obj_pro_selected":"0", "obj_pro_unix_dt":"0", "obj_partner":"0", "obj_parent_id":"0", "obj_has_child":"0", "obj_currency":"0" }, // тут далее 2000+ объектов ] } SuperObject Время выполнения: ~01:393
JSON родной Время выполнения: ~01:690
разница не особо ощутима, тем более если будет меньше объектов
JSON родной
function JSONParse(const aJSONData: string; const aMemo: TMemo): boolean; var aJSValue: TJSONValue; aJSObject, aJSObjArr: TJSONObject; aJSArray: TJSONArray; I: integer; begin Result := false; aJSValue := TJSONObject.ParseJSONValue(aJSONData) as TJSONValue; if Assigned(aJSValue) then begin aJSObject := aJSValue as TJSONObject; aMemo.Lines.Add('status: ' + aJSObject.GetValue('status').Value); if aJSObject.GetValue('status').Value = 'OK' then begin Result := true; if Assigned(aJSObject) then begin aJSArray := aJSObject.GetValue('objects') as TJSONArray; if Assigned(aJSArray) then begin Result := true; aMemo.Lines.Add('last_id: ' + aJSObject.GetValue('last_id').Value); aMemo.Lines.Add('count: ' + aJSArray.Count.ToString); for I := 0 to aJSArray.Count - 1 do begin aJSObjArr := aJSArray.Items[I] as TJSONObject; if Assigned(aJSObjArr) then begin aMemo.Lines.Add(aJSObjArr.GetValue('obj_id').Value + ',' + aJSObjArr.GetValue('obj_acc_id').Value + ',' + aJSObjArr.GetValue('obj_cat_id').Value); aMemo.Lines.Add(aJSObjArr.GetValue('obj_title').Value); aMemo.Lines.Add(aJSObjArr.GetValue('obj_descr').Value); aMemo.Lines.Add(aJSObjArr.GetValue('obj_address').Value); aMemo.Lines.Add(aJSObjArr.GetValue('obj_url').Value); end; end; end; end; end; aJSValue.Free; end; end; SuperObject
function JSONSOParse(const aJSONData: string; const aMemo: TMemo): boolean; var xObject: ISuperObject; xCount, I: integer; sfmt: string; begin Result := false; xObject := SO(aJSONData); aMemo.Lines.Add('status: ' + xObject['status'].AsString); if xObject['status'].AsString = 'OK' then begin Result := true; xCount := xObject['objects'].AsArray.Length; aMemo.Lines.Add('count: ' + xCount.ToString); aMemo.Lines.Add('last_id: ' + xObject['last_id'].AsInteger.ToString); for I := 0 to xCount - 1 do begin aMemo.Lines.Add(xObject['objects[' + I.ToString + ']."obj_id"'].AsInteger.ToString + ',' + xObject['objects[' + I.ToString + ']."obj_acc_id"'].AsInteger.ToString + ',' + xObject['objects[' + I.ToString + ']."obj_cat_id"'].AsInteger.ToString); aMemo.Lines.Add(xObject['objects[' + I.ToString + ']."obj_title"'].AsString); aMemo.Lines.Add(xObject['objects[' + I.ToString + ']."obj_descr"'].AsString); aMemo.Lines.Add(xObject['objects[' + I.ToString + ']."obj_address"'].AsString); aMemo.Lines.Add(xObject['objects[' + I.ToString + ']."obj_url"'].AsString); end; end; end; Разница ощутима когда пишешь код, SO намного легче читать
Подробней почитать и скачать SO
-
Равиль Зарипов (ZuBy) получил реакцию от gdm_it в ListBox, Edit и клавиатура
Пользуюсь еще вот таким модулем
просто подключаем в uses и используем для Андроид
vkbdhelper.zip
-
Равиль Зарипов (ZuBy) отреагировална Cody71727172 в ListBox, Edit и клавиатура
У Edit свойство KillFocusByReturn = true, ReturnKeyType=Done/Go/Next/Search/Send
-
Равиль Зарипов (ZuBy) получил реакцию от Martifan в ListBox, Edit и клавиатура
Пользуюсь еще вот таким модулем
просто подключаем в uses и используем для Андроид
vkbdhelper.zip
-
Равиль Зарипов (ZuBy) получил реакцию от Cody71727172 в ListBox, Edit и клавиатура
Пользуюсь еще вот таким модулем
просто подключаем в uses и используем для Андроид
vkbdhelper.zip
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в ListBox, Edit и клавиатура
Для того чтобы поля ввода были видны, в демках есть ScrollableForm
Поизучайте её
-