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

slav_z

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

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

  • Посещение

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

    33

Сообщения, опубликованные slav_z

  1. другой путь - регистрация собственного редактора свойства StyleLookup для своего компонента (посмотрите модуль source\Property Editors\FmxStyleLookup.pas)

  2. попробуйте переопределить метод function GetDefaultStyleLookupName: string; override; своего компонента.... и вернуть название класса стиля родителя... (посмотрите переопределение этого метода у стандартных компонентов)

  3. здесь на форуме это все уже обсуждалось...  на андроид 11 изменилось расположение системных библиотек...  дельфи 10.2 об этом не знает...  10.3.3 еще можно было заставить работать с андроид 11 (исправлением и перекомпиляцией System.pas)... но надо ставить 10.4...  надо... sdk и файл манифеста тыркать бесполезно....

  4. Все разработчики при работе с FMX рано или поздно сталкиваются с одной и той же проблемой: необходимо исключить "случайное" срабатывание нажатий элементов внутри скроллбокса во время его скроллинга. Идут годы, а решения так и нет. Давайте попробуем это исправить. Поехали!

    Запускаем IDE, создаем новый проект, кидаем на форму TVertScrollBox и на него чего-нибудь побольше... запускаем на мобильном устройстве, пытаемся скроллировать,

    948961889_.thumb.png.b8ef6c5a390b4486174c9bfcb7589fd0.png

    получаем проблемы в виде срабатывания разных событий типа OnClick элементов.

    Решение состоит в том, чтобы сделать элементы "невидимыми" для событий связанных с действиями пользователя с экраном во время скроллинга.

    Делаем следующее:

    892700318_.thumb.png.d0a87941115cd53d5977021908779a87.png

    Все. Переносим код в базовую форму, делаем его более гибким, убираем все те костыли, которые мы уже успели сделать ранее...

    Удачи!

    https://github.com/slav-libx/scroll-click.git

  5. ListBox1.Items.AddStrings(TDirectory.GetFiles('c:/','*'+Exp,TSearchOption.soAllDirectories));

    но работать она будет не быстро..  ей надо всю структуру диска С обойти...

    лучше ее в отдельном потоке запускать...

     

  6. 24 минут назад, Delpher-X сказал:

    Так мне нужен не только корень, но и вложенные каталоги. 

    тогда понятно... эта функция только из определенного каталога файлы получает... ща попробую..

  7. 10 минут назад, Delpher-X сказал:

    То есть, вот эта строка  будет искать все файлы с указанным расширением? А вместо TDirectory.GetCurrentDirectory можно указать например, 'C:/'?

    да... но именно эта строка не только получит все нужные файлы из указанной директории, но и добавит их в ListBox

  8. вот ваш код с ListBox...  все работает без ошибок

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Exp:='.txt';
      ListBox1.Items.AddStrings(TDirectory.GetFiles(TDirectory.GetCurrentDirectory,'*'+Exp));
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
    FileIndex, FileName : String;
    I : Integer;
    begin
    randomize;
    FileIndex := IntToStr(random(5000));
    for I := 0 to ListBox1.Items.Count-1 do
    begin
    FileIndex := IntToStr(StrToInt(FileIndex) + 1);
    FileName := FileIndex + Exp;
    TFile.Copy(ListBox1.Items[I], FileName);
    end;
    //Timer2.Enabled := False;
    end;

    проверьте ВСЕ ваши файлы doc на наличие флага "только для чтения"...  место на диске есть?... без вашего проекта сложно угадать причину...

  9. 5 минут назад, Delpher-X сказал:

    он что именно делает? 

    цикл по текстовым файлам из указанной директории

    для вас будет for S in TDirectory.GetFiles(TDirectory.GetCurrentDirectory,'*.doc') do

  10. 5 минут назад, Delpher-X сказал:

    Потому что я не знаю, как из строк ListBox'а, где лежит весь путь, выделить собственно само имя файла. 

    TPath.GetFileName(ListBox1.Items)

     

  11. без вашего проекта можно долго гадать...  похожий код у меня работает без ошибок...

    procedure TForm1.Button6Click(Sender: TObject);
    var
      S: string;
      I: Integer;
    begin
      I:=random(5000);
      for S in TDirectory.GetFiles(TDirectory.GetCurrentDirectory,'*.txt') do
      begin
        Inc(I);
        TFile.Copy(S,I.ToString+'.txt',True);
      end;
    end;

     

  12. подозрение на таймер... (перенесите Timer2.Enabled := False; в начало метода, может он где то запускается повторно)

    подозрение на функцию random()... почему именно так сделано получение начального индекса для файлов?

×
×
  • Создать...