Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

TPrinter() как установить размер бумаги

79K
30 января 2012 года
AndrewSem
1 / / 30.01.2012
Всем привет. Столкнулся с проблемой. Есть стандартный принтер для бумаги А4. Нужно на принтере напечатать что-то но на другом формате бумаги (стандартный формат, предусмотренный Windows), например А6. При этом, системные настройки принтера не должны меняться. (Т.е. настройки, что в «устройствах и принтерах->настройка печати») . Кроме того, не должно выводиться пользователю никаких диалогов выбора бумаги. В каких то старых книжках прочитал, что нужно использовать структуру PDEVMODE. На форумах нашел похожий код на Delphi. Правда там не размеры меняют, а число копий и т.д…Мой код никаких ошибок не выдает, но и ничего не делает почему-то. Может кто знает в чем дело или как решить мою задачу?
Код:
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));
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог