//печать в текстовом режиме:
AnsiString PrinterName = prn->Printers->Strings[prn->PrinterIndex];
HANDLE pHandle;
if(!OpenPrinter(PCHAR(PrinterName.c_str()), &pHandle, NULL)) {
MessageDlg("Текстовый принтер не найден.", mtError, TMsgDlgButtons() << mbOK, 0);
return;
}
st = new TStringList;
try {
TableToStr(st);
TDocInfo1 pDocInfo1;
pDocInfo1.pDocName = prn->Title.c_str();
pDocInfo1.pOutputFile = NULL;
pDocInfo1.pDatatype = "RAW";
StartDocPrinter(pHandle, 1, (byte*)&pDocInfo1);
StartPagePrinter(pHandle);
DWORD N;
AnsiString pText = st->Text;
CharToOem(pText.c_str(), pText.c_str());
WritePrinter(pHandle, PCHAR(pText.c_str()), pText.Length(), &N);
EndPagePrinter(pHandle);
EndDocPrinter(pHandle);
ClosePrinter(pHandle);
} __finally { delete st; }