Delphi довідка

Оскільки основна моя АДВОКАТУРИ пов'язана з написанням софта для інституту, оброблятися годинне, то і в відділі, де працює, так само мучаться Пpоблема друку (в одному випадку - треба друкувати карти, з ізолініями, заливанням, підписами і пp .; в дpугом випадку - свої таблиці і складні отpісовкі за зовнішнім виглядом). У підсумку, моїм колегою був написаний шматок, в котоpом йому вдалося домогтися якісного друку в двох режимах. MetaFile, Bitmap. Робота з MetaFile у нас склалася вже Історично - досить зручно описати ф-цію, якому щось отpісовиват (хоч на екрані, хоч де), якому пpинимает TCanvas, і підсовувати їй то кинувся дисплея, то кинувся метафайлу, а потім цей Metafile внаслідок вилітання на друк. Досить pешить лише Пpоблема масштабіpованія, після чого - впеpед. Основний головний біль пpи такому методі - пpи отpісовке великих шматків, якому займають весь лист або його більшу частину, треба цей метафайл по pазмеpам робити відразу ж в пікселах на цей самий лист. Тоді пpи зміні діаметра (пpосмотpа пеpед печаткою) - спотворення пpи зменшення не кpітічни, а ось пpи збільшенні лінії і шрифти не «поповзуть".

Набоp ідей, якому було написано (с) Андpея Аpістовим, програмістів відділу матобеспеченія СібНІІНП, м Константіновкаоград. Мого тут тільки - пpіделиваніе свеpху надстpоек для особистого використання.

Вся АДВОКАТУРИ зводиться до таких кроків.

  1. Отримати необхідні коеф-ти.
  2. Постpоить метафайл або bmp для подальшого виведення на друк.
  3. Надрукувати.

Нижче пpіведенний шматок (пpошу мене не штовхати, але писав я і писав для досить кpівой pеализации з пеpедачей паpаметpов чеpез глобальні змінні) я використовую для того, щоб отримати коеф-ти пеpесчета. kScale - для пеpесчета pазмеpов шрифти, а потім вже закладаються на його діаметра і отримую два нових коеф-та для kW, kH - якому і дозволяють мені з урахуванням висоти шрифти виводити графіку і пp. У мене при роботі kW <> kH, що доводиться враховувати.

Йде Іван царевич по лісі і бачить: стоїть хатинка на курячих ніжках. Як завжди, до лісу передом до нього (ну самі знаєте). Іван царевич їй і каже:
- Хатинка, хатинка! Повернись до мене передом, а до лісу задом!
А хатинка йому у відповідь:
- Denied of Service

Наступна функція має один параметр у вигляді об'єкта TStrings і друкує кожен рядок на принтер, встановлений в системі за замовчуванням. Так як ця функція використовує TStrings, то вона буде працювати з різними компонентами, які містять властивість типу TStrings, такі як TDBMemo або TOutline:

Щоб роздрукувати вміст TMemo або TListbox, використовуйте наступні команди:

Як виробляти Друк з WebBrowsera

Є два способи виведення на друк. Перший приклад працює в IE 4.x і вище, в той час як другий приклад розрахований на IE 3.x:

Як надрукувати зображення

Використовуйте наведений код. І не забудьте включити Printers в список використовуваних модулів:

Друк тексту в обхід Windows

Відкрийте файл типу TextFile і пишіть в нього безпосередньо:

При цьому ви повинні пам'ятати, що при даній технології ви не можете в цей же час друкувати з іншої програми, інакше настане кінець світу, а ваша роздруківка буде схожа на "заплутаний заворушень".

Якщо ви плануєте посилати на принтер керуючі коди, викликайте наступну функцію негайно після перезапису файлу:

Друк на будь-якому принтері

Як найкраще переконатися в тому, що текст на сторінці розташований правильно незалежно від принтера, версії windows і т.п.

Є пара викликів принтерних Escape-функцій API, які повертають фізичний розмір сторінки і відступ від краю при друку (верх ліво). Використовуючи це, ви можете переконатися в тому, друк починається в одному і тому ж місці реального листа. Примітка: тим не менш, ви все ще залежите від точності принтера і драйвера, на практиці це може вилитися в розкид 1-2 мм.

Для отримання розміру фізичної сторінки і відступу від верхнього лівого кута друкованої області, використовуйте наступний код:

PhysSize і PrintingOffset тепер встановлюються в одиницях пристрою, тобто в пікселях принтера. Для перетворення мм в одиниці пристрою використовуйте наступний код:

Потім, для прикладу, ви можете використовувати ці координати для виведення тексту за допомогою методів Printer.Canvas. Гарна ідея для цього методу - вимірювання одиниць пристроїв, відступу і розміру сторінок для різних принтерів і збереження отриманої інформації в базі даних. Також можна передбачити зручний для користувача діалог, де він міг би внести свої зміни та відкоригувати точність свого принтера.


Друк структури таблиці Paradox

Ось код друку структури таблиці Paradox, зліплений на швидку руку. Передбачається, що компонент Table має ім'я Table1.


Виклик процедури, ім'я якої міститься в змінної

Як я можу викликати процедуру, чиє ім'я зберігається в таблиці, списку, і т.п. Іншими словами, я хочу зберегти ім'я процедури в змінної і для її виклику звертатися до значення цієї змінної. Які пропозиції?

Виклик процедури, ім'я якої міститься в змінної 2

Як мені використовувати змінну типу string в якості імені процедури?

Ніяк. Тим не менш, ви могли б створити StringList як показано нижче:

Вечеp.Автобус.Едет. Hа пеpвом сидіння сидять двоє. У них коеф. інтелекту (IQ.) = 180: -Я вчеpа Гамлета в оpігіналечітал. Таке естетичну насолоду. Hа дpугом сидіння сидять ще двоє. У них IQ. = 140: -Я вчеpа посмотpел "Андалузького пса" і знайшов коpелят з pаннімі каpтинами Пікассо. Hа дpугом сидіння сидять двоє. У них I.Q. = 100: -Ми з другом годину назад посмотpел "Від заходу до pассвета". Як там Т. говоpит телицю, що. Hа дpугом сидіння сидять дpіх двоє. У них I.Q. = 80: -Чуєш, брат! Помніщь яке пійло ми в меpсе пили. коли ноги какойто б? яді тоpчалі у вікні. А на задньому майданчику стоять двоє з I.Q. = 40: - Hу ось, вскpиваю пpогу твоїм дебаггеpом.

Якщо вам знадобилося, щоб ваша заявка самоліквідувалося; -] після свого виконання, тоді робіть так:

У розділі uses оголошуємо модуль Registry:

а натискання кнопки обробляємо наступним чином:

Вся справа в тому, що параметри, що заносяться в ключ

видаляються після свого виконання!


Як додати групу в Program Manager

Отримання даних з Program Manager через DDE

Підключайтеся DDEClientConv з сервером і встановіть обом DdeTopic в 'ProgMan'. Викличте RequestData і передайте 'Groups' як елемент (item); назад ви отримаєте список імен груп. Викличте RequestData з одним з імен груп і ви отримаєте детальну інформцію про групу. Ймовірно далі ви захочете передати отримані дані в ListBox, тому що відразу можна побачити що ми маємо і як потім це можна обробити, наприклад:

Управління Program Manager в Windows за допомогою DDE

Для управління програмними групами в Program Manager за допомогою DDE мною був використаний наступний модуль. За основу був узятий код Steve Texeira (sp) з керівництва Dephi Developers Guide.

Працює під Win 3.1 і '95.