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

Alex7wrt

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

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

  • Посещение

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

    31

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

  1. Я не целиком знаком с Вашей задумкой, но как вариант: Для каждой кнопки также объявить логическую переменную, которая будет отвечать за то, двигали ли уже этой кнопкой. В событии OnMouseMove присвоить логической переменной этой кнопки true и переменным, соответствующим этой кнопке координаты ее центра. В событии OnPaint формы для каждой кнопки проверять, если логическая переменная true, то рисуем линию по координатам соответствующей кнопки. Да, как заметил xenon54, ключевой момент - в OnPaint нужно все время отрисовывать то, что Вы хотите видеть.
  2. Гораздо проще для каждой кнопки объявить свою пару переменных, которые отвечают за координаты линии.
  3. Создавать переменные для каждой кнопки
  4. Выше xenon54 писал об этом. Именно так
  5. Как насчет того, чтобы для точности линнии вместо положения кнопки указывать положение ее центра?
  6. Или Form1.Invalidate. Есть еще метод InvalidateRect Для перерисовки прямоугольного фрагмента формы.
  7. Canvas.DrawLine(PointF(X1,Y1), PointF(X2,Y2), Opasiti: Single)
  8. Можно, конечно. Просто определяйте координаты конца в OnMouseMove
  9. Какой путь рисовать - решаете только Вы. Для рисования прямой линии можно вычислить координаты центра объекта в событии OnMouseDown, а затем их же в событии OnMouseUp, и построить линию по этим двум точкам.
  10. В событии OnMouseMove помимо изменения координат перетаскиваемого элемента можно вызывать событие OnPaint главной формы и передавать координаты, по которым рисовать путь.
  11. Осипов. Delphi. Программирование для Windows, OS X, iOS и Android. стр. 76. Листинг 4.11. Перемещение объектов с помощью мыши.
  12. Смотрите в сторону обработки событий Drag & Drop, OnMouseDown, OnMouseMove, OnMouseUp
  13. Так и сделано. Выбрана альбомная ориентация. После чего в коде появляется строка Application.FormFactor.Orientations := [TFormOrientation.Landscape]; Именно поэтому приложение на смартфоне и запускается принудительно в альбомном виде, то есть поворачивается при запуске в альбомную ориентацию из любой другой позиции. Но вопрос в том как при повороте избавиться от анимации этого поворота, чтобы приложение просто сразу запустилось в альбомной ориентации и все.
  14. Спасибо за совет. Я прошу прощения, речь шла об альбомном режиме, а я по ошибке написал везде "портретный" Естественно, строка Application.FormFactor.Orientations := [TFormOrientation.Landscape]; присутствует. Иначе бы приложение не разворачивалось бы в альбомный режим. Но дело в том, что разворячивается оно долго с эффектом поворота. У таких приложений как Angry Birds тоже вроде есть поворот при запуске, но он практически не заметен.
  15. Всем доброго времени суток. При запуске приложения с альбомной ориентацией на смартфоне, оно не просто запускается с появления заставки, а сначала воспроизводится анимация поворота экрана, после чего уже приложение приобретает альбомный вид. Вопрос в следующем: как сделать так, чтобы никаких поворотов не было, а приложение сразу запускалось в альбомном виде как например Angry Birds )). Среда XE7, Android 4.0.3 Спасибо за внимание.
  16. На разных устройствах могут быть недоступны некоторые пути папок http://delphifmandroid.blogspot.com/2014/02/deployment-manager.html
  17. Какой путь Вы указываете в Deployment для загружаемых файлов?
  18. Добрый день. Как вариант можно попробовать загружать файлы с ресурсов.
  19. Большое спасибо за ответ, а также ссылки на информацию по вопросу. Правильно ли я понимаю, что в Android, кроме использования метода free с удаляемым объектом, нужно обнулить все ссылки на него, чтобы полностью освободить занимаемую им память? То есть помимо того, что в моем коде, нужно поудалять ссылки на удаляемые объекты?
  20. Есть глобальный массив объектов var comp: array [1..12] of TRectangle; В процедуре создаю сами объекты и по 2 потомка к каждому из них procedure ......................... var element1, element2: TRectangle; i: byte; begin for i:=1 to n do begin comp[i]:=TRectangle.Create(form1); comp[i].Parent:=form1; ....................... element1:=TRectangle.Create(comp[i]); element1.Parent:=comp[i]; ........................ element2:=TRectangle.Create(comp[i]); element2.Parent:=comp[i]; ......................... end; end; В теле другой процедуры уничтожаю все объекты procedure ......................... var i: byte; begin for i:=1 to n do comp[i].free; end; Все как-бы работает. Но после многократного повторения этих процедур программа работает все медленнеее и медленнее с каждой следующей операцией создания-удаления. При этом никаких новых компонентов не создается. Поэтому и появились мысли, что не все компоненты удалены. Возможно остались неудаленными потомки. Пробовал изменить тело процедуры удаления на: for i:=1 to n do begin for j:=0 to comp[i].ChildrenCount-1 do comp[i].Children[j].Free; comp[i].Free; end; Но ничего не меняется. Поэтому прошу совета, в чем может быть причина замедления программы и как правильно удалять потомки. Программа для Android.
  21. У Осипова получение снимка с камеры описано так: Осипов. Delphi. Программирование для Windows, OS X, iOS и Android. стр. 131. Предопределенные команды. 1. Разместите на форме элементы TImage, TButton и TActionList 2. Выберите кнопку и в Инспекторе объектов найдите свойство Action. Разверните комбинированный список и, пройдя по цепочке New Standard Action | Media Library, выберите предопределенную команду TTakePhotoFromCameraAction. 3. В окне Инспектора объектов перейдите на вкладку Events и найдите событие OnDidFinishTaking() для только что созданного командного объекта. 4. Двойной щелчок по строке события перенесет нас в редактор кода, в котором нам придется написать всего одну строку procedure TForm1.TakePhotoFromCameraActionlDidFinishTaking(Image: TBitmap); begin Image1.Bitmap.Assign(Image); end;
×
×
  • Создать...