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

krapotkin

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

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

  • Посещение

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

    209

Ответы сообщества

  1. Пост krapotkin - сообщение в На Android 13 не работает LocationSensor. был отмечен как ответ   
    User PATH



  2. Пост krapotkin - сообщение в На Android 13 не работает LocationSensor. был отмечен как ответ   
    короче, все проще, как всегда
    я уже и забыл про это:
    https://docwiki.embarcadero.com/RADStudio/Sydney/en/Android_Devices_Supported_for_Application_Development
    для А13 используйте Д11 и выше
  3. Пост krapotkin - сообщение в Помогите c SQL запросом был отмечен как ответ   
    https://www.cyberforum.ru/blogs/469693/blog5254.html
    select * from user where login = :login and password = :password  
  4. Пост krapotkin - сообщение в FDConnection был отмечен как ответ   
    начнем с важных вещей:
    образно выражаясь, сначала вводят логин и пароль, а только потом нажимают кнопку, иначе в чем смысл логина вообще?
    у вас тут - сначала подключаемся, потом заполняем свойства. Кому они там нужны уже?
              FDConnection1.Connected := true;
              FDConnection1.Params.Pooled := false;
              FDConnection1.LoginPrompt := false;
              FDConnection1.Params.DriverID := 'MSAcc';....
    то же и с запросом. Сначала сделать запрос с пустым текстом, а текст запроса пообещать позже дослать?
              FDQuery1.Active := true;
              FDQuery1.SQL.Add('SELECT * FROM usersbase');
    логично, что сервер говорит SQL_NO_DATA. запроса-то нет.
    кроме того, если несколько раз нажать, то каждый раз к запросу будет добавляться строка SQL.Add(...)? зачем?
    параметры БД действительно нужно заполнять перед подключением, а вот тексты запросов, если они не меняются, достаточно один раз - в дизайн-тайме. и больше не трогать. Ну или хотя бы
              FDQuery1.SQL.Text := 'SELECT * FROM usersbase';
              FDQuery1.Active := true;
    Во всех этих ошибках нет никакой специфики FireDac. Для ADO все идентично прям на 102%
    еще по мелочам
    -ConnectionString это совсем не Database Name. Нужно читать доки. Примечание про ADO в силе. Там точно так же.
    -это конечно волшебное решение в процедуру подключения передавать параметром TLabel. Нафига ??
    -сама форма с компонентами доступа тоже не нужна. Нужен модуль данных.
    -ну и наименования форм конечно.
    Можно говорить о том, что проект исключительно мой и как хочу, так и делаю, тогда вопрос - а почему тогда он тут? И почему я должен пробираться сквозь мысли автора чтобы решить его проблему? 
    - последнее, ваш архив весит 30+ МБайт. Мой - 25 КБайт. Для чего мне все эти остальные файлы?
    CagortaModified.7z
  5. Пост krapotkin - сообщение в How to display / Select only one TListViewItem from "OnItemClick" event? был отмечен как ответ   
    Test.7z
  6. Пост krapotkin - сообщение в Форма и её скролирование был отмечен как ответ   
    Раньше трава как известно была зеленее.
    Сейчас же для скролла нужно неожиданно использовать скроллбокс.
  7. Пост krapotkin - сообщение в Как открыть окно "Поделиться" был отмечен как ответ   
    \Samples\Object Pascal\Mobile Snippets\ShareSheet
  8. Пост krapotkin - сообщение в Найти положение центра пальца в OnMouseDown был отмечен как ответ   
    да ну полноте ж)))  я всегда включаю отображение касания и вижу прям кружок, куда касаюсь
    и система дает координаты центра этого кружка, так что не загоняйтесь с софтом, это хард
  9. Пост krapotkin - сообщение в Перенос на другой компьютер был отмечен как ответ   
    ну. явно установка не удалась. совсем
    вот ссылки на образ
    ftp://ftpd.embarcadero.com/download/radstudio/10.2/delphicbuilder10_2.iso
    http://altd.embarcadero.com/download/radstudio/10.2/delphicbuilder10_2.iso
    win 10 позволяет по правой кнопке смонтировать образ как диск. далее все как обычно
    ессн сначала зачистить все что вы написали выше. вроде еще в AppData что-то валяется.
  10. Пост krapotkin - сообщение в Ошибка при компиляции был отмечен как ответ   
    последнее - банально перезагрузить девайс. если не помогло, то и компьютер
  11. Пост krapotkin - сообщение в Помогите проиграть звук в MediaPlayer был отмечен как ответ   
    что показывает функция TDirectory->GetFiles(TPath->GetHomePath()) ?
  12. Пост krapotkin - сообщение в Вывод данных был отмечен как ответ   
    1) Со стилями тормоза из-за того, что каждый раз итему переприсваивается стиль, и начинается реальный кипеш там под капотом.
    Вполне можно было просто подложить rectangle и просто задавать его цвет у каждого item. Ведь на самом деле в стилях вы делаете именно это, просто меняете цвет rectangle который где-то там в стиле.
    2) Зачем создавать динамически все контролы, если можно все оформить в TFrame и просто создавать его и класть хоть в listBox хоть в ScrollBox. (Это по сути одно и то же почти)
    3) Все зависит от количества элементов. Если их 30, то listBox вывезет. если 300 - то ни listBox ни ScrollBox тут не вывезут.
    Тогда надо брать ListView. Там все чуть сложнее, но зато нет проблем с производительностью.
     
  13. Пост krapotkin - сообщение в Работа с БД в класс был отмечен как ответ   
    Хорошей практикой является следующая концепция.
    Есть модель данных (МД) - набор классов, описывающий все, что происходит в вашей программе, и хранящий все нужные данные. 
    А есть отдельный модуль, который отвечает за загрузку и сохранение этой МД. В нем класс-"загрузчик". Чтобы вам было удобнее, можно в качестве такого модуля сделать Datamodule, в котором будут все нужные все компоненты и методы.
    При этом становится не суть важно, откуда идет загрузка, хоть из интернета, хоть из БД.
    Вопросов с выделением этих процессов в отдельные потоки не будет, только нужно помнить только одно - один поток - один Datamodule. Т.е. создавать их надо динамически.
    создали объект модели данных, создали datamodule, вызвали некий метод для загрузки данных в объект. 
    Хорошим тоном будет не создавать/уничтожать Datamodule каждый раз заново, потому что процесс подключения к БД довольно длительный по сравнению с простым запросом в БД. Поэтому можно создать какой-то пул(массив, список) уже созданных DM  и брать одну штуку из него для совершения операции, и возвращать обратно по ее окончанию.
    Получается, что каждый поток будет иметь свой Datamodule и следовательно свой FDConnection и свой FDQuery для каждой операции.
    Надеюсь, я ответил на ваш вопрос
  14. Пост krapotkin - сообщение в Движущееся изображение был отмечен как ответ   
    onPaint вызывается не когда вы хотите, а когда система считает нужным 
    а чтоб она посчитала нужным, вызывайте Invalidate.
  15. Пост krapotkin - сообщение в Отрисовка прямоугольника. был отмечен как ответ   
    Если вы хотите на чем-то рисовать, не надо портить стены, возьмите бумагу, холст там..
    Специально придуман PaintBox именно для ваших целей.
    Но для демо ровно то же самое вместо PaintBox.OnPaint сделал на Form.OnPaint
    Работает одинаково, на windows и android. Уверен, что ровно так же все будет на всех остальных ОС.
    type TForm1 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); private FCrd: TPointF; public end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin FCrd := PointF(X,Y); end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin Invalidate; end; procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); begin Canvas.Fill.Color := TAlphaColorRec.Wheat; Canvas.FillRect(rectf(FCrd.X, FCrd.Y, FCrd.X+100, FCrd.Y+100), 0,0,[], 1); end; там в проекте еще дофига разных странных решений и ошибок. Но это уже оффтоп...
  16. Пост krapotkin - сообщение в TBitmapData был отмечен как ответ   
    Считалось, что до RIO TBitmap НЕ потокобезопасен. В RIO рапортовали, что справились с этим. Не помню, проверял кто или нет
    Но TBitmapSurface был потокобезопасен уже тогда. Возможно, стоит готовить данные там, а потом просто отдавать в Bitmap
    https://stackoverflow.com/questions/37602538/delphi-tbitmap-to-string-via-tbitmapsurface-and-back-to-tbitmap
    https://stackoverflow.com/questions/51523321/how-to-draw-fmx-surface-tbitmapsurface-on-fmx-graphics-tbitmap/51526855
     
  17. Пост krapotkin - сообщение в Как заменить цвет фона TextButton в listview был отмечен как ответ   
    по мне, так лучше сделать собственного наследника TDrawable по примеру того как сделана сама эта кнопка. я делал такое, когда мне надо было иконки, уголки и другие нестандартные элементы
  18. Пост krapotkin - сообщение в Как хранить картинки? был отмечен как ответ   
    всегда лучше копировать куски из одной большой картинки, чем иметь много маленьких, поэтому ImageList самое то
    при этом нужно помнить про разумные ограничения по размеру этой "большой". поэтому даже если по одному листу на персонажа, никакой разницы не будет
    хранить так и так придется в файле, загружая при старте
    хранение в памяти самый сложный вопрос
    нужно чтобы все под рукой, и одновременно не переборщить с памятью. на мобилах ее немного. поэтому тут никто вам не ответит. крутите туда -сюда
  19. Пост krapotkin - сообщение в Как создать диаграмму из бд? был отмечен как ответ   
    нет никакого подключения
    просто в цикле по датасету создаете точки в сериях
    никакой автоматики. все вручную
  20. Пост krapotkin - сообщение в Выполнение операции после скрытия меню был отмечен как ответ   
    есть более интересный и по-мне, более правильный способ
    по нажатию в меню не сразу выполняете что-то, а ЗАПИСЫВАЕТЕ действие, которое ВЫПОЛНИТСЯ по событию закрытия мультивью
    тогда реакция наступает визуально правильная и дальше крутите колеса, запускайте потоки и все такое
  21. Пост krapotkin - сообщение в Задать область прокрутки TListBox был отмечен как ответ   
    вместо невидимости попробуйте Height = 0 
    ?
  22. Пост krapotkin - сообщение в Debugger paramentr и activity android:name был отмечен как ответ   
    возможно что-то я делаю не так
     




  23. Пост krapotkin - сообщение в Hint для Андроид был отмечен как ответ   
    для полноценной подсказки и на windows и на android я в критических местах добавляю малую кнопку с вопросиком ))
  24. Пост krapotkin - сообщение в Подгрузка элементов в момент дистанция Scrollbox был отмечен как ответ   
    поищите тему от @Равиль Зарипов (ZuBy)
    он делал пример реализации
  25. Пост krapotkin - сообщение в [THTTPClient] Как скачать файл с System.Net.HttpClient? был отмечен как ответ   
    а что подсказать-то? где код для ревью?
    h:=THttpClient.Create;
    resultStream:=TFileStream.Create(....);
    h.get(URL, resultStream);
    h.free;
    resultStream.free;
×
×
  • Создать...