Ó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, MessagesSysUtilsVariantsClasses

  GraphicsControlsForms,
  ActiveX, ExcelXPOleServer,
  DialogsStdCtrls;

type
  TfmDEOrarend = class(TForm)
    btOrarendTButton;
    btKilepesTButton;
    svExcelAlkalmazasTExcelApplication;
    svExcelMunkafuzetTExcelWorkbook;
    svExcelMunkalapTExcelWorksheet;
    procedure btKilepesClick(SenderTObject);
    procedure btOrarendClick(SenderTObject);
  private
    Private declarations }
  public
    Public declarations }
  end;

var
  fmDEOrarendTfmDEOrarend;

Const Nap: Array[1..5] Of String=('Hétfő','Kedd','Szerda','Csütörtök','Péntek');
      OraArray[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(SenderTObject);
begin
  Close;
end;

procedure TfmDEOrarend.btOrarendClick(SenderTObject);
Var LCID: Integer;
    WsString;
    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.