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

zekelive

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

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

  • Посещение

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

    1

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

  1. Здравствуйте. Ознакомился с вашей статьей по ссылке. Правильно ли я понял, что можно запустить индикатор по нажатию кнопки, и там же запустить доп.поток в который и происходят вся вычисления. Вопрос в том, в доп.потоке помимо вычислений происходит и динамическое создание визуальных компонентов. Которые потом кладутся на scrollbox. Где то в этот момент при создании компонентов и зависает индикатор. Я вот и хотел узнать, как сделать так, чтобы индикатор никогда не зависал?
  2. Под заменой логики, что имеете в виду? У меня просто в голове других вариантов нет
  3. Коллеги, здравствуйте. Помогите пожалуйста с работой потоков. При запуске потока, появляется индикатор и исправно крутится. В какой то момент он залипает и перестает крутиться и так до конца работы потока. Понимаю, что в потоке идет работа с визуальными компонентами, по этому скорее всего и залипает индикатор. Как исправить/оптимизировать код? Спасибо. DelOff = class (TThread) protected FOnTaskStarted: TThreadMethod; FOnTaskFinished: TThreadMethod; procedure DoStarted; procedure DoFinished; procedure load; procedure Execute; override; public property OnTaskStarted: TThreadMethod read FOnTaskStarted write FOnTaskStarted; property OnTaskFinished: TThreadMethod read FOnTaskFinished write FOnTaskFinished; end; procedure DelOff.DoFinished; begin Add.Layout1.Visible:=false; if Assigned (Add.FindComponent('Null') as TLayout) then (Add.FindComponent('Null') as TLayout).Free; end; procedure DelOff.DoStarted; begin Add.Layout1.Visible:=true; end; procedure DelOff.load; begin try ReOpen; ClientModule2.ServerMethods1Client.Number13(a,b,g,h); a:='1'; ReOpen; offerlist1.Lines.Text:=ClientModule2.ServerMethods1Client.Number12(a,b,g,h); a:='2'; ReOpen; sumofferlist1.Lines.Text:=ClientModule2.ServerMethods1Client.Number12(a,b,g,h); a:='3'; ReOpen; keyofferlist1.Lines.Text:=ClientModule2.ServerMethods1Client.Number12(a,b,g,h); ReOpen; offercount:=ClientModule2.ServerMethods1Client.Number11(a,b,g,h); except ANM.Show; Add.Visible:=false; ShowmessageToast('Ошибка загрузки',TJToast.JavaClass.LENGTH_LONG); Value := Trim('10,500'); if Add.CheckPermission then if Value.Contains(',') then TVibratorHelper.vibrate(Value.Split([',']), -1) else TVibratorHelper.vibrate(Value.ToInt64); end; end; procedure DelOff.Execute; begin inherited; //Удаление из БД продукта try try Synchronize(DoStarted); updatecount:=StringReplace((Add.FindComponent('LabelIntro') as TLabel).Hint, 'Rec', '', [rfReplaceAll]); a:=(Add.FindComponent('NameProduct'+updatecount) as TLabel).Hint; di:= TZDeviceInfo.Create; b:=StringReplace(di.DeviceID, '=', '', [rfReplaceAll]); if(internet='true') and (server='true') then begin EditCase:='false'; Add.PSB.AutoCalculateContentSize:=false; Add.PSB.EnabledScroll:=true; Add.PSB.AutoCalculateContentSize:=true; synchronize(load); if Assigned (Add.FindComponent((Add.FindComponent('LabelDel') as TLabel).Hint)) then begin (Add.FindComponent((Add.FindComponent('LabelDel') as TLabel).Hint) as TRectangle).Free; (Add.FindComponent('RecEdit') as TRectangle).Free; end; Add.PSB.ScrollTo(0,0,true); for countload:=0 to StrToInt(offercount)-1 do begin (Add.FindComponent('XRun'+IntToStr(countload)) as TFloatAnimation).Enabled:=false; (Add.FindComponent('x'+IntToStr(countload)) as TImage).Opacity:=0; (Add.FindComponent('VRun'+IntToStr(countload)) as TFloatAnimation).Enabled:=false; (Add.FindComponent('v'+IntToStr(countload)) as TImage).Opacity:=0; end; end else begin ShowmessageToast('Нет интернета',TJToast.JavaClass.LENGTH_LONG); Value := Trim('10,500'); if Add.CheckPermission then if Value.Contains(',') then TVibratorHelper.vibrate(Value.Split([',']), -1) else TVibratorHelper.vibrate(Value.ToInt64); end; finally Synchronize(DoFinished); end; except ANM.Show; Add.Visible:=false; ShowmessageToast('Ошибка загрузки',TJToast.JavaClass.LENGTH_LONG); Value := Trim('10,500'); if Add.CheckPermission then if Value.Contains(',') then TVibratorHelper.vibrate(Value.Split([',']), -1) else TVibratorHelper.vibrate(Value.ToInt64); end; end;
  4. Коллеги, туплю. Очистка обычного TScrollBox происходит отлично таким кодом: Assert(ANM.VSB <> nil); TOpenScrollBox(ANM.VSB).Content.DeleteChildren; ANM.VSB.Repaint; Как очистить от наследников TPresentedScrollBox?
  5. zekelive

    Артефакты вокруг TLabel

    Всем добра) коллеги, подскажите пожалуйста, с чем связаны артефакты вокруг TLabel? Некие полосы вокруг надписей. Метка лежит на TColorBox, а он в свою очередь на VertScrollBox.
  6. zekelive

    MultiSelect в TDateEdit

    Понял. Спасибо за отклик) буду пилить в два окошка.
  7. zekelive

    MultiSelect в TDateEdit

    Коллеги, подскажите пожалуйста. Есть ли возможность множественного выбора дат в данном компоненте или другой компонент с таким функционалом?
  8. Коллеги, подскажите, с TMapVIew что то изменилось в настройках? Перешел на версию 10.4 Android и понадобилась снова работа с картами. Как обычно получил apikey добавил Maps Service в настройках RAD, все разрешения дал на геолокацию и Ничего. Приложение падает при создании TMapVIew; Код крайне банален: procedure TGeo.Button3Tap(Sender: TObject; const Point: TPointF); var map:TMapView; begin map:=TMapVIew.Create(Geo); map.Parent:=Geo; map.Align:=TAlignLayout.Client; end; Что снова не так и куда смотреть?
  9. Возможно ваш вопрос и решите так же через компилятор android x64
  10. Спасибо всем. Проблему решил компилятором на Андроид x64. Так как для приложений под 10 Андроид есть куча особенностей.
  11. Проверил на более старой версии андроида работает. на 8 андроиде. у меня 10 на другом смартфоне. Копать в сторону SDK?
  12. Коллеги, здравствуйте. Поставил новую версию студии и привычный код местами стал подводить. Как обычно создаю форму Application.CreateForm(TRegForm, RegForm); if Assigned(RegForm) then begin RegForm.Visible:=true; Main.Visible:=false; end; и при выполнении кода вылетает ошибка, что на скрине. Уже туплю. Скажите, что изменилось? как теперь запускать формы. P.S. Тоже самое происходит, если формы переместить в раздел auto-create forms. Форма создается в единственном случае, когда в шапке ставишь ее главной.
  13. Интересные подробности. Спасибо, буду думать как организовать это.
  14. С шифрование разобрался спасибо за информацию. Возник вторичный вопрос, т.к. пароль указывается в интерфейсе самого firebird из под delphi, не будет ли возможно его вытащить из apk файла путем его декомпиляции? Или лучше пароль передать из серверной БД? Пароль для обращения к БД каким то образом шифруется или нет?
  15. Спасибо, буду пробовать.
  16. Действительно, спасибо, обращу внимание. Обращаться к БД так же, или после шифрования что то меняется? Запросы выборки и ТД так же выполнять?
  17. Катраз использую sql lite для локальной БД. Но из коробки delphi шифрование отсутствует. Подскажите, в какую сторону копать?
  18. Товарищи, здравствуйте. Хотел бы проконсультироваться с вами на довольно сложно для меня тему. Имеется клиентское мобильное приложение на Андроид. Принцип его просто, загружает фирмы из БД в scrollbox. За счёт того, что сразу загрузка всех данных из сервера занимает длительное время, было принято решение загружать с сервера только ключевую информацию (название фирмы), а остальную информацию загружать из локальной БД. При этом, т.к. файл БД можно легко вытащить из apk файла любому человеку, размещать всю БД на локалке нельзя. Только информацию в целом не представляющую большой значимости в отдельности от названия фирмы и не только. Вопрос, правильная ли схему построения была выбрана с точки зрения защиты данных (если это так можно назвать), и оптимизации загрузки информации. Приветствуются ваши советы, как лучше построить схему взаимодействия приложения с БД, или как лучше защитить данные. В идеале для быстродействия, загнать побольше данных в локальную БД.
  19. Проблема решилась добавление ApiKey. В первый раз добавил не тот ApiKey. Спасибо всем за помощь.
  20. Подскажите, с ключом разобрался, вылетать перестало. Но карта пустая. На ней нету ничего. Ещё одна преблуда нужна?)
  21. Google Maps Settings Вроде нашел статью по этой теме, всем на заметку ккто сталкнется.
  22. У меня есть приложение, которое заливается на Маркет, соответственно там прописаны уже все ключи, но и в том приложение все равно происходит вылет при добавлении карты на форму. Нужен ключ специально для карт? Как его получить и куда воткнуть?
×
×
  • Создать...