Как сделать кнопку печать в делфи

Обновлено: 07.07.2024

← →
Fury ( 2002-12-24 22:04 ) [0]

При нажатии на кнопку на форме нужно, чтобы принтер начинал печатать
из файла.
Вот как это сделать?

← →
dmk ( 2002-12-24 22:08 ) [1]

Читай данные и отсылай на Printer.Canvas.

← →
Song ( 2002-12-24 22:23 ) [2]

ShellExecute()

← →
OlDemon ( 2002-12-25 06:32 ) [3]

2 Fury> смотря что в файле если это просто текст то самое простое это его загрузить в RichEdit (RichEdit.Lines.LoadFromFile("file.txt")) а затем RichEdit.Print("Name")

← →
Nevel ( 2002-12-25 06:52 ) [4]

Можно через отчёт QReport там ужё готова кнопка принт.

← →
Дмитрий К.К. ( 2002-12-25 07:08 ) [5]

Самый простой способ -
> Song © (24.12.02 22:23)

Нужные параметры - и усё!
Одной командой!

← →
Anatoly Podgoretsky ( 2002-12-25 07:14 ) [6]

Так ведь другого ответа и не может быть, сказано печать ФАЙЛА, кто еще кроме ShellExecute справится

Здравствуйте уважаемый программист! Ранее, при создании программного обеспечения на языке Delphi, Вы использовали лишь стандартный интерфейс MS Windows. Но, по всей видимости, Вам этого недостаточно и Вы хотите добавить оригинальности и уникальности в оформление своего приложения. Об том, как это сделать, я Вам и расскажу в данной статье. Статья будет посвящена созданию собственных элементов управления, а собственно кнопок, используя язык программирования Delphi.

Приступим к делу. Допустим проект, для которого мы создаем кнопку, уже открыт. Для начала создадим новый модуль (File \ New \ Unit). Давайте сразу сохраним модуль (нажав Ctrl + Shift + S) под именем MyButtonUnit. В модуле мы видим два раздела: interface и implementation. В первом разделе мы будем описывать подключаемые модули, типы данных, процедуры, константы и переменные, а во втором будет находиться сам код.

После interface опишем модули, которые нам понадобятся. Это выглядит так:

interface
uses Classes, Controls, Windows, Graphics, Messages;

После этого необходимо описать создаваемый нами новый класс (TMyButton), в основу которого будет положен класс TCustomControl.

type TMyButton = class(TCustomControl)
private
protected
public
end;

Вы видите три раздела нашего класса: private, protected и public. В первом описываются переменные и процедуры, которые будут доступны для использования только в пределах данного класса. В разделе protected описываются методы, реализованные в родительском классе. И наконец, третий раздел содержит описание свойств и процедур, которые будут доступны за пределами данного класса.

Начнем с раздела public.
Опишем конструктор: constructor Create(AOwner: TComponent);
Перейдем в раздел implementation и напишем код, который будет выполняться при создании кнопки.

constructor TMyButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Parent := AOwner as TWinControl;
Width := 100;
Height := 25;
end;

Я привел обязательную часть кода. Вы же можете дополнить его при необходимости.

Сейчас самое время подумать о том, как будет работать кнопка. Наша кнопка должна изменять изображение при наведении на нее. Она обязательно должна содержать надпись. Это минимум! Раз кнопка будет изменять внешний вид при наведении на нее, то в разделе private опишем переменную FSelected : Boolean; для хранения состояния кнопки. Отрисовкой кнопки займемся позже. В том же разделе опишем переменную FCaption : String;, которая хранит надпись на кнопке. Для того, чтобы надпись можно было изменять опишем property Caption: String read FCaption write SetCaption; в разделе public. Как Вы заметили, процедуру SetCaption мы еще не создали. Опишем ее в разделе private:

procedure SetCaption(Val: String);

и конечно же создадим сам код:

procedure TMyButton.SetCaption(Val: string);
begin
FCaption := Val;
paint;
end;

Процедура paint это и есть отрисовка кнопки, которой мы сейчас и займемся. Ее мы опишем в разделе protected - procedure Paint; override;.
Сразу же напишем код:

procedure TMyButton.Paint;
begin
If not FSelected
then
begin
Canvas.Pen.Color := $FFFFFF;
Canvas.Brush.Color := $FFFFFF;
end
else
begin
Canvas.Pen.Color := $EEEEEE;
Canvas.Brush.Color := $EEEEEE;
end;

Canvas.Rectangle(0,0,Width,Height);
Canvas.TextOut((Width - Canvas.TextWidth(FCaption))div 2,(Height - Canvas.TextHeight(FCaption)) div 2,FCaption);
end;

Обратите внимание на условие. Мы предусматриваем различные варианты оформления при выделенной и невыделенной кнопке. Как работать с графикой Вы, я думаю, знаете, поэтому сможете очень легко настроить внешний вид по-своему.

А теперь самое интересное: как сделать так, чтобы кнопка меняла внешний вид при наведении?

Опишем две процедуры в разделе private:

procedure MEnter(var Mes: TMessage); message CM_MOUSEENTER;
procedure MLeave(var Mes: TMessage); message CM_MOUSELEAVE;

procedure TMyButton.MEnter(var Mes: TMessage);
begin
FSelected := True;
Paint;
end;

procedure TMyButton.MLeave(var Mes: TMessage);
begin
FSelected := False;
Paint;
end;

Как видите, мы просто указываем, выделена или не выделена кнопка и перерисовываем ее.

Прекрасно, мы выполнили задачу, но как внедрить кнопку в приложение? Очень просто! Вам необходимо описать созданный нами модуль в нужном вам месте, а чтобы создать кнопку опишите ее как переменную (var B : TMyButton;), создайте (B := TMyButton.Create(self);) и откорректируйте поля (B.Caption := 'Button';).
В целом:

procedure TForm3.FormCreate(Sender: TObject);
var
B : TMyButton;
begin
B := TMyButton.Create(self);
B.Caption := 'Button';
end;

Теперь Вы умеете создавать свои элементы управления и можете поработать над дизайном своей программы. Удачи!

Исходный код модуля:

interface
uses Classes, Controls, Windows, Graphics, Messages;

type TMyButton = class(TCustomControl)
private
FSelected: Boolean;
FCaption: String;
procedure SetCaption(Val: String);
procedure MEnter(var Mes: TMessage); message CM_MOUSEENTER;
procedure MLeave(var Mes: TMessage); message CM_MOUSELEAVE;
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent);
property Caption: String read FCaption write SetCaption;
end;

Школа программирования Delphi

Портал DelphiSchool является бесплатным проектом, обеспечивающим пользователям быстрый и легкий доступ к урокам программирования на Delphi. Сайт позволяет научиться программировать на Делфи любому, кто хочеть писать свои программы, игры, Android приложения, программы для MAC OC или IOS. Кроме уроков Delphi и статей Delphi, на сайте доступны также и видеоуроки. Практически к каждому уроку, пользователю доступен исходник, изучив который, он сможет наглядно посмотреть как работает та или иная программа, написанная на Делфи. Кроме того мы постараемся прилагать к каждому материалу (статье, уроку, видеоуроку) файлы Delphi, которые будут помогать изучить предоставленный материал.

Каждый кто решил написать свою программу, создать свое приложение, научиться программировать и т.д., найдет на DelphiSchool статьи Delphi, уроки Delphi, видеоуроки Delphi, исходники Delphi, файлы Delphi, изучит компоненты Delphi, посмотрит Delphi примеры и многое другое абсолютно бесплатно. Все о Delphi программировании теперь собрано на одном сайте.
DelphiSchool

В прошлом уроке Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 1. Свойства кнопки, мы рассмотрели основные свойства кнопки, и теперь пришло время рассмотреть события кнопки в Delphi и написать свой первый код программы. В конце статьи, если вам что-нибудь останется не понятным, вы можете скачать исходник Delphi и наглядно посмотреть где и как прописан код программы и как она работает.
Давайте откроем созданный нами ранее проект MyFistButton (File | Open | файл MyFistButton.dpr). Выделяем кнопку SendButton и переходим на вкладку Events (События), которая находится в окне объектного инспектора.Как мы уже знаем, за щелчок клавиши мыши отвечает событие OnClick. Поэтому давайте найдем это событие и дважды кликнем на нем левой кнопкой мыши. Delphi создает в редакторе кода процедуру – обработчик события OnClick.По умолчанию этой процедуре присваивается имя в виде имени компонента (в нашем случае имени нашей кнопки SendButton) плюс имя события без приставки On. Таким образом имя нашей процедуры будет SendButtonClick, а созданная Delphi процедура будет выглядеть так:

procedureTForm1.SendButtonClick(Sender: TObject);
begin

В объектном инспекторе, напротив события OnClick также появляется имя процедуры обработчика. Мы можем изменить это имя на любое другое, или же выбрать имя из ниспадающего списка. Но в нашем случае в ниспадающем списке ничего нет, так как мы ничего еще не делали, и похожих обработчиков события у нас нет.



Рисунок. Объектный инспектор в котором отображена процедура обработчика

Давайте теперь создадим обработчик события для кнопки CloseButton. Делаем все так же как и делали для кнопки SendButton, только внутри процедуры напишем команду Close:


Теперь, если мы запустим программу, сделаем кнопку "Закрыть приложение" активной и нажмем на нее, то программа закроется.
Close – это метод формы, поэтому мы могли бы написать немного по другому:

Между первым и вторым примером нет абсолютно никакой разницы.

Если в этом уроке вам что-нибудь не понятно, то ниже вы можете скачать исходник Delphi и наглядно посмотреть где и как прописан код программы и как она работает.

К уроку (статье) Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки прилагается исходник, посмотрев который, вы можете ознакомиться с полным исходным кодом программы и посмотреть как работает созданная программа. Исходный код сопровождается комментариями, благодаря чему вы сможете легко в нем разобраться. Но я настоятельно рекомендую делать все самостоятельно. Так вы лучше и быстрее усвоите то, о чем говорилось в этом уроке

Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки
Нажмите на эту ссылку Ссылка

Не забывайте писать свои отзывы об уроке Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки. Ваша информация об уроке Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки может помочь другим людям изучить программирование на Delphi. Также не забывайте проставлять рейтинг урока, ведь от этого зависит его попадание в список лучших уроков Delphi

Данный документ содержит подробное описание способа печати содержимого формы: получение отдельных битов устройства при 256-цветной форме, и использования полученных битов для печати формы на принтере.

Кроме того, в данном коде осуществляется проверка палитры устройства (экран или принтер), и включается обработка палитры соответствующего устройства. Если устройством палитры является устройство экрана, принимаются дополнительные меры по заполнению палитры растрового изображения из системной палитры, избавляющие от некорректного заполнения палитры некоторыми видеодрайверами.

Примечание: Поскольку данный код делает снимок формы, форма должна располагаться на самом верху, поверх остальных форм, быть полность на экране, и быть видимой на момент ее "съемки".

Читайте также: