52-сурет
2. Төменде келтірілген бағдарламаны пайдаланып, сол компоненттердің оқиғалары мен қасиеттерін өңдеп, жұмыс мақсатына жеткізетін әрекеттерді орындаңыз.
Бағдарламасы:
{ Бағдарлама тек басып шығаруды ғана орындайды. }
unit malymet_;
{$R *.dfm}
uses Printers;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
with StringGrid1 do
begin
Cells[0,0] := ' №';
Cells[1,0] := ' Аты-жөні';
Cells[2,0] := ' Білімі';
Cells[3,0] := ' Санаты';
Cells[4,0] := ' Өтілі';
for i:=1 to 10 do
Cells[0,i] := ' '+IntToStr(i);
end;
end;
// Басып шығару батырмасында шерту
procedure TForm1.Button2Click(Sender: TObject);
const
LEFT_MARGIN = 2; // сол жақтан шегініс 2 см
TOP_MARGIN = 2; // жоғарыдан шегініс 2 см
var
dpiX, dpiY : integer; // Принтердің X және Y бойынша шығару //мүмкіндігі
kx,ky: real; // экран координатын принтердің Х және Y бойынша //координатына айналдыру коэффициенті
// кесте
p: array[0..4] of integer; // бағандар орны
x1,y1,x2,y2: integer; // кестенің шекаралары
px,py: integer; // шығу нүктесінің көрсеткіші
i,j: integer;
begin
{ Экран мен принтердің шығару мүмкіндіктері әр түрлі, енді олардағы кескін өлшемдерін сәйкестеу үшін экран нүктелерінің координатын принтер координатына түрлендіретін коэффициентке көбейту керек. Ол принтердің мүмкіндігіне байланысты. Мыс, принтердің шығаруы 300 dpi болса, онда экрандікі -96 dpi, сонда коэффициент 300/96=3.125-ке тең.}
// GetDeviceCaps функциясы құрылымдар сипаттамасын алуға //мүмкіндік береді
// LOGPIXELSX -X бойынша дюймге келетін пикселдер саны
dpiX := GetDeviceCaps(Printer.handle,LOGPIXELSX);
dpiY := GetDeviceCaps(Printer.handle,LOGPIXELSY);
kx := dpiX / Screen.PixelsPerInch;
ky := dpiY / Screen.PixelsPerInch;
px := Round(LEFT_MARGIN / 2.54 * dpiX);
py := Round(TOP_MARGIN / 2.54 * dpiY);
// кесте бағандарының «принтерлік» координаттарын есептеу
p[0] := px;
for i:=1 to 4 do
begin
p[i] := p[i-1] + Round(StringGrid1.ColWidths[i-1]* kx);
end;
with Printer do
begin
BeginDoc; // басып шығаруды ашу
// кестенің тақырыбы
Canvas.Font.Name := Edit1.Font.Name;
Canvas.Font.Size := Edit1.Font.Size;
Canvas.TextOut(px,py,Edit1.Text);
// StringGrid1кестенің құрамы
py := py+ Round(Edit1.Font.Size * 2 * ky);
x1 := px; y1 := py; // кестенің сол жақ жоғарғы бұрышы
Canvas.Font.Name := StringGrid1.Font.Name;
Canvas.Font.Size := StringGrid1.Font.Size;
x2 := p[4] + Round(StringGrid1.ColWidths[4]* kx);
y2 := py +
Round(StringGrid1.RowCount * StringGrid1.RowHeights[1] * ky);
for j:=0 to StringGrid1.RowCount do
begin
// кестенің жолдары
for i:=0 to StringGrid1.ColCount do
begin
Canvas.TextOut(P[i],py,StringGrid1.Cells[i,j]);
// көлденең сызық
Canvas.MoveTo(p[0],py);
Canvas.LineTo(x2,py);
end;
py:=py+ Round(StringGrid1.RowHeights[j]* ky);
end;
// тік сызық
for i:=0 to StringGrid1.ColCount -1 do
begin
Canvas.MoveTo(p[i],y1);
Canvas.LineTo(p[i],y2);
end;
Canvas.MoveTo(x2,y1);
Canvas.LineTo(x2,y2);
EndDoc; // басып шығаруды жабу
end; end; end.
.
№28. Тир
Жұмыстың мақсаты – біршама ойнауға, өзіңнің шалт қимылыңды көрсетуге арналған тир ойынының бағдарламасын құру.
1. Ол үшін жаңа жоба ашып, сол Пішінге қажетті компоненттерді орналастырыңыз.
2. Төменде келтірілген бағдарламаны пайдаланып, сол компоненттердің оқиғалары мен қасиеттерін өңдеп, жұмыс мақсатына жеткізетін әрекеттерді орындаңыз.
Достарыңызбен бөлісу: |