Alex7wrt

Пользователи
  • Публикаций

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

  • Посещение

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

    16

Alex7wrt стал победителем дня 8 июня

Alex7wrt имел наиболее популярный контент!

Информация о Alex7wrt

  • Звание
    Продвинутый пользователь

Информация

  • Пол
    Мужчина

Посетители профиля

1 068 просмотров профиля
  1. Alex7wrt

    ListView, сброс SearchBox

    Добрый день Использую ListView.SearchBox для фильтра текста итемов. При первом использовании все норм. Но если после первого использования заменить тексты итемов, то поиск работает уже некорректно, то есть не находит итемы, которые содержат вводимый в SearchBox текст. Что нужно сделать, чтобы после замены текстов у итемов в ListView поиск через SearchBox всегда работал корректно? Может быть, какой-то сброс или что-то типа того? Заранее спасибо Rad Studio 10.1.2
  2. На Xiaomi "Now" выдает правильное время. Посмотрите в настройках телефона параметр "Регион"
  3. Alex7wrt

    System.Net.Socket.TSocket

    Используйте TCPServer/TCPClient Для отправки по TCP. Там принцип работы тот же, многие методы/свойства идентичны. У меня все работает на всех платформах Прием данных в TCPServer делайте в OnExecute. В TCPClient для приема используйте поток: procedure TTCPConnectThread.Execute; begin while not Terminated do begin try if TCPClient.Connected then begin //Здесь считываем данные, например с помощью TCPClient.IOHandler.ReadLn, и обрабатываем их end; finally sleep(100); end; end; end;
  4. Уважаемый X11, пожалуйста, не вводите людей в заблуждение. По теме обязательного использования последних API на форуме уже есть несколько тем. С августа разрешена публикация новых приложений только с API не ниже 26 (Android 8.0), а с ноября для обновлений. Для того, чтобы приложение соответствовало новым требованиям, в файле мвнифеста нужно поменять параметр TargetSDKVersion на 26 или выше. Google никого банить не будет. Приложение просто не пропустят на публикацию. Уже сейчас при размещении в Google Play приложения с более ранней версией SDK, появляется предупреждение, что скоро публиковать можно только с SDK 26 и выше. Существующие же приложения никто трогать не будет.
  5. Alex7wrt

    PopUp и Canvas

    Можете сами рисовать PopUp на той же канве. Любой формы, цвета и т.д. По событиям мыши переприсваивать булевы переменные показать/скрыть PopUp, по координатам курсора определять над каким Item находится курсор мыши и т.д. Да, это более длинный подход, зато более универсальный.
  6. Полностью согласен с Krapotkin. Выделять отдельный поток только для создания визуальных компонентов не имеет смысла, так как синхронизацией вы все равно создаете их в главном потоке. Поток нужен для работы с данными или невизуальными компонентами, например THTTPClient, UDP, TCP и т.д. К примеру, вот вариант загрузки картинок по http: procedure TInitThread.Execute; var HTTP: THTTPClient; Stream: TStringStream; i: shortint; success: boolean; begin try try HTTP:=THTTPClient.Create; Stream:= TStringStream.Create('',TEncoding.ANSI); HTTP.Get('адрес www', stream); Stream.Position:=0; names.LoadFromStream(Stream); i:=names.Count; while i>0 do begin try setlength(images,length(images)+1); images[length(images)-1]:=TBitMap.Create; Stream.Clear; HTTP.Get('адрес www'+names[i-1]+'.png',Stream); Stream.Position:=0; Synchronize(procedure begin images[length(images)-1].LoadFromStream(Stream); end); except images[length(images)-1]:=noname; end; names.Delete(i-1); i:=i-2; end; success:=true; except names.Clear; success:=false; end; finally HTTP.Free; Stream.Free; end; end; Пример может немного корявый, но из него видно, что синхронизация используется только для загрузки данных в Bitmap, (и то потому что это код под 10.1 Berlin. Начиная с версии 10.2 битмапы тоже можно загружать в потоке), все остальное в синхронизации не нуждается. Прошу прощения за небольшой оффтоп (хотя это можно отнести к вопросу № 3), но как вы делаете переключение фреймов свайпом? Очень интересно
  7. По моему, все равно. Как вам удобнее. Я так понимаю, что TTask разработаны с прицелом на параллельные вычисления, когда нужно выполнять однотипные операции в нескольких потоках. Для этого дела там имеются опции по ожиданию выполнения остальных потоков и т.д. TTask также удобен тем, что его можно сразу использовать, не нужно объявлять поток. TThread удобен, если нужно выполнить определенный набор действий по завершению потока (с помошью OnTerminate). Может и в TTask такое есть, не знаю Лично я просто привык использовать TThread
  8. Дело в том, что индикатор отрисовывается в основном потоке. По видимому ваша процедура также выполняется в основном потоке. Чтобы не было подтормаживаний, выполняйте фоновые операции в отдельном потоке, а при необходимости отрисовать какой-нибудь визуальный компонент, пользуйтесь Synchronize или Queue.
  9. Alex7wrt

    TMotionSensor

    Подтверждаю Раньше никогда не работал с сенсорами. И вот сразу обнаружил эту неприятную особенность на некоторых телефонах. На Xiaomi Redmi 3S все работает отлично, но на Samsung Galaxy S7 Edge (который по идее супер нафарширован сенсорами) что акселерометр, что гироскоп выдает сплошные нули. Другие приложения из Google Play типа "Уровень" или "Компас" работают понятное дело отлично, а собранное в FMX - Нет. ((( По комментарию выше подозреваю что проблема с самсунгами. Но ведь сторонние приложения работают. В чем же может быть причина? Хотя судя по тому, что это единственная тема на форуме по датчикам движения, подозреваю, что ответ вряд ли получу )) Но хоть для истории коммент останется unit uMain; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms3D, FMX.Forms, FMX.Dialogs, System.Sensors, FMX.Controls3D, FMX.Objects3D, FMX.StdCtrls, FMX.Layers3D, FMX.MaterialSources, FMX.Types3D, System.Math.Vectors, FMX.Controls.Presentation; type TGyroscopeForm = class(TForm3D) Rectangle3D1: TRectangle3D; Timer1: TTimer; LightMaterialSource1: TLightMaterialSource; Light1: TLight; Layer3D1: TLayer3D; Label1: TLabel; procedure Timer1Timer(Sender: TObject); procedure Form3DCreate(Sender: TObject); end; var GyroscopeForm: TGyroscopeForm; FSensor1: TCustomOrientationSensor; FSensors: TSensorArray; FSensorManager: TSensorManager; implementation {$R *.fmx} {$R *.LgXhdpiPh.fmx ANDROID} procedure TGyroscopeForm.Form3DCreate(Sender: TObject); var Sensor: TCustomSensor; begin { attempt to get and activate the sensor manager } FSensorManager := TSensorManager.Current; FSensorManager.Activate; FSensors := TSensorManager.Current.GetSensorsByCategory(TSensorCategory.Orientation); FSensor1 := nil; for Sensor in FSensors do if TCustomOrientationSensor(Sensor).SensorType = TOrientationSensorType.Inclinometer3D then begin FSensor1 := TCustomOrientationSensor(Sensor); Break; end; if not Assigned(FSensor1) then begin Label1.Text := 'Gyro not found'; Exit; end; if not FSensor1.Started then begin FSensor1.Start; Timer1.Enabled := True; end; end; procedure TGyroscopeForm.Timer1Timer(Sender: TObject); begin { check for sensor assignment } if Length(FSensors) > 0 then if Assigned(FSensor1) then begin Rectangle3D1.RotationAngle.X := FSensor1.TiltX; Rectangle3D1.RotationAngle.Y := FSensor1.TiltY; Rectangle3D1.RotationAngle.Z := FSensor1.TiltZ; Label1.Text := Format('Gyro: %3.1f %3.1f %3.1f',[Rectangle3D1.RotationAngle.X, Rectangle3D1.RotationAngle.Y, Rectangle3D1.RotationAngle.Z]); end; end; end.
  10. Чтобы сохранялась прозрачность, перед заполнением канвы делайте Canvas.Clear(0);
  11. Alex7wrt

    Увеличение содержимого TImage

    C помощью DrawBitmap отрисовать канву увеличиваемой области в прямоугольнике большего размера.
  12. Пробовали сделать все 120 картинок в один ряд, без столбцов?
  13. Все равно спасибо за участие!
  14. Alex7wrt

    Настройки SDK для Токио

    Это пути к файлам Android SDK, которая в целом отношения к студии не имеет. Если она у вас расположена в папке Берлина, то укажите пути к ней и все.