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

ruslan

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

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

  • Посещение

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

    15

Весь контент ruslan

  1. юзай 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-строку в файл
  2. при 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);
  3. ruslan

    ListItemBackground

    копай TCustomListView.DrawListItems в FMX.ListView
  4. на сколько я понял: анимация тормозит только первый раз. потом работает плавно. и на телефонах, и на десктопах
  5. у ListView: ItemApperance = ImageListItem у итема назначаешь BitmapRef
  6. совет: не общайтесь с БД напрямую. черевато. нужно какая-то прослойка в виде какого-либо апп-сервера. удобно например через rest. ну а если совсем уж нужно, почитайте вот здесь: http://docwiki.embarcadero.com/RADStudio/XE7/en/FireDAC
  7. ruslan

    Фоновые операции

    не знаю про иос. но в андроиде ничего не замораживается. при свернутом приложении у меня работает отдельный поток, который "слушает" сервак на наличие обновлений данных и выводит нотификейшены. заморозится(а точнее "умрет") поток - если андроид сам (по каким-то там своим соображениям) завершит процесс.
  8. пробуй держать прогресс бар не в стиле, а создай наследника от TListBoxItem, всунь туда прогресс-бар, перепиши ApplyStyle. и работай с прогрессом как со свойством наследника
  9. ну тогда нужно тупо проглатывать это исключение. ниче страшного не произойдет )
  10. во-первых: отделяйте гуи от кода ! во вторых : раз у вас для каждой платформы обсолютно разная реализация интерфейса - сделайте базовую форму и рисуйте фрейм для каждой платформы в отдельных вьюхах.
  11. когда закрываешь программу - проверяй, работает ли поток и дергает ли что-нибудь в данный момент. Если да - жди завершения операции и только потом закрывай
  12. можно вот так: 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
  13. зачем делать фреймы для каждой платформы ? сделайте 1 фрейм и юзайте его "универсально"
  14. кое что интересное можно найти в этой книге. http://fire-monkey.ru/topic/793-android-xe7-potoki/#entry3319 А вообще... Вы реально думаете, что кто-нибудь будет писать серьезную книгу по fmx ?) Попробуйте написать хоть мало-мальски серьезный проект на етом фреймворке. Загляните в исходники.. Разбейте себе пару раз об голову клавиатуру и успокойтесь...
  15. вы как-то разбивайте "написание приложения" на отдельные куски чтоли...
  16. посмотри. может что интересное найдешь ) стр. 129 Delphi Cookbook.pdf
  17. вместо Resume юзай Start, естестно если Suspended. А вообще щас "модно" (х.з. в каких кругах) использовать System.Threading
  18. У них там оч много заглушек )) Советую поковырять android sdk. Я обычно так делаю ...
  19. И вообще перепишите код. Так не советую. Делайте в потоке в цикле гет запросы и после каждого в синхронайз создавайте и настраивайте итем. Меньше вероятность тормозов и AV.
  20. ListView1.Items[i-1].BitmapRef:=TBitmap.Create; ListView1.Items[i-1].BitmapRef.Assign(img); Не так. Просто bitmap.assign(img). Проверьте размер стрима после гет-запроса. Гляньте может у вас создан view под андроид, и там стиль итема без битмапа
  21. обрабатывайте ItemClick, а лучше ItemClickEx. а еще лучше - забыть про ливбиндинг и делать все ручками. наелся
  22. ruslan

    MultiView

    строки 147-151 procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox; const Item: TListBoxItem); begin Item.IsSelected := False; MultiView1.HideMaster; // убрать end; вы хоть немного думаете перед тем как спрашивать ?
×
×
  • Создать...