Órarend
Készítsünk Delphi
alkalmazást, mely egy órarendet hoz létre egy Excel munkalapon. Az Órarend
feliratot kövér betűkkel írja és helyezze az A1:F1
egyesített cellák közepére, a napok nevét, az órák sorszámát igazítsa középre,
és kövéren jelenítse meg. Az 1.-6. órák háttérszíne legyen zöld. Keresse meg az
órarendben a Matek órákat, és ezeket fehérre írja át.
A kezdő lépéseket a Szorzótábla
programhoz hasonlóan hajtsuk végre. A form szerkesztő
nézetben ugyanaz most is, csak a parancsgomb felirata Órarend. A részfeladatok
megoldásra a listában megjegyzések utalnak.
A létlehozott Excel munkalap:
A program listája:
unit UDEOrarend;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
ActiveX, ExcelXP, OleServer,
Dialogs, StdCtrls;
type
TfmDEOrarend = class(TForm)
btOrarend: TButton;
btKilepes: TButton;
svExcelAlkalmazas: TExcelApplication;
svExcelMunkafuzet: TExcelWorkbook;
svExcelMunkalap: TExcelWorksheet;
procedure btKilepesClick(Sender: TObject);
procedure btOrarendClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmDEOrarend: TfmDEOrarend;
Const Nap: Array[1..5] Of String=('Hétfő','Kedd','Szerda','Csütörtök','Péntek');
Ora: Array[1..5,1..7] Of String=
(('Angol','Ének','Biosz','Matek','Tesi','Magyar','-'),
('Földrajz','Kémia','Német','Rajz','Magyar','Fizika','Ofő'),
('Matek','Tesi','Angol','Német','Info','Info','-'),
('Magyar','Angol','Földrajz','Matek','Kémia','Tesi','-'),
('Német','Magyar','Fizika','Matek','Biosz','Magyar','-'));
implementation
{$R *.dfm}
procedure TfmDEOrarend.btKilepesClick(Sender: TObject);
begin
Close;
end;
procedure TfmDEOrarend.btOrarendClick(Sender: TObject);
Var LCID: Integer;
Ws: String;
I, J: Word;
begin
//alapértelemezett mappa
GetDir(0,Ws);
//az excel megnyitása
LCID:= GetUserDefaultLCID;
With svExcelAlkalmazas Do
Begin
Connect;
Visible[LCID]:= True;
//jóváhagyás kikapcsolása
DisplayAlerts[LCID]:= False;
//munkafüzet létrehozása
svExcelMunkafuzet.ConnectTo(WorkBooks.Add(TOleEnum(xlWBATWorkSheet),LCID));
End;
//munkalap létrehozása
With svExcelMunkalap Do
Begin
ConnectTo(svExcelMunkafuzet.Worksheets[1] As _WorkSheet);
//a lap orientációjának beállítása: álló
PageSetup.Orientation:= 1;
//az óraszámokat tartalmazó cellák előformázása
With Range['A3','A9'] Do
Begin
Select;
NumberFormat:='@'; //a szám szövegként kezelhető
End;
//a cellák töltése
With Cells Do
Begin
Item[1,1].Value:= 'Órarend';
Item[2,1].Value:= 'Nap/óra';
For I:= 1 To 5 Do Item[2,I+1].Value:= Nap[I];
For I:= 1 To 7 Do Item[I+2,1].Value:= IntToStr(I)+'.';
For I:= 1 To 5 Do For J:= 1 To 7 Do
Item[J+2,I+1].Value:= Ora[I,J];
End;
//a cellák utólagos formázása
Range['A1','F9'].Font.Size:= 16; //betűméret
Range['A1','F1'].MergeCells:= True; //cellaösszevonás
With Range['A1','F2'] Do
Begin
Select;
Font.Bold:= True; //félkövér karakterek
HorizontalAlignment:= xlHAlignCenter; //vízszintesen középre igazítás
End;
With Range['A3','A9'] Do
Begin
Select;
Font.Bold:= True; //félkövér karakterek
HorizontalAlignment:= xlHAlignCenter; //vízszintesen középre igazítás
End;
With Range['A1','F9'] Do
Begin
Select;
Borders.LineStyle:= xlContinuous; //keretek
End;
Range['A3','F8'].Interior.Color:= clLime; //kitöltőszín
With Cells Do
For I:= 1 To 5 Do For J:= 1 To 7 Do
If Item[J+2,I+1].Value='Matek' Then
Item[J+2,I+1].Font.ColorIndex:= 2; //karakterszín színindex segítségével
Cells.EntireColumn.AutoFit; //automatikus cellaszélesség
Range['G1','G1'].Select;
//mentés
SaveAs(Ws+'\Orarend');
End;
//kapcsolat zárása
svExcelMunkalap.Disconnect;
svExcelMunkafuzet.Disconnect;
svExcelAlkalmazas.Quit;
svExcelAlkalmazas.Disconnect;
end;
end.