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

Лидеры

  1. kami

    kami

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


    • Баллы

      5

    • Постов

      643


  2. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      1

    • Постов

      2 124


  3. krapotkin

    krapotkin

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


    • Баллы

      1

    • Постов

      2 179


  4. ENERGY

    ENERGY

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


    • Баллы

      1

    • Постов

      568


Популярный контент

Показан контент с высокой репутацией 12.03.2017 во всех областях

  1. Поправка: это самый верный способ для FMX, вне зависимости от платформы. Емнип, у TCircle нет наследников. Ну и - для использования Release не обязательно приводить тип к истинному классу объекта. Поэтому сей код можно записать так (не проверял в IDE, но если скомпилируется - значит всё нормально): for k:=Layout1.ChildrenCount-1 downto 0 do if Layout1.Children[k] is TCircle then Layout1.Children[k].Release;
    2 балла
  2. Нет, не правильнее. Объект может иметь ссылки не только в родителе (в списке его дочерних контролов), но и еще в куче мест, например - на которые он подписался (FreeNotification, к примеру) или на которые подписали его. Поэтому из родителя он исчезнет, Free - заNilит его текущую ссылку, но сам объект не удалится. Ссылка не на ту статью. В другой статье Ярослав упоминал Самый Правильный Метод - это вызвать myObject.Release. Это гарантированно удалит все ссылки на объект, присутствующие во внутренностях FMX. Понятное дело, что если объект присутствует где-то в списках (или просто отдельной переменной) в коде, созданном вами, то нужно заNilить эти ссылки (и удалить из списков) самостоятельно.
    2 балла
  3. As far as I know, это пока единственный способ (сам не пробовал). Буду рад узнать, если появились другие возможности.
    1 балл
  4. TForm1 = class(TForm) b1: TButton; b2: TButton; MapView1: TMapView; procedure b1Click(Sender: TObject); procedure b2Click(Sender: TObject); public LineDestroy:TmapPolyline; end; procedure TForm1.b1Click(Sender: TObject); var Line:TmapPolylineDescriptor; Points:TArray<TMapCoordinate>; begin SetLength(Points, 2); MapView1.Location :=TmapCoordinate.Create(49.901493, 28.587838); Points[0]:=TmapCoordinate.Create(49.901493, 28.587838); Points[1]:=TmapCoordinate.Create(49.897793, 28.585026); Line:=TmapPolylineDescriptor.Create(Points); Line.Geodesic:=True; Line.StrokeColor:=TAlphaColorRec.Red; LineDestroy:=MapView1.AddPolyline(Line); end; procedure TForm1.b2Click(Sender: TObject); begin LineDestroy.Remove; end;
    1 балл
  5. Да кстати это плохая практика. К примеру под iOS если программа потребляет много памяти сначала получает didReceiveMemoryWarning, затем автоматом убивается системой. Android попроще в этом плане, но тоже особо не жалует, и если такая прога будет в фоне, и как только потребуется память, то первыми на вылет. В общем это не Винда с ее "бесконечным" виртуальным свопом.. И хотя игрушки тянут гораздо больше памяти, а FMX гораздо меньше, но все такие вы должны быть в курсе.
    1 балл
  6. Добрый день, Так же, как и в случае конвертации HBitmap -> TBitmap var tmpIcon: Vcl.Graphics.TIcon; tmpStream: TMemoryStream; begin tmpIcon := TIcon.Create; try tmpIcon.Handle := GetIcon; tmpStream := TMemoryStream.Create; try tmpIcon.SaveToStream(tmpStream); Image1.Bitmap.LoadFromStream(tmpStream); finally tmpStream.Free; end; finally tmpIcon.Free; end; end; GetIcon - функция, которая возвращает хендл иконки. в вашем случае infofile.hIcon
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...