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

Sashar333

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

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

  • Посещение

Весь контент Sashar333

  1. Сделал вот так: FkPrinter:=TMyPrinter.Create(Printer.ActivePrinter.Device,true); var OffsetX := FkPrinter.GetOffsetX; var OffsetY := FkPrinter.GetOffsetY; printer.Canvas.Offset := TPoint.Create(OffsetX , OffsetY); При выборе любого принтера (у меня их три), все Offset'ы = 0 И печатает соответственно также ... Может еще есть варианты для пробы?
  2. А как это смещение вычислить, сколько пикселей составляет это смещение? На разных принтерах оно разное? Требуется запуск печати двумя кнопками, без личных настроек пользователя: нажал кнопку печать - выбрал принтер - нажал кнопку ОК
  3. Не то что косо, происходит смещение, как-бы за границу видимости на листе. т.е. если если нарисовать вертикальную линию от 0,0 до 0,Printer.PageHeight, то она не напечатается у меня на принтере, а если, допустим, рисовать от 200,0 до 200,Printer.PageHeight то она печатается Мне требуется нарисовать таблицу максимальную по размерам листа, но она обрезается как на рисунке выше. Делал как в учебнике: SrcRect := Image1.LocalRect; DestRect := TRectF.Create(0, 0, Printer.PageWidth, Printer.PageHeight); Printer.Canvas.DrawBitmap(Image1.Bitmap, SrcRect, DestRect, 1); или RectF(0,0, Image1.Bitmap.Width, Image1.Bitmap.Height) это совсем другое чем Image1.LocalRect ?
  4. Printer.Canvas.DrawBitmap(Image1.Bitmap, SrcRect, DestRect, 1); С bitmap'ом тоже так же печатает. Может существует максимальное для принтеров смещение (PHYSICALOFFSETX)?
  5. Про поля понял, спасибо! а где и как можно получить Printer.Handle? в FMX.Printer не могу найти его ...
  6. Здравствуйте! Подскажите пожалуйста в чем причина смещения изображения при печати по горизонтали относительно листа? procedure ThePrint(day : arraySheet; prn : TPrintDialog); var DestRect, Rect_cell, Rect_Size:TRectF; i,pageall:integer; textFill: tFillTextFlags; poses : TPoses; Col1 : boolean; COLROW : integer; sizeRow : Single; Image : TImage; begin textFill := []; COLROW := 63; Printer.ActivePrinter := Printer.Printers[1]; Printer.ActivePrinter.SelectDPI(Printer.ActivePrinter.DPI[Printer.ActivePrinter.DPICount-1]); Printer.BeginDoc; sizeRow := Printer.PageHeight / COLROW; poses := getPosY(day, sizeRow); Printer.Canvas.BeginScene; Printer.Canvas.Font.Size := sizeRow * 0.8; Printer.Canvas.Font.Family := 'Times New Roman'; Printer.Canvas.Fill.Color := TAlphaColorRec.Black; Printer.Canvas.Fill.Kind := TBrushKind.Solid; Col1 := true; var WCol := Printer.PageWidth / 2 - 10; var WColW := WCol / 3; for var s := 0 to Length(poses)-1 do begin if Col1 then DestRect := RectF(0, poses[s], WCol, poses[s] + sizeRow) else DestRect := RectF(WCol, poses[s], Printer.Canvas.Width, poses[s] + sizeRow); Printer.Canvas.Font.Style:= Printer.Canvas.Font.Style + [TFontStyle.fsBold]; Printer.Canvas.FillText(DestRect,day[0].listSheme[s].name,True,1,textFill,TTextAlign.Center,TTextAlign.Center); Printer.Canvas.Font.Style:= Printer.Canvas.Font.Style - [TFontStyle.fsBold]; for var p := 0 to Length(day[0].listSheme[s].listPosition) - 1 do begin var nameSize := day[0].listSheme[s].listPosition[p].t + 'x' + day[0].listSheme[s].listPosition[p].w + 'x' + day[0].listSheme[s].listPosition[p].l + '='; if day[0].listSheme[s].listPosition[p].c.ToInteger > 1 then nameSize := nameSize + day[0].listSheme[s].listPosition[p].c + 'л'; Rect_cell := RectF(10, poses[s] + (sizeRow * (p+1)), WCol-30, poses[s] + (sizeRow * (p+2))); Rect_Size := RectF(0, poses[s] + (sizeRow * (p+1)), WCol - WColW, poses[s] + (sizeRow * (p+2))); if not Col1 then begin Rect_cell.Left := Rect_cell.Left + WCol + 20; Rect_cell.Right := Rect_cell.Right + WCol + 10; Rect_Size.Left := Rect_Size.Left + WCol + 20; Rect_Size.Right := Rect_Size.Right + WCol + 10; end; Printer.Canvas.FillText(Rect_cell, day[0].listSheme[s].listPosition[p].pn + ')' + day[0].listSheme[s].listPosition[p].s, True,1,textFill,TTextAlign.Leading,TTextAlign.Center); Printer.Canvas.FillText(Rect_Size, nameSize, True,1,textFill,TTextAlign.Trailing,TTextAlign.Center); end; Col1 := not(Col1); end; for var row := 1 to COLROW do begin Printer.Canvas.DrawLine(TPointF.Create(0, sizeRow * row), TPointF.Create(WCol, sizeRow * row), 0.5); Printer.Canvas.DrawLine(TPointF.Create(WCol + 20, sizeRow * row), TPointF.Create(Printer.Canvas.Width, sizeRow * row), 0.5); end; DestRect := RectF(0, 0, Printer.Canvas.Width, sizeRow); Printer.Canvas.FillText(DestRect, day[0].name, True, 1, textFill, TTextAlign.Center,TTextAlign.Center); Printer.Canvas.DrawLine(TPointF.Create(WCol, sizeRow), TPointF.Create(WCol, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(WCol + 20, sizeRow), TPointF.Create(WCol + 20, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(0, sizeRow), TPointF.Create(500, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(Printer.Canvas.Width, sizeRow), TPointF.Create(Printer.Canvas.Width, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(WCol-WColW+20, sizeRow), TPointF.Create(WCol-WColW+20, Printer.Canvas.Height), 1); Printer.Canvas.DrawLine(TPointF.Create(Printer.Canvas.Width-WColW+20, sizeRow), TPointF.Create(Printer.Canvas.Width-WColW+20, Printer.Canvas.Height), 1); Printer.Canvas.EndScene; Printer.EndDoc; end; ВОТ ЧТО ПОЛУЧАЕТСЯ: Линия спецом под угол, что бы понять само смещение в лево относительно листа. Соответственно текст тоже видно на половину Написано на Delphi 11, FMX.Printer Заранее спасибо!
  7. Опубликовано 29 мая вроде правильно... только ошибки в английских словах исправьте (Catolog)... если тормоза есть - это уже fmx (еще очень далеко до совершенства)..... тут или смириться или искать собственные пути отображения списков... Здравствуйте! А Вы можете написать тоже самое что и в ранее написанном Вами gek.zip, только на Java, для разбора в AndroidStudio? или тормоза там такие же могут возникнуть как и FMX, Вы не в курсе случайно? Заранее спасибо за ответ!
  8. так используются они: это с Вашего примера я взял, отлично все работает, но зависает, там порядка 400 элементов примерно ... в FormCreate создается поток: при завершении вызывается создание списка тут правильно все сделано?
  9. Здравствуйте! Подскажите пожалуйста, почему при первом переключении с начальной вкладки TTabControl на вкладку с заполненным ListView(в FormCreate) приложение подвисает на пару секунд и можно как то сделать чтобы не повисало? Так же происходит и при переключении на другие вкладки, где просто TImage и Label. А когда везде побываешь то перестает зависать.
  10. Здравствуйте! Подскажите пожалуйста как понять и искать эти утечки памяти:
  11. Понял, size вставить в цикл! Спасибо! Тут задача такая: выполнять запрос на сайт разные даты, начиная с сегодняшней, заканчивая = (сегодня минус OffsetDateDay дней), до тех пор пока не найдет этот счет (пока статус не покажет другой, отличимый от "Такой номер заказа не найден") или кончаться даты. Теперь вроде все работает как надо!
  12. Еще вопрос, добавил цикл по датам: , но почему как то не корректно показывает иногда, на сайте так: а приложении так: а иногда даже так: даже когда статусы одинаковые сайт показывает, допустим 11603 от 29.04.2020 и 10742 от 28.04.2020 , оба выполнены ?
  13. Вы можете еще подсказать, как лучше сделать заполнение пользователем размеров прямоугольников и кол-в. Я так понял что лучше ListView использовать, но как его настроить и добавить строчку с тремя Edit'ми и кнопкой "удалить строчку, не могу понять?
  14. спасибо исправил, отдельный юнит это может потом еще что надумаю добавить каких процедур.
  15. Здравствуйте! Да, изучал все это, алгоритмы не устроили кроме одного, который и реализовал(но не до конца еще). Потом, может быть, хотя и этого будет достаточно для наших клиентов, попрошу ребят из НИП Информатики помочь с более продвинутым алгоритмом...
  16. Скажите, теперь само написание кода нормальное я в правильном направлении иду, распределение кода по unit'ам и оформление классов и переменных в общем? Там осталось калькулятор металла сделать, отправку по почте сделать, и контактную информацию, но самое сложное именно вычисление и рисование...
  17. Вот за это особое СПАСИБО! Ошибка моя, экспериментировал с циклом и забыл убрать "*3". Исправил, пока больше вылетов не было!!! Ура
  18. Все верно! Слабое подобие для примерного просчета
  19. Спасибо! Опечатку исправил, с переменными все нормально происходит, Image.Bitmap рисует
×
×
  • Создать...