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

Major

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

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

  • Посещение

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

  1. Источник: https://www.tiobe.com/tiobe-index/ В марте 2016 года был по популярности на 11 месте, через год - на 9 месте, скинув Ruby и Perl. Это нужно отметить.
  2. kami, спасибо за помощь. В статье Я.Бровина про удаление объектов под Андроидом ни слова о методе Release: http://yaroslavbrovin.ru/object_life_cycle_in_delphi_part_2_android_ios-ru/
  3. enatechno, спасибо за ответ! 1 Вариант. Заменой удаления фреймов на скрытие (подправленный проект приложил). Фреймов будет много и они будут не такими голыми, как в тестовом примере, поэтому скрывать/показывать - не подойдет (думаю, что быстро кончится память). 2 Вариант. Расположить панель с кнопкой Back на главной форме, а не дублировать ее в каждом фрейме. (При необходимости саму кнопку Back можно скрывать при возврате на первый таб). Идея интересная, только тогда получится два тулбара (один - для Back, второй - для самого фрейма, где на тулбаре будет несколько кнопок). Не очень красиво 3 Вариант. Использовать отложенное удаление фрейма (например в потоке). а есть пример? интересно очень
  4. кстати, подскажите, как можно извлечь полезную информацию из этого окна?
  5. запустил программу через отладчик, получил такую ситуацию. Открывается FMX.Controls, а в нем: procedure TControl.MouseClick(Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin if FPressed and not(FDoubleClick) and PointInObjectLocal(X, Y) then begin Click; FPressed := False; StartTriggerAnimation(Self, 'Pressed'); end; end;
  6. а как можно решить эту проблему? как перейти из фрейма на главную вкладку не только через vkHardwareBack? вот приложил тестовый проект Test.zip
  7. Господа, помогите пожалуйста разобраться, в чем проблема. В программе одна форма, на ней табконтрол с двумя вкладками. TabPosition - None. Одна вкладка выполняет роль меню, из которой можно перейти во вторую вкладку, куда грузится фрейм. Если возвращаться в главную вкладку из фрейма через обработку OnKeyUp, то всё норм, без зависаний: procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if (Key = vkHardwareBack) then begin Key := 0; if (TabControl1.ActiveTab = TabItem1) then Close else TabControl1.ActiveTab := TabItem1; end; end; А если через кнопку внутри фрейма Form1.TabControl1.ActiveTab := Form1.TabItem1; то виснет. Уничтожаю фрейм так: procedure TForm1.TabControl1Change(Sender: TObject); begin if (TabControl1.ActiveTab = TabItem1) then if (FFrame <> nil) then begin FFrame.Parent := nil; FFrame.DisposeOf; FFrame := nil; end; end;
  8. Major

    OnCreate для фрейма

    Что-то я не понял, а почему для TFrame нет события OnCreate? Оверрайд что ли делать?
  9. я вот сейчас еще раз проверил. Всё, что кидалось в Deployment, - в apk-файле находится в папке assets. А то, что подключалось через ресурсы (brcc32), то находится в .so-файле. Delphi 10.1 Berlin. Можете сами проверить
  10. В настройках проекта Version Info, label можно выставить надпись, которая будет показываться на смартфоне для иконки программы. А как ее динамически менять при установке на смартфон? (в зависимости от языка системы)
  11. Есть ли способ сделать стандартные контроли (TGroupbox, например) прозрачными? В Windows-приложении они прозрачные, а в Android-приложении имеют белый фон. Спасибо.
  12. если каждый туда будет писать, представляю, какой бардак там может образоваться))
  13. а Samsung Galaxy S4 относится ко многим телефонам? На нем есть Menu.
  14. на моем смартфоне есть кнопки HardwareBack, Home, Menu, а на планшете кнопки Menu физически нет
  15. Major

    vkHardwareBack, vkHome, vkMenu (Android)

    Можно ли как-то узнать список доступных кнопок (HardwareBack, Home, Menu) на том или ином девайсе? Еще заметил, что кнопки vkHardwareBack и vkMenu можно перехватить в OnKeyUp, а кнопка vkHome выполняется так, как системе угодно.
  16. ENRGY, а как вам такой способ (не мой)? uses Androidapi.Helpers, Androidapi.JNI.App, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText; var SP: JSharedPreferences; SPE: JSharedPreferences_Editor; procedure TMain.FormShow(Sender: TObject); begin SP := TAndroidHelper.Activity.getSharedPreferences(StringToJString('ZTApp'), 0); IP.Text := JStringToString(SP.getString(StringToJString('IP'), StringToJString('127.0.0.1'))); end; procedure TMain.SaveClick(Sender: TObject); begin SPE := SP.edit; SPE.putString(StringToJString('IP'), StringToJString(IP.Text)); SPE.commit; end;
  17. Major

    Реестр в Андроиде и Delphi

    Господа, а есть ли в Андроиде нечто подобное реестру в Windows? Нужно записать некоторые данные в систему, которые не должны теряться при удалении программы. И как работать с этим, используя Delphi? Заранее спасибо.
  18. kami, то есть самый верный способ для Андроида - это такой (если именно перебирать в цикле детей): for K := Layout1.ChildrenCount - 1 downto 0 do if Layout1.Children[K].ClassNameIs('TCircle') then (Layout1.Children[K] as TCircle).Release;
  19. Господа, есть ли способ проверить утечки памяти в Android-приложении? ReportMemoryLeaksOnShutdown работает только для Windows.
  20. у меня почему-то идея, взятая из той статьи, приводит к exception class EArgumentOutOfRangeException with message 'Argument out of range' с выбросом в procedure TListHelper.CheckItemRange(AIndex: Integer); begin CheckItemRangeInline(AIndex); end; Мой код: for K := Layout1.ChildrenCount - 1 downto 0 do begin if Layout1.Children[K].ClassNameIs('TCircle') then begin (Layout1.Children[K] as TCircle).Parent := nil; (Layout1.Children[K] as TCircle).Free; end; end;
  21. или лучше: for K := Layout1.ChildrenCount - 1 downto 0 do if Layout1.Children[K].ClassNameIs('TCircle') then begin (Layout1.Children[K] as TCircle).DisposeOf; (Layout1.Children[K] as TCircle) := nil; end; или так: for K := Layout1.ChildrenCount - 1 downto 0 do begin if Layout1.Children[K].ClassNameIs('TCircle') then begin (Layout1.Children[K] as TCircle).Parent := nil; (Layout1.Children[K] as TCircle).Free; (Layout1.Children[K] as TCircle) := nil; end; end;
  22. Читал несколько статей по удалению объектов в Android-приложениях, но до сих пор каша в голове. Помогите прояснить ситуацию, пожалуйста. Вот я создаю в run-time объекты: for J := 0 to Num - 1 do begin MyCircle := TCircle.Create(Layout1); MyCircle.Parent := Layout1; MyCircle.Width := 100; MyCircle.Height := 100; MyCircle.Align := TAlignLayout.Left; MyCircle.Fill.Color := TAlphaColors.Red; end; Потом я хочу почистить слой от кружков. Так будет правильно? for K := Layout1.ChildrenCount - 1 downto 0 do if Layout1.Children[K].ClassNameIs('TCircle') then (Layout1.Children[K] as TCircle).Free; Или кроме Free еще что-то надо?
  23. А с какого перепуга на Андроиде у имаджа свойство Bitmap.Canvas.Scale = 3? Рисую я на канве имаджа примитивы разные, под Виндоуз всё красиво отображается, под Андроидом - всё огромное. Дай думаю проверю Scale, а он почему-то трем равняется!
  24. а как сделать, чтобы по окружности был черный цвет? Уже всё перепробовал с Canvas.Stroke, не появляется черный периметр(
×
×
  • Создать...