Hevard
-
Постов
78 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Активность репутации
-
Hevard отреагировална GASCHE в Книга. Обучение мобильной разработке не Delphi
Основной задачей второго издания данной книги является актуализация представленных примеров относительно текущей версии Embarcadero RAD Studio/Delphi 10.3.2 Rio по сравнению с той, которая использовалась при подготовки первого варианта. Материал книги дополнился новыми возможностями и полезными советами, а также рекомендациями, полученными от читателей первой версии.
-
Hevard отреагировална Martifan в Как поменять надписи для кнопок в MessageDlg?
Извините я сам нашел решение если кому пригодится:
1. находим файл FMX.Consts.pas
2. Положи его в папку с проектом.
3. Menu Project->Add to Project - добавь этот файл.
4. Сохрани проект. Закрой проект. Открой проект заново.
5. Menu -> Project -> Build All Project
6. Запускаем.
-
Hevard получил реакцию от Humanoid в Вышла Delphi 11 Community Edition
Я обычно "сверху" ставлю
UniversalAdbDriverSetup.zip
-
Hevard получил реакцию от Ingalime в Вышла Delphi 11 Community Edition
Для переноса (компилирования) проектов из более ранней версии необходимо провести действия для Android 32-bit и Android 64-bit.
В окне Projects (справа) выбрать Target Platforms -> Правой кнопкой щёлкнуть по Libraries и выбрать Revert System Files to Default.
И не забудьте перенести debug.keystore из c:\Users\<USER>\AppData\Roaming\Embarcadero\BDS\21.0\ в папку ...\22.0\
Delphi: Community Edition - Embarcadero
-
Hevard отреагировална Rusland в Запрос на закрытие приложения при нажатии кнопки Назад
Подправил вот так (чтобы работало в Delphi 10 Seattle):
procedure TFormMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); var FService : IFMXVirtualKeyboardService; begin if Key = vkHardwareBack then begin TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService)); if (FService <> nil) and (TVirtualKeyBoardState.Visible in FService.VirtualKeyBoardState) then begin // Back button pressed, keyboard visible, so do nothing... end else begin MessageDlg('Закрыть приложение?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes,TMsgDlgBtn.mbNo], 0, procedure(const AResult: TModalResult) begin Case AResult of mrYes: FormMain.Close; mrNo: Exit; end; end); Key:=0; end; end; end; Работает нормально, только в диалоге запроса No стоит впереди. Как бы No и Yes поменять местами?
А еще лучше заменить на Да и Нет.
-
Hevard отреагировална Andrey Efimov в Как узнать версию приложения под Android?
Например, вот так:
{for Delphi XE6/XE7: Add to "uses" module "Androidapi.Helpers"} uses Androidapi.JNI.JavaTypes, FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText; var PackageManager: JPackageManager; VersionPackage,PackageName: JString; begin PackageManager := SharedActivity.getPackageManager; PackageName := SharedActivityContext.getPackageName; VersionPackage := PackageManager.getPackageInfo(PackageName, 0).versionName; Label1.Text := JStringToString(VersionPackage); p.s. Для подобных вопросов, у меня в блоге есть страничка "JNI Code Snippet"
-
Hevard отреагировална bigjorj в Приложение не установлено. Уже установлен пакет с таким именем и другой подписью
У меня также. Компилю Android проект на разных компьютерах. При переходе с компьютера на компьютер приходится сначала удалить приложение с устройства.
Думаю причина в том что тестовая подпись (C:\Users\{username}\AppData\Roaming\Embarcadero\BDS\17.0\debug.keystore) от эмбаркадеро разная в разных установках.
-
Hevard отреагировална sdn31 в Приложение не установлено. Уже установлен пакет с таким именем и другой подписью
Спасибо. взял ключ из "C:\Users\{username}\AppData\Roaming\Embarcadero\BDS\17.0\debug.keystore" и все заработало. Теперь со временем нужно сделать файл KeyStore.
-
Hevard отреагировална Martifan в Аналог WriteLn в TFile?
Для работы с файлами в современных версиях Delphi я рекомендую использовать классы TStringList или TFileStream. TStringList подходит для работы с текстовыми файлами, а TFileStream для работы с двоичными файлами.
Вот пример кода, как выгрузить динамический массив в текстовый файл, используя TStringList:
uses Classes, SysUtils; var IndexData: array of array of Integer; IndexFile: TStringList; I, QNum, URes, RAns: Integer; begin SetLength(IndexData, 5, 4); // Задаем размер массива IndexFile := TStringList.Create; try for I := 0 to High(IndexData) do begin // Записываем данные в массив (для примера, используем случайные значения) IndexData[I, 0] := I; IndexData[I, 1] := QNum; IndexData[I, 2] := URes; IndexData[I, 3] := RAns; // Добавляем данные из массива в строку IndexFile IndexFile.Add(IntToStr(IndexData[I, 0]) + ', ' + IntToStr(IndexData[I, 1]) + ', ' + IntToStr(IndexData[I, 2]) + ', ' + IntToStr(IndexData[I, 3])); end; // Сохраняем данные в файл IndexFile.SaveToFile('DB\Index.tmp'); finally IndexFile.Free; end; end. Когда вы используете класс TStringList, вам не нужно заботиться о закрытии файла. TStringList.SaveToFile автоматически закрывает файл после записи. Метод TStringList.Free очищает память, выделенную для объекта.
-
Hevard отреагировална FREEFAR в Как вернуть скролл в начало? TVertScrollBox
еще так можно))
VertScrollBox1.ViewportPosition.Y := 0;
-
Hevard отреагировална Вадим Шавров в Как вернуть скролл в начало? TVertScrollBox
Не помогло.
Решил поискать ответ по командам, которые вы написали. Нашел такое решение:
VertScrollBox1.ViewportPosition:=TPointF.Create(0,0); Все работает. Спасибо!
-
Hevard отреагировална slav_z в FMX: Скроллинг и нажатия
Все разработчики при работе с FMX рано или поздно сталкиваются с одной и той же проблемой: необходимо исключить "случайное" срабатывание нажатий элементов внутри скроллбокса во время его скроллинга. Идут годы, а решения так и нет. Давайте попробуем это исправить. Поехали!
Запускаем IDE, создаем новый проект, кидаем на форму TVertScrollBox и на него чего-нибудь побольше... запускаем на мобильном устройстве, пытаемся скроллировать,
получаем проблемы в виде срабатывания разных событий типа OnClick элементов.
Решение состоит в том, чтобы сделать элементы "невидимыми" для событий связанных с действиями пользователя с экраном во время скроллинга.
Делаем следующее:
Все. Переносим код в базовую форму, делаем его более гибким, убираем все те костыли, которые мы уже успели сделать ранее...
Удачи!
https://github.com/slav-libx/scroll-click.git
-
Hevard получил реакцию от MAD_EVAL в Android 10 (API уровня 29)
Осталось понять, а как быть с андроид 11?
-
Hevard отреагировална Brovin Yaroslav в [TStringGrid] Как подсветить задний фон ячейки в зависимости от данных?
Нужно:
Повесить обработчик события на ручную отрисовку ячеек: TGrid.OnDrawColumnCell: В обработчике в зависимости от требуемой строки или данных, нарисовать задний фон ячейки Затем поверх выполнить обычное отображение содержимого ячейки type TOpenColumn = class (TColumn); procedure TForm8.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); begin if Row mod 2 = 0 then begin // Выполняем закраску заднего фона Canvas.Fill.Color := TAlphaColorRec.Aliceblue; Canvas.FillRect(Bounds, 0, 0, AllCorners, 1); // Рисуем поверх обычное отображение содержимого ячейки TOpenColumn(Column).DefaultDrawCell(Canvas, Bounds, Row, Value, State); end; end; Для этого примера, у меня получилось так: