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

Лидеры

  1. RoschinSpb

    RoschinSpb

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


    • Баллы

      5

    • Постов

      187


  2. nassl

    nassl

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


    • Баллы

      2

    • Постов

      22


  3. Maximus

    Maximus

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


    • Баллы

      1

    • Постов

      84


  4. kami

    kami

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


    • Баллы

      1

    • Постов

      643


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

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

  1. Не ссоритесь девочки пож. Возвращаясь к сути вопроса. Основная сложность тут в том, что в Delphi нельзя разрушать экземпляр класса внутри метода этого класса за исключением тех случаев, когда метод использует только для разрушения Free, DisposeOf. Почему так, а не иначе, какие есть исключения и почему "уменяфсёработает" объяснять долго, поэтому в первом приближении предлагаю принять это за аксиому. Обработчики событий OnClick и пр. вызываются из методов классов, так что разрушать контрол внутри события нельзя от слова совсем. Кроме очевидных случаев типа Self.DisposeOf существуют более запутанные варианты, когда к примеру закрывает и разрушается форма, что приводит к разрушению всех дочерних контролов. Образно говоря, самоубийства строго запрещены, но не запрещено нанимать киллера и в качестве жертвы указывать себя. Т.е. должен быть некий другой (глобальный) объект который будет разрушать объекты, которые хотели бы самоубицо. Реализацию такого объекта можете придумать сами, или использовать TPurgatory (чистилище, в католическом учении — промежуточное место между раем и адом). Но чтобы убедиться в правильности работы можно создать своего наследника TButton в котором перекрыть деструктор и поставить в нем точку останова. При запуске в режиме отладки посмотрите стек вызова деструктора (надо быть внимательным, он может быть длиннющим), ни где в этом стеке не должно быть метода разрушаемого экземпляра. Если в Вы нашли метод разрушаемого объекта (за исключением вышеуказанных), то Ваш способ удаления работает не правильно и с некоторой долей вероятности будет приводить к AV и другим "неприятностям" которые почти невозможно отловить в режиме отладки.
    5 баллов
  2. Отвечу сам себе, чтобы не потерять . Итак, хочется ловить жесты влево, вправо и после лонгтап считывать координаты точки касания. В частности изменяется размер TImage, который скрывается по окончании свайпа запуском анимации в которой Opacity меняется от 1 до 0}. TPointF P, OldP; void __fastcall TForm1::FormGesture(TObject *Sender, const TGestureEventInfo &EventInfo, bool &Handled) { if (EventInfo.Flags.Contains(TInteractiveGestureFlag::gfBegin)) { switch (EventInfo.GestureID) { case igiLongTap: OldP.y=EventInfo.Location.y; OldP.x=EventInfo.Location.x; } } else if(EventInfo.Flags.Contains(TInteractiveGestureFlag::gfEnd)) {//Жест закончен - не убирать, иначе не сработает TTouchAction::Up } else {switch (EventInfo.GestureID) {case sgiRight: DosomethingRight(); break; case sgiLeft: DosomethingLeft(); break; case igiPan: P.y=EventInfo.Location.y; P.x=EventInfo.Location.x; break; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormTouch(TObject *Sender, const TTouches Touches, const TTouchAction Action) {if (Action==TTouchAction::Up) //Палец убран {// Обработка концовки свайпа, например FloatAnimation1->Start(); } } void __fastcall TForm1::FloatAnimation1Finish(TObject *Sender) { Image->Visible=false;Image->Opacity=1;} ........................................................... PS советы по улучшению кода приветствуются, но у меня получилось так.
    2 балла
  3. Maximus

    Размер формы на Android

    Поиск рулит
    1 балл
  4. Вы выискиваете какие-то обходные маневры, генерацию уникальных имен с привлечением guid, обнуление имени после создания... а на самом деле ничего из этих костылей не нужно.
    1 балл
  5. теперь все понятно. спасибо.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...