-
Постов
160 -
Зарегистрирован
-
Посещение
-
Победитель дней
15
Весь контент ruslan
-
купите лицензию на абракадабру !))
-
юзай Rest.Json. пишешь свой класс настроек, например: TSettings = class private fname: string; fpass : string; public property name: string read fname write fname; property pass: string read fass write fpass; end; // вытягиваешь json-строку из файла Settings:= TJson.JsonToObject<TSettings >( 'строка с json, которая из файла' ); // что-то поменял s:= TJson.ObjectToJsonString( Settings ); // сохранил json-строку в файл
-
при Add тебе возвращается указатель(!) на новый итем. смотри TListViewItems.AddItem(Index: Integer) в FMX.ListView в TListViewItems.Delete(Index: Integer) вызывается FreeAndNil итема а вот в TListViewItems.Clear просто чистится TList<TListViewItem>. как известно TList это просто список указателей. так что сама память при ListView.Items.Clear как я понимаю не освободится. как альтернатива: while ListView.Items.Count > 0 do ListView.Items.Delete(0);
-
копай TCustomListView.DrawListItems в FMX.ListView
-
на сколько я понял: анимация тормозит только первый раз. потом работает плавно. и на телефонах, и на десктопах
-
у ListView: ItemApperance = ImageListItem у итема назначаешь BitmapRef
-
совет: не общайтесь с БД напрямую. черевато. нужно какая-то прослойка в виде какого-либо апп-сервера. удобно например через rest. ну а если совсем уж нужно, почитайте вот здесь: http://docwiki.embarcadero.com/RADStudio/XE7/en/FireDAC
-
не знаю про иос. но в андроиде ничего не замораживается. при свернутом приложении у меня работает отдельный поток, который "слушает" сервак на наличие обновлений данных и выводит нотификейшены. заморозится(а точнее "умрет") поток - если андроид сам (по каким-то там своим соображениям) завершит процесс.
-
пробуй держать прогресс бар не в стиле, а создай наследника от TListBoxItem, всунь туда прогресс-бар, перепиши ApplyStyle. и работай с прогрессом как со свойством наследника
-
во-первых: отделяйте гуи от кода ! во вторых : раз у вас для каждой платформы обсолютно разная реализация интерфейса - сделайте базовую форму и рисуйте фрейм для каждой платформы в отдельных вьюхах.
-
можно вот так: TKeyBoard = class Service: IFMXVirtualKeyboardService; constructor Create; function Showing: Boolean; end; var keyBoard: TKeyboard; { TKeyBoard } constructor TKeyBoard.Create; begin inherited Create; TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(Service)); end; function TKeyBoard.Showing: Boolean; begin Result:= ( Service <> nil ) and ( TVirtualKeyboardState.Visible in Service.VirtualKeyBoardState ) end; на старте сделать keyBoard:= TKeyBoard.Create; и где нужно смотреть keyBoard.Showing а события появления\скрытия клавы ловить на TForm.OnVirtualKeyboardShown TForm.OnVirtualKeyboardHidden
-
зачем делать фреймы для каждой платформы ? сделайте 1 фрейм и юзайте его "универсально"
-
кое что интересное можно найти в этой книге. http://fire-monkey.ru/topic/793-android-xe7-potoki/#entry3319 А вообще... Вы реально думаете, что кто-нибудь будет писать серьезную книгу по fmx ?) Попробуйте написать хоть мало-мальски серьезный проект на етом фреймворке. Загляните в исходники.. Разбейте себе пару раз об голову клавиатуру и успокойтесь...
-
конкретно что не получается ?
-
вы как-то разбивайте "написание приложения" на отдельные куски чтоли...
-
посмотри. может что интересное найдешь ) стр. 129 Delphi Cookbook.pdf
-
вместо Resume юзай Start, естестно если Suspended. А вообще щас "модно" (х.з. в каких кругах) использовать System.Threading
-
И вообще перепишите код. Так не советую. Делайте в потоке в цикле гет запросы и после каждого в синхронайз создавайте и настраивайте итем. Меньше вероятность тормозов и AV.
-
ListView1.Items[i-1].BitmapRef:=TBitmap.Create; ListView1.Items[i-1].BitmapRef.Assign(img); Не так. Просто bitmap.assign(img). Проверьте размер стрима после гет-запроса. Гляньте может у вас создан view под андроид, и там стиль итема без битмапа
-
строки 147-151 procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox; const Item: TListBoxItem); begin Item.IsSelected := False; MultiView1.HideMaster; // убрать end; вы хоть немного думаете перед тем как спрашивать ?