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

x11

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

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

  • Посещение

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

    13

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

  1. Т.к. у FMX/Android нет модальных форм, то я взял за пример работу с диалогами. Есть работающий пример TDialogService.InputQuery(cap, ['Введите имя: '], Val, InputDialogHandlerEditTelName); .... .... .... procedure TfmEditObject.InputDialogHandlerEditTelName(const AResult: TModalResult; const AValues: array of string); begin ... ... end; Я решил пойти по тому же пути. Есть некая главная форма с кнопкой, которую пользователь нажимает, выбирает на другой форме что-то и, по идее, должна выполниться какая процедура на первой форме. Главных форм несколько, т.к. во многих местах приложения пользователь что-то выбирает. А форма выбора для всех одна. Я добавил в проект модуль, где написал: type TCallBackProcSelectRef = reference to procedure(idRegion: integer; constsFullRegion: string); ... procedure CallBackProcSelect(idRegion: integer; const sFullRegion: string); implementation procedure CallBackProcSelect(idRegion: integer; const sFullRegion: string); begin fmMain.lbSelRegion.Text := sFullRegion; fmMain.idRegion := idRegion; end; На форме выбора есть процедура private procedure SelRegion2(CallBackProcSelectRef: TCallBackProcSelectRef); ... ... procedure TfmTree.SelRegion2(CallBackProcSelectRef: TCallBackProcSelectRef); begin CallBackProcSelectRef(TreeView1.Selected.Tag, TreeView1.Selected.Text); end; здесь же, на форме выбора, на кнопке выбора есть строка: SelRegion2(CallBackProcSelect); вроде бы всё так же, как и с диалогами, но компилятор ругается: Incompatible types: 'TCallBackProcSelectRef' and 'Procedure' что я не правильно понял в анонимных процедурах, что я делаю не так?
  2. У TTabControl есть пара элементов TTabItem. Нужно с анимацией переключаться между ними. В ActionList добавил стандартный Action - ChangeTabAction и создал процедуру: procedure TfmMain.ChangeTab(ATab: TTabItem); begin ChangeTabAction1.Tab := ATab; ChangeTabAction1.ExecuteTarget(self); end; Проблема в том, что при переключении с первой на вторую вкладку TTabItem анимации нет. А вот если переключаешься обратно на первую вкладку, то анимация есть. Но... проблема проявляется только на Андроид-устройстве. На Windows переключаение выполняется с анимацией в обе стороны.
  3. Berlin ругается при компиляции на вот эту строку: PreloadContent(Control.Controls); Incompatible types: 'TControl' and 'System.Generics.Collections.TList<FMX.Controls.TControl>' Что не так у меня?
  4. Ага, я так понял, что в Deployment manager нужно потом нажимать кнопку "Reconcile".
  5. Тип проекта - multidevice. При старте аппликации на Андроиде запускается сперва какая-то стандартная форма, типа встроенного splash`a. Решил поменять там картинки на свои. Зашел в меню Project/Options. Слева выбрал Application. Вверху выбрал All configuration - Android platform. Поменял все картинки на свои. Нажал ОК. Потом открываю Deployment. И что я вижу. То, что я добавлял в настройках проекта, ничего нет в Deployment. Наоборот, всё осталось по-старому. Не понимаю тогда, зачем оно в настройках проекта? Т.е. получается, что надо менять и там, и там? Или только в Deployment?
  6. В библиотеке OrangeUI есть TSkinFMXPopup с нужными готовыми событиями.
  7. при старте формы это событие срабатывает ПЯТЬ раз
  8. Т.е . "слепили горбатого" по быстренькому без событий? Кто проверит, в новых версиях Delphi, добавили события? По идее нужно 2 события: схлопывание и разворачивание.
  9. Может, проблема в том, чем именно открываете? Может текст всё-таки хранится правильно, но отображается неправильно?
  10. x11

    Пустой Bitmap на Android

    Поискал по форуму, нет сообщений Равиля с описанием даже с кратким. Здесь: http://fire-monkey.ru/topic/4079-listview-в-берлине-и-в-токио/?do=findComment&comment=26973 есть описание: I.OwnsBitmap:=true; // указываем ListViewItem, чтобы он уничтожал экземпляр картинки при своем уничтожении Но оно непонятно как относится к созданию. А здесь пишут: http://fire-monkey.ru/topic/3014-ne-otobrazhaetsya-tlistitemimage/?do=findComment&comment=18113 Что в событии "OnUpdateObjects" должно быть наоборот - в False. Причем, я так понял, что OwnsBitmap должно быть раньше создания картинки.
  11. x11

    Пустой Bitmap на Android

    В общем, спасла одна строка ListItemImage.OwnsBitmap := True; Кстати, в справке ни слова о том, что такое OwnsBitmap и как это правильно применять. stream := TBlobStream.Create(qObjects2img, bmRead); try if stream.Size <= 0 then ListItemImage.ImageIndex := 0 else begin ListItemImage.OwnsBitmap := True; ListItemImage.Bitmap := TBitmap.CreateFromStream(stream); end; finally stream.Free; end;
  12. x11

    Пустой Bitmap на Android

    По совету krapotkin`a http://fire-monkey.ru/topic/4595-listview-скрывает-повторяющийся-текст-заголовков/?do=findComment&comment=29209 Забросил LiveBinding при заполнении TListView и начал заполнять ручками. Почти всё хорошо за исключением загрузки картинки из базы. При использовании LiveBinding картинка грузилась, а теперь просто пустота. На Windows картинки грузятся и отображаются, а на Андроиде не хотят. Вот часть кода загрузки Var stream: TBlobStream; ... begin .... lv.BeginUpdate; try lv.Items.Clear; qObjects2.close; qObjects2.Open; while not qObjects2.Eof do begin item := lv.Items.Add; item.Data[sItemId] := qObjects2id.AsString; item.Data[sItemPrice] := qObjects2price.AsString; item.Data[sItemType] := qObjects2type_name.Value; ... ... ... ListItemImage := Item.Objects.FindObjectT<TListItemImage>(sItemImg); stream := TBlobStream.Create(qObjects2img, bmRead); try if stream.Size <= 0 then ListItemImage.ImageIndex := 0 else ListItemImage.Bitmap := TBitmap.CreateFromStream(stream); finally stream.Free; end; К ListView прикреплен список картинок, где есть картинка-пустышка, которая грузится, если у записи нет картинки. вот этой строкой ListItemImage.ImageIndex := 0 картинки-пустышки нормально отображаются и на Андроид-устройстве в том числе. Ошибок нет, а просто пустой TListItemImage там, где должна быть картинка. Может, я какое-то свойство забыл включить у TListItemImage? При отладке видно, что картинка загружается из базы.
  13. http://fire-monkey.ru/topic/4574-listview-dynamicappearance-header/
  14. Я сделал проще. Я уменьшил высоту header и footer до 1. К сожалению элементы header и footer удалить нельзя не получилось у меня. Я увеличил основной элемент и добавил 2 текстовые метки. Теперь к ним можно добраться вот так: lv1.Items[li.Index].Objects.FindObjectT<TListItemText>('txtHeader').Text; lv2.Items[li.Index].Objects.FindObjectT<TListItemText>('txtFooter').Text; Я не понимаю, зачем авторы придумали такой странный способ, что DynamicApearance состоит физически из трёх элементов TlistItem?
  15. Может быть из-за того, что кроме основного элемента, есть ещё заголовок и подвал? Тогда почему 2 раза, а не 3?
  16. И OnUpdatingObjects выполняется тоже два раза для каждого Item`a.
  17. Сделал такой эксперимент в событии OnUpdateObjects if AItem.Purpose in [TListItemPurpose.Header] then Memo1.Lines.Add(AItem.Text); И в memo загрузилось в два раза больше строк, чем элементов списка. Это нормально, так и должно быть?
  18. В событии OnUpdateObjects есть код if AItem.Purpose = TListItemPurpose.Footer then AItem.Text := 'какой-то текст'; всегда false а с заголовком работает нормально if AItem.Purpose = TListItemPurpose.Header then AItem.Text := 'какой-то текст'; Т.е. визуально в редакторе Item`a подвал (footer) есть, но код не работает.
  19. Я не говорю, что Ваш подход - неправильный. Наоборот - Вы показали пример ещё одного способа наполнения Item`а. Я о том, что мне проще воспользоваться дизайнером. Кстати, про падение среды при удалении элементов Item`а. Если в дизайнере Item`a удалять элементы не кнопкой Del на клавиатуре, а щелкнув по нему правой кнопкой мышки в окне Structure, то среда не падает.
  20. Да, согласен, глючит, даже при удалении метки, например, среда падает. Но работать можно. В новых версиях, надеюсь, подправят, улучшат. Всё же с редактором Item`а значительно быстрее.
  21. просто отодвигаю текст и он не залазит
  22. В ручную всё создавать, когда есть визуальный редактор? Нет уж, увольте. Прописывать каждое свойство всех меток: расположение, размеры, место и т.д. Я как подумаю, что каждую метку "центрировать" в коде, запускать приложение, проверять, если не понравилось, сновать высчитывать и так по кругу....
  23. x11

    Delphi и Android 8

    Тут пишут, что даже отладка работает https://community.embarcadero.com/blogs/entry/debugging-delphi-apps-on-android-8-1-works
  24. Может, на устройстве нужно какие-то спец. разрешения дать? Включить режим разработчика, может.
×
×
  • Создать...