Advertisement
Guest User

Untitled

a guest
Mar 12th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.45 KB | None | 0 0
  1. unit ViewRecord;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls,
  8.   Vcl.Imaging.pngimage, Vcl.ExtCtrls;
  9.  
  10. type
  11.   TViewRec = class(TForm)
  12.     Table: TStringGrid;
  13.     ImageHelp: TImage;
  14.     BtSort: TButton;
  15.     ImSearch: TImage;
  16.     BtSave: TButton;
  17.     SaveDialog: TSaveDialog;
  18.     procedure ImageHelpClick(Sender: TObject);
  19.     procedure FormCreate(Sender: TObject);
  20.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  21.     procedure ImSearchClick(Sender: TObject);
  22.     procedure BtSortClick(Sender: TObject);
  23.     procedure BtSaveClick(Sender: TObject);
  24.   private
  25.     { Private declarations }
  26.   public
  27.     { Public declarations }
  28.   end;
  29.  
  30. var
  31.   ViewRec: TViewRec;
  32.  
  33. implementation
  34.  
  35. {$R *.dfm}
  36.  
  37. uses SearchForWindow, MainForm;
  38.  
  39. procedure SortArr(var Buf: MainForm.TArr);
  40. var
  41.    j, i, en, beg: Integer;
  42.    Temp: MainForm.TStudent;
  43. begin
  44.    beg := 0;
  45.    en := High(Buf);
  46.    while beg < en do
  47.    begin
  48.       for i := beg + 1 to en do
  49.          if (Buf[i-1].Group > Buf[i].Group) then
  50.          begin
  51.             Temp := Buf[i];
  52.             Buf[i] := Buf[i-1];
  53.             Buf[i-1] := Temp;
  54.          end
  55.          else
  56.             if (Buf[i-1].Group = Buf[i].Group) then
  57.                if (Buf[i-1].Number > Buf[i].Number) then
  58.                begin
  59.                   Temp := Buf[i];
  60.                   Buf[i] := Buf[i-1];
  61.                   Buf[i-1] := Temp;
  62.                end;
  63.       dec(en);
  64.       for i := en - 1 downto beg do
  65.          if Buf[i+1].Group < Buf[i].Group then
  66.          begin
  67.             Temp := Buf[i];
  68.             Buf[i] := Buf[i+1];
  69.             Buf[i+1] := Temp;
  70.          end
  71.          else
  72.             if (Buf[i+1].Group = Buf[i].Group) then
  73.                if (Buf[i+1].Number < Buf[i].Number) then
  74.                begin
  75.                   Temp := Buf[i];
  76.                   Buf[i] := Buf[i+1];
  77.                   Buf[i+1] := Temp;
  78.                end;
  79.       inc(beg);
  80.    end;
  81. end;
  82.  
  83. procedure TViewRec.BtSaveClick(Sender: TObject);
  84. var
  85.    OutputFile: file of MainForm.TStudent;
  86.    MyFile: string;
  87.    ButtonSelected: Byte;
  88.    i: Integer;
  89. begin
  90.    if SaveDialog.Execute then
  91.    begin
  92.       MyFile := SaveDialog.FileName;
  93.       if Pos('.dat', MyFile) <> Length(MyFile) - 3 then
  94.          MyFile := MyFile + '.dat';
  95.       ButtonSelected := 0;
  96.       if FileExists(MyFile) then
  97.          ButtonSelected := MessageDlg('Rewrite file?', mtConfirmation, [mbYes,mbNo], 0);
  98.       if (not FileExists(MyFile)) or (ButtonSelected = mrYes) then
  99.       begin
  100.          AssignFile(OutputFile, MyFile);
  101.          ReWrite(OutputFile);
  102.          for i := 0 to High(MainForm.Bufer) do
  103.             Write(OutputFile, MainForm.Bufer[i]);
  104.       end;
  105.       CloseFile(OutputFile);
  106.       BtSave.Enabled := False;
  107.    end;
  108. end;
  109.  
  110.  
  111.  
  112. procedure TViewRec.BtSortClick(Sender: TObject);
  113. var
  114.    i: Integer;
  115. begin
  116.    SortArr(MainForm.Bufer);
  117.    for i := 1 to Length(MainForm.Bufer) do
  118.    begin
  119.       ViewRec.Table.Cells[0,i] := MainForm.Bufer[i-1].Surname;
  120.       ViewRec.Table.Cells[1,i] := MainForm.Bufer[i-1].Name;
  121.       ViewRec.Table.Cells[2,i] := MainForm.Bufer[i-1].Patronymic;
  122.       ViewRec.Table.Cells[3,i] := IntToStr(MainForm.Bufer[i-1].Group);
  123.       ViewRec.Table.Cells[4,i] := IntToStr(MainForm.Bufer[i-1].Number);
  124.       ViewRec.Table.Cells[5,i] := MainForm.Bufer[i-1].DateOfBirth;
  125.       ViewRec.Table.Cells[6,i] := MainForm.Bufer[i-1].Sex;
  126.    end;
  127.    BtSort.Enabled := False;
  128. end;
  129.  
  130. procedure TViewRec.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  131. begin
  132.    if (Application.MessageBox('Would you like to close the window?',
  133.       'Program closing', MB_OKCANCEL) = mrOk) then
  134.       CanClose := true
  135.    else
  136.       CanClose := false;
  137. end;
  138.  
  139. procedure TViewRec.FormCreate(Sender: TObject);
  140. begin
  141.    Table.Cells[0, 0] := 'Surname';
  142.    Table.Cells[1, 0] := 'Name';
  143.    Table.Cells[2, 0] := 'Patronymic';
  144.    Table.Cells[3, 0] := 'Group';
  145.    Table.Cells[4, 0] := 'Daybook number';
  146.    Table.Cells[5, 0] := 'Date of birth';
  147.    Table.Cells[6, 0] := 'Sex';
  148. end;
  149.  
  150. procedure TViewRec.ImageHelpClick(Sender: TObject);
  151. begin
  152.    Application.MessageBox('In this window you can view records, sort them and search for ','Help information', MB_OK);
  153. end;
  154.  
  155. procedure TViewRec.ImSearchClick(Sender: TObject);
  156. begin
  157.    SearchFor.Height := 100;
  158.    SearchFor.ShowModal;
  159.    SearchFor.Hide;
  160. end;
  161.  
  162. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement