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

haword

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

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

  • Посещение

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

    19

haword стал победителем дня 16 февраля 2022

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

1 Подписчик

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

15 274 просмотра профиля
  1. требовалось когда то - печать на принтер через блютуз накладных агентами по продажам. приезжали в точку, отдавали товар, печатали ТТН и уезжали в другую точку.
  2. haword

    RAD 11 и Android

    здесь https://docwiki.embarcadero.com/RADStudio/Alexandria/en/FireMonkey_Platform_Prerequisites написано - Warning: RAD Studio supports these Android development tools. Do not use other versions or update them independently of RAD Studio.
  3. больше не поддерживается это. ищите как это делаться в новой версии.
  4. haword

    RAD 11 и Android

    embarcadero говорят что не надо так делать, только то sdk что идет с дистрибутивом будет 100% работать.
  5. новый андроид, новая sdk, новая делфи или с++ билдер )
  6. просто все забываешь что знал про делфи и начинаешь кодить на java или kotlin ) в принципе там своих заморочек полно. все заново изучать. в интернете полно учебников как по шагам это сделать. но за то потом результат будет налицо. гриды летают. работа с потоками не тормозит прокручивающийся грид. минус - на ios уже конечно не запустишь свое ПО. я пробовал и Android Studio и Xamarin. мой вердикт такой - быстро, на коленке, пару кнопок и список чего либо без заморочек с кэшированием картинок и так далее - fmx пойдет, или там калькулятор налабать. если хочешь чтобы приложение летало, списки прокручивались плавно, без тормозов, при это не было проблем что не запускается на новом андроиде - то Android Studio. Если хочется заморочиться и в результате получить ПО работающее быстрее чем FMX но тормознее чем на Android Studio но за то с возможностью запуска на iOS MacOS то Xamarin. Если сравнивать Xamarin с FMX то тут так, Xamarin более отзывчивее, поддержка лучше, реагируют на новые SDK быстрее, но нельзя просто так рисовать на Canvas как в FMX потому что его там нет. Например если захотите подкрасить ячейку в списке в отдельный цвет то придется пройти целый квест чтобы это сделать меняя стили. На FMX перекрыл прорисовку ячейки и рисуй сам что хочешь. Поэтому в итоге для себя решил что Win Mac Lin - FMX, для мобильных ОС либо Xamarin но там придется прыгать с бубном делая так чтобы приложение работало везде одинаково, либо Android Studio и XCode если хочешь надежности и стабильности.
  7. как то все через заднее место ) если я правильно понял то должно быть так - по таймеру запускается поток, в нем идет вычисление и синхронизация для обновления информации. если делать как у вас то в каждом цикле надо сообщать потоку что пора бы обновить данные. так как поток может хз когда вызваться и счетчик может уже далеко улететь. при этом если вы используете одновременно одну переменную ее надо делать потокобезопасной и блокировать.
  8. так они не обязывают вводить api какое то время пока не обкатают новшества. а потом в play появляется это обязанность определенного api. а в делфи тянут до последнего с этим пока запрета не будет опубликовывать такие приложения.
  9. только проблема в том что при выходе новой версии андроид по написанное на делфи начинает падать и надо ждать новую версию делфи чтобы исправить это. андроид студия бесплатна и выходит часто, так что подготовится всегда можно успеть.
  10. ну не так все плохо ) Для Win32/64, Mac, Linux - FMX Для Android - Android Studio я думаю так наиболее оптимально.
  11. то же самое просто ставить развилки в зависимости от ос ) по винде можно попробовать этот вариант из интернета type TMargins = record Left, Top, Right, Bottom: Double end; procedure GetPrinterMargins(var Margins: TMargins); var PixelsPerInch: TPoint; PhysPageSize: TPoint; OffsetStart: TPoint; PageRes: TPoint; begin PixelsPerInch.y := GetDeviceCaps(Printer.Handle, LOGPIXELSY); PixelsPerInch.x := GetDeviceCaps(Printer.Handle, LOGPIXELSX); Escape(Printer.Handle, GETPHYSPAGESIZE, 0, nil, @PhysPageSize); Escape(Printer.Handle, GETPRINTINGOFFSET, 0, nil, @OffsetStart); PageRes.y := GetDeviceCaps(Printer.Handle, VERTRES); PageRes.x := GetDeviceCaps(Printer.Handle, HORZRES); // Top Margin Margins.Top := OffsetStart.y / PixelsPerInch.y; // Left Margin Margins.Left := OffsetStart.x / PixelsPerInch.x; // Bottom Margin Margins.Bottom := ((PhysPageSize.y - PageRes.y) / PixelsPerInch.y) - (OffsetStart.y / PixelsPerInch.y); // Right Margin Margins.Right := ((PhysPageSize.x - PageRes.x) / PixelsPerInch.x) - (OffsetStart.x / PixelsPerInch.x); end; function InchToCm(Pixel: Single): Single; // Convert inch to Centimeter begin Result := Pixel * 2.54 end; procedure TForm1.Button2Click(Sender: TObject); var Margins: TMargins; begin GetPrinterMargins(Margins); ShowMessage(Format('Margins: (Left: %1.3f, Top: %1.3f, Right: %1.3f, Bottom: %1.3f)', [InchToCm(Margins.Left), InchToCm(Margins.Top), InchToCm(Margins.Right), InchToCm(Margins.Bottom)])); end; а вообще может просто лист не правильно в принтер вставляешь?)
  12. тогда не понял ничего. почему бы вам не сделать смещение в пикселах для печати? типа настройки страницы и там в точках отступ и его при печати использовать? тогда под каждый принтер можно будет подстроиться. у меня другая проблема была, у меня при печати текста было ощущение что весь текст на несколько градусов повернут что ли, и у буквы К вертикальная грань сверху съезжала на 1 пиксель где то относительно низа. Но это было только при печати в pdf на macos.
  13. картинка ровная в image1 а на принтере косо? а так тоже криво? Printer.Canvas.DrawBitmap(Image1.Bitmap, RectF(0,0, Image1.Bitmap.Width, Image1.Bitmap.Height) , RectF(0,0, Printer.PageWidth, Printer.PageHeight), 1);
  14. есть такой косяк у fmx. нельзя получить ширину этих полей у листа а соответственно печать немного кособочит. если есть возможность найдите (купите) fastreport fmx там они свои модули для печати написали и можно разобраться как работает. как костыль, более-менее получается правильно когда сначала рисуешь на TBitmap потом копируешь картинку на канву принтера. НО! при этом появляется другой косяк, в fmx картинка не может быть больше 8000х8000 а у принтеров может быть разрешение и побольше.
  15. Добрый день. Чем не понравилось мое решение? Надо просто пробежаться по всем параметрам TFDQuery и в зависимости от типа поля получить значение и сохранить его или поместить в сам запрос. Но помещая его в сам запрос нужно будет конвертировать вручную по типу, особенно даты. Why didn't you like my answer? You just need to loop through all TFDQuery parameters in a loop and, depending on the type of the field, get the value, save it, or put it into the query itself. But placing it in the query itself will need to be converted manually by type, especially the date.
×
×
  • Создать...