sinuke

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

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

  • Посещение

  • Days Won

    3

sinuke last won the day on 19 марта

sinuke had the most liked content!

О sinuke

  • Звание
    Продвинутый пользователь
  1. не (Shared)DocumentsPath, a PublicPath если заливаете файлы в assets\internal, то ищем файлы с помощью GetDocumentsPath, при этом они никому не видны если заливаем файлы в assets\, то ищем с помощью GetPublicPath и файлы видны всем мной вышеуказаный код работает
  2. Есть несколько способов: 1) Можно сохранить ваш PDF в shared-папку. Он будет общедоступным и его можно будет открыть через интент вашим кодом из первого сообщения (только там уже будет не TPath.GetDocumentsParh, а TPath. GetPublicPath). Для этого в Deployment Manager нужное изменить Remote Path с assets\internal на assets\ procedure TForm7.btnOpenPDFClick(Sender: TObject); const SAMPLE_PDF_FILENAME = 'example.pdf'; var Uri: Jnet_Uri; OpenLinkIntent: JIntent; PDFFileName: string; begin PDFFileName := TPath.Combine(TPath.GetPublicPath, SAMPLE_PDF_FILENAME); { Внутренний доступ} if not TFile.Exists(PDFFileName) then ShowMessage(PDFFileName + ' not exist!') else begin Uri := StrToJURI('file:' + PDFFileName); OpenLinkIntent := TJIntent.Create; OpenLinkIntent.setDataAndType(Uri, StringToJString('application/pdf')); OpenLinkIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP); try SharedActivity.startActivity(OpenLinkIntent); except on E: Exception do ShowMessage('Не удалось открыть PDF. В системе нет доступных приложения для просмотра pdf'); end; end; end; 2) Способ с веббраузером TWebBrowser. Бросаете на форму TWebBrowser и передаете ему URL в виде 'file://путь к PDF'. В этом случае файл откроется вашим же приложением, PDF никто больше не увидит (если расположение оставить assets\internal). Но возможно будут проблемы с самим браузером, т.к. этот компонент иногда непредсказуем
  3. Как я понимаю, вы пытаетесь открыть внешним приложением файл, который находится в "закрытой" области, которая доступна только вашему приложению или приложениям с рутом. Как вариант, для того, чтобы иметь возможность открыть этот PDF его нужно сохранить в какую-нибудь Shared-папку. Без сохранения можно попробовать бросить на форму TWebBrowser и указать в качестве ссылки "file://ссылка на pdf" (но это не точно, не проверял)
  4. Android без дополнительных разрешений и с показом экрана набора номера: //uses Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText; var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setData(StrToJURI('tel:' + somePhoneNumber)); SharedActivity.startActivity(Intent); end; А для прямого осуществления вызова (с разрешениями) есть пример стандратный в папке: c:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Mobile Snippets\PhoneDialer\
  5. не надо удалять/пересоздавать. просто нужно контролировать эти добавляющиеся строки в Memo. для этого можно использовать свойства Tag и TagString чтобы знать, какой компонент соответствует какой строке.
  6. я так понял, что ваш код выдает следующее: а надо: как я и говорил, нужно просто указывать координату вновь создаваемому компоненту: var i: integer; p: Integer; txt: TText; begin p := 0; for i := Memo1.Lines.Count - 1 downto 0 do begin txt := TText.Create(self); txt.Parent := Form2; txt.Position.Y := p + 1; txt.Align := TALignLayout.Top; txt.Text := Memo1.Lines.Strings[i]; p := Round(p + txt.Height); end; end;
  7. если я правильно понял проблему, то надо явно указывать координату для компонента, желательно чтобы она была "координата предыдущего + высота предыдущего + 1"
  8. я как-то помечал изображения (ставил 1, 2 ,3 ...). так вот на двух устройствах с оскейлами 2 и 3 использовалась одна и та же картинка
  9. FindItemByPosition - вот тут можно найти https://github.com/rzaripov1990/ModernListView. просто скопировать два файла FMX.ListView.pas и FMX.ListView.Types.pas в папку с проектом да и высоты всех итемов (и футеров и хидеров) тоже можно узнать. самое просто - циклом пройтись и прибавлять к некой переменной высоту текущего итема. как только эта сумма станет больше локальной координаты, то найден нужный итем
  10. Для стандартного ListView я пользуюсь вот таким кодом (только для фиксированной высоты итемов): var indx: Integer; .... indx := Trunc((ListView.AbsoluteToLocal(Point).Y + ListView.ScrollViewPos) / ListView.ItemAppearance.ItemHeight); if (indx >= 0) and (indx <= ListView.Items.Count - 1) then ListView.ItemIndex := indx; А если пользуетесь ModernLV, то можно так: ListView.ItemIndex := ListView.FindItemByPosition(ListView.AbsoluteToLocal(Point).X, ListView.AbsoluteToLocal(Point).Y); где Point - это координаты нужной точки Point: TPointF
  11. в МодернЛВ есть свойства для отступов. Можно задать верхний отступ для итемов, чтобы в эту область всунуть те же SpeedButton
  12. Ну навскидку можно попробовать вот так: procedure TForm1.Button1Paint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); begin Button1.BeginUpdate; Button1.Width := Canvas.TextWidth(Button1.Text); Button1.EndUpdate; end;
  13. Я так понимаю, что "экраны" - это отдельные формы? А нажатие клавиши обрабатываете в главной форме? Если так, то, как вариант, вместо форм использовать фреймы. И тогда все заработает почти без изменений в коде
  14. вот тут я делал демку по видео (источник там есть) https://github.com/sinuke/Image-Zoom-Demo
  15. Вышло обновление до версии 1.5.0: - Исправлены переходы в глоссарии - Значительно уменьшен размер приложения - Настройки автоматической проверки обновлений - [Windows] Переработка приложения для Windows - [Windows] Добавлены анимации перехода - [Windows] Минимальные размеры окна ограничены 800 пикселями по ширине и 600 по высоте - [Android] Системная строка подкрашивается в "фирменный" синий во всех режимах работы приложения - [Android] Отключена анимация перетаскивания элементов бокового меню - [Android] Индикатор загрузки - [Android] Навигационная панель больше не перекрывает интерфейс приложения - [Android] Исправлена ошибка с сохранением PDF-документа - [Android] Увеличена скорость вывода информации и тестирования - [Android] Немного изменен внешний вид экрана вывода результата тестирования Ссылка на скачивание Android-версии: https://yadi.sk/d/edIZR2VuuRFce Ссылка на скачивание Windows-версии: https://yadi.sk/d/iIeC0OE8ukMoi