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

krapotkin

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

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

  • Посещение

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

    209

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

  1. тут все непросто если нет связи например, или еще какая-то совсем беда, остаемся на первой если не залогинены, загружаю форму логина если залогинены - одну из двух "главных" (по смыслу, не по делфи) форм приложения при этом на каждой из форм есть и фреймы и всякая другая беда
  2. главное - главную форму делать из трех компонентов - бэкграунд, лого и кнопка Начать тогда все будет очень хорошо и быстро
  3. в TTask будет то же что в TThread только в модном спагетти-стиле ))
  4. можно сделать обычное окно, только прозрачное полностью, а на него положить непрозрачный image и кнопку. а вызывается псевдомодальная форма на Android / ios так: form2.ShowModal(procedure (aresult:TModalResult) begin // этот код получает управление при выходе из "модального" окна end)
  5. а чем вам не угодил TThread ? кроме того, если у вас что-то обращается в сеть, прервать это что-то не удастся, только выйти по тайм-ауту. поток просто ждет этого выхода, не блокируя программу.
  6. 1. все, что происходит с КОМПОНЕНТОМ, придется делать в ГП. Это заполнение св-ва Path 2. НО! все, что нужно предварительно рассчитать, не должно быть в ГП Как вариант procedure TMyThread.Execute; begin while not Terminated do begin ProcessCurrentState(); Synchronize(UpdateUserInterface); sleep(UpdateInterval); end; end; при этом ПО-ЛЮБОМУ будет уходить время на UpdateUserInterface/ Линейно увеличиваясь с кол-вом компонентов
  7. нет имеется в виду что Synchronize - это выполнение в главном потоке если весь код вашего потока выполняется в главном потоке, то зачем заводить поток??? у меня аналогичная анимация Path происходит путем расчетов ключевых точек в дополнительном потоке, и только заполнение готового Path.Path происходит в главном т.к. это всяко компонент и тут без ГП никак
  8. при установленном cnPack такое иногда у меня бывает. но редко и плюсы гораздо круче минусов и обычно никаких разрушений не несет. перезапустился и вперед. а Ctrl+Shift+S у меня на автомате со времен Turbo Pascal )
  9. не надо ничего в потоке, который так же сожрет весь проц
  10. вы вообще не читаете? этот пример от первого не отличается ничем. у вас неправильный алгоритм. вы нарушаете главный цикл приложения. программа и так находится в большом цикле while not terminated do begin processMessages end; и все события, которые возникают в программе и системе, обрабатываются именно там. вы нажимаете кнопку - вам временно передается управление, чтобы выполнить обработчик кнопки. потом программа опять находится в ожидании событий, и при этом не жрет процессор как не в себя. то, что вы делаете собственный цикл - разрушает нормальную обработку в главном цикле и забирает все свободное время процессора.
  11. 1. как уже отметили fr - это поле формы 2. вместо fr.free нужно freeAndNil(fr);
  12. вы не поверите, этот цикл УЖЕ встроен в программу (см. Application.Run) , и повторять его не надо. и вам уже написали 2.5 раза, как нужно делать. Под windows, android, и вообще любую платформу
  13. неправильно. это не должен быть цикл в понимании for, repeat, while это должна быть запись некоего состояния программы, изменение состояния, отражение состояния в пользовательском интерфейсе TForm1=class(TForm) ... ProcessStarted:boolean; PressCount:integer; ... end; procedure TForm1.Button1Click(...) begin StartProcess(); end; procedure TForm1.Button2Click() begin CheckProcessEnd(); end; procedure TForm1.StartProcess(); begin ProcessStarted:=true; PressCount:=0; button1.enabled := false; button2.enabled := true; end; procedure TForm1.CheckProcessEnd; const PRESS_COUNT_PENDING=5; begin inc(PressCount); if (PressCount=PRESS_COUNT_PENDING) then begin ProcessStarted:=false; button1.enabled:=true; button2.enabled:=false; end; end; да. именно конечный автомат это и есть.
  14. а если до нажатия 5 раз ничего делать не надо, то и таймер лишний )))
  15. еще хотелось бы знать, а что нужно-то ? из вашего кода не ясно запустить поток, активировать кнопку Button2 чтобы она остановила поток? либо выполнять какое-то действие время от времени, а по Button2 прекратить его выполнять? тогда простой таймер вполне решает вопрос
  16. что-то сильно поменяется в следующей версии??
  17. по слухам, у дешевых китайцев он один на всех
  18. думаю, можно попробовать TPath
  19. Очень трудно найти в сети упоминание о том, что PrototypeBind... это исключительно маркетинговый инстумент для создания "Live" демо. Он просто сам от фонаря генерирует данные нескольких типов, и можно их посмотреть в design-time при работе приложения он никак не должен использоваться
  20. и там написал и тут напишу - т.к. вам все равно рисовать руками тотально все кроме сетки, то проще уж все и нарисовать, включая сетку. и не использовать StringGrid. А в приведенном примере после черного Canvas.FillRect нужно еще и белый текст нарисовать поверх. а на белых клетках - черный
  21. Всеволод, я совсем не согласен с вашей гипотезой "сами разработчики виноваты" Начиная c XE4 всем говорили - волк, волк вот, программируйте на Андроид. А оно не работает. XE5, XE6, XE7, XE8 и все равно падает на ровных местах и никакой работодатель не хочет слушать, что я не знаю, почему (( Править исходники Delphi квалификация не позволяет, да и слишком темная магия там ... Репутация сложилась, однако. С Сиэтла, наконец, программы перестали просто падать, а репу-то уже трудно поправить. Ну вот я сумел практически шантажом и обманом выкатить один проект на делфи в релиз. Но больше пока никто не соглашается выплатить мне 150000 для покупки апгрейда...
×
×
  • Создать...