Witam serdecznie,
od razu zaznaczam, że jestem jeszcze raczkujący :) w temacie programowania i potrzebuje pomocy w jednym temacie, którego nie potrafię rozwiązać. Napisałem program w Delphi ułatwiający wydruk kuponów/biletów i wszystko pięknie tylko za Chiny nie potrafię z programu zmienić drukarki, która będzie wykorzystywana. Daję printerDialoga, po kliknięciu na przycisk pojawia się okienko z wyborem drukarki, lecz po wyborze i tak drukuje się na defaultowej...
Proszę o rozwiązanie problemu. Poniżej program.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, XiButton, ComCtrls, ComObj,ShellAPI;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
rzedy: TSpinEdit;
Label2: TLabel;
Label3: TLabel;
miejsce_pocz: TSpinEdit;
Label4: TLabel;
miejsce_kon: TSpinEdit;
Label5: TLabel;
sala1: TRadioButton;
sala2: TRadioButton;
sala3: TRadioButton;
sala4: TRadioButton;
XiButton1: TXiButton;
data_seansu: TDateTimePicker;
drukarka: TPrintDialog;
Label6: TLabel;
Label7: TLabel;
godzina: TSpinEdit;
minuta: TSpinEdit;
Label8: TLabel;
drukarka2: TPrinterSetupDialog;
procedure XiButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.XiButton1Click(Sender: TObject);
var zmienna,licznik,i:integer;
bilety: OleVariant;
begin
drukarka2.Execute; //wybór drukarki
bilety:=CreateOleObject('Excel.Application');
bilety.Workbooks.Open('c:\kupony\wydruk.xlsx');
label6.Visible:=true;
zmienna:=miejsce_kon.Value-miejsce_pocz.Value+1;
label6.Caption:='Wydrukowanych zostanie: ' + inttostr(zmienna) + ' biletów';
if zmienna=1 then
label6.Caption:='Wydrukowany zostanie: ' + inttostr(zmienna) + ' bilet';
if (zmienna=2) or (zmienna=3) or (zmienna=4) then
label6.Caption:='Wydrukowanych zostanie: ' + inttostr(zmienna) + ' bilety';
licznik:=0;
for i:=1 to zmienna do
begin
bilety.cells[1,1].value:=edit1.Text;
bilety.cells[1,2].value:=data_seansu.date;
if sala1.Checked=true then
begin
if minuta.Value=0 then bilety.cells[1,3].value:= 'Sala 1, ' + inttostr(godzina.Value) + ':' + inttostr(minuta.Value)+'0'
else
bilety.cells[1,3].value:= 'Sala 1, ' + inttostr(godzina.Value) + ':' + inttostr(minuta.Value);
end;
if sala2.Checked=true then
begin
if minuta.Value=0 then bilety.cells[1,3].value:= 'Sala 2, ' + inttostr(godzina.Value) + ':' + inttostr(minuta.Value)+'0'
else
bilety.cells[1,3].value:= 'Sala 2, ' + inttostr(godzina.Value) + ':' + inttostr(minuta.Value);
end;
if sala3.Checked=true then
begin
if minuta.Value=0 then bilety.cells[1,3].value:= 'Sala 3, ' + inttostr(godzina.Value) + ':' + inttostr(minuta.Value)+'0'
else
bilety.cells[1,3].value:= 'Sala 3, ' + inttostr(godzina.Value) + ':' + inttostr(minuta.Value);
end;
if sala4.Checked=true then
begin
if minuta.Value=0 then bilety.cells[1,3].value:= 'Sala 4, ' + inttostr(godzina.Value) + ':' + inttostr(minuta.Value)+'0'
else
bilety.cells[1,3].value:= 'Sala 4, ' + inttostr(godzina.Value) + ':' + inttostr(minuta.Value);
end;
licznik:=miejsce_pocz.Value +i-1;
bilety.cells[1,4].value:= 'Rząd: ' +inttostr(rzedy.Value) +', Miejsce: ' +inttostr(licznik);
bilety.Worksheets.PrintOut(); //drukowanie
end;
bilety.DisplayAlerts := False;
bilety.ActiveWorkBook.SaveAs('c:\kupony\wydruk.xlsx');
bilety.quit;
end;
end.
Pozdrawiam,
Przemo