Delphi програмиране бележки

Отпечатване в Делфи

Изход към принтер в Windows е по-различно от дисплея: програмист, за да даде Canvas Printer обект на имота, който съдържа набор от инструменти за рисуване и методи, подходящи за TCanvas клас. Размер на лист хартия в пиксели определи свойства височина и ширина, и набор от принтера шрифтове - шрифтове собственост.

Печат на текст

Описаният метод на печат - най-примитивните: с негова помощ не е възможно да се извлече линия, разделяща колона или ред, че е трудно да форматирате текст, поставете заглавията, номера на страници и т.н.

Както можете да видите, директен призив към свойствата на инструменти за рисуване платно изисква програмист значително бо lshih усилия, но това му дава пълен контрол върху отпечатаното изображение.

В много случаи, за да отпечатате документ и което го прави основни инструменти за форматиране (обща заглавна печат заглавни на всяка страница, номера на страници и т.н.), по-лесни за използване на специални компоненти на QReport Delphi компонент палитра страница. Тези компоненти са проектирани да създадете отчет за база данни, но може успешно да се използват за нормални документи (PrintText.dpr).

печат на снимки

Печат на снимки може да изглежда много трудно, но Printer.Canvas имот съдържа метода:

който е лесно да се справят с тази задача. Когато е достъпен като първи параметър показва правоъгълна зона, определена по повърхността на листа за печат на изображения, както и второ - клас на обект TGraphic, където се съхранява изображение, например:

Показва файла в паметта

картографиране на файла се извършва в три стъпки. Първоначално, файлът се създава функция разговор:

или отвори с помощта на:

И в двете функции FileName - име на файла, евентуално с маршрут за достъп. Параметърът Mode определя начина на достъп до файла и може да бъде един от следните стойности: fmOpenRead - само за четене; fmOpenWrite - само на запис; fmOpenReadWrite - четене и писане. С помощта на операцията или константите могат да се комбинират с един от следните няколко функции, регулиращи дял файла: fmShareExclusive - споделяне забранено; fmShareDenyWrite - други приложения са забранени за влизане; fmShareDenyRead - други приложения са забранени четене; fmSchareDenyNone - споделяне на неограничен. И двете функции връщат дръжка, за да създадете (отворен) файл, или 0, ако операцията е била успешна.

Във втория етап, обект дисплей в паметта. За да направите това, използвайте функцията:

Тук hFile - файлов дескриптор; lpFileMappingAttributes - указател към структурата, в която се определя дали създадения обект генерира деца обекти (обикновено не може - NIL); flProtect - определя типа на защита, която се прилага към прозореца на дисплея файл (вж на този по-долу). dwMaximumSizeHigh, dwMaximumSizeLow - съответно по-висока и по-ниска 32 от изхвърлянето включващ размер на файла (ако ще покаже файлове с размер до 4 GB, поставени в dwMaximumSizeHigh 0, ако dwMaximumSizeLow - дължина на файла, и ако двете параметри са 0, размера на прозореца на дисплея се равнява на размер на файла); lpName - показване на името на обекта или нула.

Функцията връща манипулатор към обект дисплей, или 0, ако искането е било неуспешно.

функционира MapViewOfFile (hFileMappingObject: THandle; dwDesiresAccess: DWORD; dwFileOffsetHigh, dwFileIffsetLow, dwNumberOfBytesToMap: DWORD): Стрелката;

След използване на витрината картографиране на тези ресурси трябва да преустановите използването на функцията:

Обява 3 показва текст модул (File - InMemory.dpr), което създава прозорец.

Компонент Timer (таймер) се използва за обръщение интервали в реално време. Нейната Интервал имот уточнява милисекунди Интервалът от време. който ще се проведе от таймера старт преди събитието OnTimer. Таймерът се активира, когато е зададено Вярно е, неговата Enabled собственост. След като таймерът е включен през цялото време ще възбуди OnTimer събитие, стига да не е под Enabled имота False.

Имайте предвид, че поради спецификата прилагане стандартен таймер хардуер IBM-съвместим компютър минималното действително достижим референтен интервал от време може да бъде по-малко от 55 милисекунди (интервалът нарича отбележете), освен това, всеки интервал от време броят на таймера винаги е кратно на 55 мс , За да проверите това, извършване на експеримент, в който изчислява средното време между таймера (Timer.dpr):

  1. Започване на нов проект с празен формуляр и да го сложи TTimer компонент.
  2. Задайте таймер Enabled собственост на False.
  3. Добави като модул на основната форма (виж Обява 4):

Е 1 мс. Взето 55 милисекунди.

което показва в реално време, споделя от две съседни OnTimer събитие. Ако зададете периода на таймер в диапазона от 56 до 110 мс, посочен на линия 110 ще мс, и т.н. (Благодарение на дискретни характер на системния часовник актуализация резултати могат да се различават леко в една или друга посока).

В редица важни практически приложения (с развитието на играта, системи в реално време, за контролиране на външни устройства и други подобни), интервалът от 55 мс може да са твърде големи. Един модерен компютър има мултимедийни таймер, който период превключване може да бъде между 1 милисекунда и по-високи, но таймерът има не Компонент изпълнение, поради което е необходимо да използвате функцията API за достъп до нея.

Общата схема на неговото използване е както следва. На първо място, подготви процедурата за обратно повикване (обадим) със заглавие:

Тук UID - идентификатор на времевото събитие (виж го по-долу). uMsg - не се използва; dwUser - случайно число предава процедура, когато таймерът; DW1, DW2 - не се използва.

Започнете таймер функция се изпълнява:

Таймерът спира и ресурсите на системата, свързани с него, са освободени функция:

Тук UID - ID времеви събития, произведени от timeSetEvent.

Следващият пример (Timer.dpr) илюстрира използването на мултимедийни таймер (Обявата 5).