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

Alex7wrt

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

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

  • Посещение

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

    31

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

  1. Приложение грузится с самого начала даже если выйти на рабочий стол, а затем сразу вернуться в приложение?
  2. У меня в приложении с таймером после выхода на рабочий стол, запуска нескольких разных приложений, а затем запуска этого приложения, таймер продолжает считать и видно, что считал все это время, пока приложение не отображалось на экране. И это без персистента. Может быть у Вас причина выгрузки приложения из памяти в чем-то другом. Потребляет слишком много ресурсов, например.
  3. Здравствуйте. Вообще-то выход на рабочий стол не подразумевает закрытия приложения. Если Вы хотите, чтобы оно вообще никогда не закрывалось, то можете воспользоваться параметром Persistent в Project Options->Version Info. Здесь подробнее.
  4. Попробуйте так: FloatAnimation1 = FloatAnimation2;
  5. Спасибо, но эту тему я видел. Чесно говоря, предложение пользоваться Open Source библиотеками для меня пока еще темный лес. Надеялся, что может кто-то подробнее расскажет.
  6. Всем здравствуйте. Интересует такой вопрос - возможно ли воспроизводить MIDI файлы средствами FireMonkey без установки дополнительных кодеков? То есть, чтобы приложение воспроизводило деплоиные midi файлы на любом устройстве под управлением Android?
  7. Решения пока не нашел. Но заметил интересную вещь. При дефолтных 60 фпс приложение с несколькими компонентами анимаций в Windows грузит процессор на 15%. При изменении же этого параметра у любой одной анимации на значение 50, загрузка процессора падает до 0. Хотя визуально разницы практически не видно. Вот вам и способ повышения быстродействия анимации )). Не знаю, в чем прикол. Возможно, при 60 фпс процессор участвует в отрисовке, а при меньшем значении всю отрисовку выполняет видеокарта. Возможно, что это так только на моем компе. Но в Android при 50 тоже приложение шустрее работает, (хотя это конечно понятно), но на глаз ощутимее, чем 17% снижения фпс.
  8. Тогда та же книга, та же глава. Смотрите события Grid-а OnSetValue, OnGetValue. UPD. Если Вы еще собираетесь менять цвет ячеек или оформлять их каким-то образом, то можно заполнять их данными в событии OnDrawColumnCell, после чего методом TGrid.Repaint обновлять содержимое.
  9. Если Вы используете StringGrid, то заполнение аналогично предыдущим версиям Delphi. StringGrid1.Cells[i,j] := SomeString; Посмотрите Осипов. Delphi. Программирование для Windows, OS X, iOS и Android. Глава 12. стр. 188. Сетка TStringGrid.
  10. Всем здравствуйте! Столкнулся с такой проблемой. При изменении свойства AniFrameRate у одного объекта TFloatAnimation c дефолтных 60 до 10 или другого меньшего чем 60 значения, все анимации на форме, а не только эта, начинают тормозить, как будто этот параметр поменялся для всех анимаций, пока не поменяешь обратно. Для больших 60 значений все нормально. )) Вопрос: отчего так происходит?
  11. Это для VLC. Но в XE7 VLC эти события для формы реализованы.
  12. Если Вы создаете проект только под Windows, то можете использовать VLC. Там эти события формы присутствуют. А как эти события могут пригодиться в Android, если форма открывается на весь экран?
  13. Возможно. Самый простой вариант - в цикле перед присвоением кнопке координат, проверять, не занята ли уже эта область. Если да, пробовать снова и так, пока не попадешь в свободную область. О какой панели речь? Часть кнопки может вылазить за пределы формы, если позиция курсора близка к границе формы. Тогда в событии OnMouseMove нужно выполнять проверку на предмет того, начинает ли выходить часть кнопки за пределы формы и, если да, то не менять позицию кнопки. Уверен, что Вы вполне можете догадаться до всего этого сами. Конечно случается, что спрашиваешь о том, о чем сам можешь догадаться. У меня тоже так бывает. Но желательно, чтобы это не превращалось в правило.
  14. Можно использовать событие OnMouseMove формы, в котором проверять если 0<=X<=Width и 0<=Y<=Height, то запускаете то, что должно происходить если курсор находится в пределах формы, иначе - если вне ее.
  15. И учтите, что в этом коде создваемые кнопки могут налазить друг на друга.
  16. да, просто поменяйте везде 10 на любое другое число или объявите переменную, отвечающую за количество и замените ею десятку
  17. Вы точно уверены, что не нужно? UPD: Tip: Notice that the OnPaint event handlers do not need to call BeginScene explicitly. Да, не нужно. Убрал в коде.
  18. Может быть. По привычке написал. Тормознее же не станет?
  19. Сделал набросок. Надеюсь разберетесь. unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Single); procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Single); procedure FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Buttons: array[1..10] of TButton; X1,Y1,X2,Y2: array[1..10] of single; xOffset,yOffset: single; implementation {$R *.fmx} procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); var i: byte; begin xOffset:=X; yOffset:=Y; for i:=1 to 10 do if (Buttons[i] as TControl)=Sender then begin X1[i]:=TButton(Sender).Position.X+X; Y1[i]:=TButton(Sender).Position.Y+Y; break; end; end; procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Single); var i: byte; begin if (ssLeft in Shift) then with (Sender as TControl) do begin Position.Y := Position.Y+Y-yOffset; Position.X := Position.X+X-xOffset; end; for i:=1 to 10 do if Buttons[i]=Sender then begin X2[i]:=TButton(Sender).Position.X+TButton(Sender).Width/2; Y2[i]:=TButton(Sender).Position.Y+TButton(Sender).Height/2; break; end; form1.Invalidate; end; procedure TForm1.FormCreate(Sender: TObject); var i: byte; begin randomize; for i:=1 to 10 do begin Buttons[i]:=TButton.Create(Form1); with Buttons[i] do begin Parent:=Form1; Width:=60; Height:=20; Text:='Button'+inttostr(i); Position.Point:=PointF(random(Form1.Width-Round(Width)),random(Form1.Height-Round(Height))); X1[i]:=Position.X+Width/2; X2[i]:=X1[i]; Y1[i]:=Position.Y+Height/2; Y2[i]:=Y1[i]; OnMouseDown:=Button1MouseDown; OnMouseMove:=Button1MouseMove; end; end; form1.Invalidate; end; procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); var i: byte; begin for i:=1 to 10 do Canvas.DrawLine(PointF(X1[i],Y1[i]),PointF(X2[i],Y2[i]),1); end; end.
  20. Может быть я Вас не совсем понял. Что значит реализовать? В FireMonkey Они есть. Событие OnMouseEnter происходит когда курсор мыши входит в область объекта, OnMouseLeave - когда покидает ее.
  21. Когда-то в Delphi7 не знал, что есть такой компонент как PageControl (вообще-то, когда узнал о нем, то все равно его оформление мне не понравилось). Так вот. Для показа/скрытия объектов на разных "вкладках" использовал функции от логической переменной. Внутри функций параметру Visible объектов, которые нужно скрыть или показать, присваивал эту переменную. То есть true или false. Если все компоненты, которые должны отображаться/не отображаться на вкладке, загнать в такую функцию, то изменением этого параметра можно сделать одни видимыми, а другие - невидимыми, что реализует процесс переключения вкладок. В качестве последних использовал TMainMenu. Но я согласен, что для большого количества вкладок и элементов это не совсем удобно.
  22. При создании эффекта анимации для изменения прозрачности элемента с эффектом тени (анимация прозрачности от 0 до 1), тень полностью исчезает. Аналогичная проблема рассматривалась в http://fire-monkey.ru/topic/743-effekt-nevidimka/ Но, насколько я понял, там речь шла о Delphi XE6. Я же наблюдаю эту проблему В Delphi XE7 Update1. В связи с чем вопрос - не появился ли способ обойти эту проблему кроме описанного по ссылке способа использования PNG файла с тенью?
×
×
  • Создать...