Printer()->PrinterIndex = 2;
ShowMessage("Область печати (до изменений): " + IntToStr(Printer()->PageWidth) + "x" + IntToStr(Printer()->PageHeight));
UnicodeString DeviceName, DriveName, PortName; //Фиктивная переменная
THandle hPrnDevMode; //Фиктивная переменная
PDEVMODE pDevMode; //Указатель на структуру DeviceMode
Printer()->GetPrinter(DeviceName.c_str(), DriveName.c_str(), PortName.c_str(), hPrnDevMode);
if (hPrnDevMode == 0)
{
ShowMessage("Не получилось настроить параметры печати!");
return;
}
//Получаем указатель на структуру DEVMODE
pDevMode = (PDEVMODE) GlobalLock((HANDLE)hPrnDevMode);
if (pDevMode == NULL)
{
ShowMessage("Не получилось настроить параметры печати!");
return;
}
//Настраиваем параметры печати
pDevMode->dmFields |= DM_PAPERSIZE;
pDevMode->dmPaperSize = DMPAPER_A6;
//Освобождаем структуру DEVMODE
GlobalUnlock((HANDLE)hPrnDevMode);
ShowMessage("Область печати (после изменений): " + IntToStr(Printer()->PageWidth) + "x" + IntToStr(Printer()->PageHeight));
TPrinter() как установить размер бумаги
Всем привет. Столкнулся с проблемой. Есть стандартный принтер для бумаги А4. Нужно на принтере напечатать что-то но на другом формате бумаги (стандартный формат, предусмотренный Windows), например А6. При этом, системные настройки принтера не должны меняться. (Т.е. настройки, что в «устройствах и принтерах->настройка печати») . Кроме того, не должно выводиться пользователю никаких диалогов выбора бумаги. В каких то старых книжках прочитал, что нужно использовать структуру PDEVMODE. На форумах нашел похожий код на Delphi. Правда там не размеры меняют, а число копий и т.д…Мой код никаких ошибок не выдает, но и ничего не делает почему-то. Может кто знает в чем дело или как решить мою задачу?