15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Печать в цвете

Чтобы напечатать в цвете, не требуется никаких особых усилий. Если принтер не поддерживает цветную печать, то Windows автоматически сконвертирует все цвета в оттенки серого. Если необходимо изменить цветовой режим программно, то можно воспользоваться структурой DevMode драйвера принтера.

Пример:

uses Printers;

procedure TForm1.Button1Click(Sender: TObject);
var
  Device : array[0..255] of char;
  Driver : array[0..255] of char;
  Port   : array[0..255] of char;
  hDMode : THandle;
  PDMode : PDEVMODE;

begin
  with Printer do begin
    PrinterIndex := PrinterIndex;
    GetPrinter(Device, Driver, Port, hDMode);

    if hDMode <> 0 then begin
      pDMode := GlobalLock(hDMode);
      if pDMode <> nil then begin
        pDMode.dmFields := pDMode.dmFields or dm_Color;
        pDMode.dmColor := DMCOLOR_COLOR;
        GlobalUnlock(hDMode);
      end;
    end;

    PrinterIndex := PrinterIndex;
    BeginDoc;
    Canvas.Font.Color := clRed;
    Canvas.TextOut(100,100, 'Red As A Rose!');
    EndDoc;
  end;
end;