Показать сообщение отдельно
  #4  
Старый 22.06.2017, 22:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, я делал что-то подобное в свое время.
Если по простому, то бросаешь панель на форму, убираешь border, делаешь ее белого цвета. Далее кидаешь нужные компоненты, у Edit'ов настраиваешь правильный вид - тоже убираешь бордюры и указываешь нужный цвет.
Далее фокус - у панели вызывешь метод PaintTo (кажется так) для отрисовки на Bitmap'е. Далее переразмериваешь этот битмап в соответсвии с разрешением принтера и печатаешь его на принтере через Printer.BeginDoc/Printer.Canvas.Draw()/Printer.EndDoc.
Если надо спрятать Edit'ы, то перед печатью на битмап пробегаешься по ним и устанавливаешь нужный цвет. Что-то типа:
Код:
For I := 0 To pnDocCanvas.ComponentCount-1 Do
  If pnDocCanvas.Components[i] Is TEdit Then
    (pnDocCanvas.Components[i] As TEdit).Color  := clWhite;

Во всем этом есть одна засада - нынче есть проблемы при автоматическом использовании тем винды - тогда, м.б. придется подкрутить компоненты, что бы они не реагировали на темы, бо как тут ты внешним видом управляешь сам.
Ответить с цитированием