Advertisement
Guest User

Delphi Epta Form

a guest
Jun 16th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 7.56 KB | None | 0 0
  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ComCtrls, StdCtrls, ActnList, Model;
  8.  
  9. type
  10.   TfMain = class(TForm)
  11.     gbData: TGroupBox;
  12.     Label1: TLabel;
  13.     teSurename: TEdit;
  14.     Label2: TLabel;
  15.     Label3: TLabel;
  16.     teFirstname: TEdit;
  17.     tePatronymic: TEdit;
  18.     Label4: TLabel;
  19.     Label5: TLabel;
  20.     Label6: TLabel;
  21.     teGroup: TEdit;
  22.     Label7: TLabel;
  23.     cbFormOfStudy: TComboBox;
  24.     Label8: TLabel;
  25.     Label9: TLabel;
  26.     teRatings: TEdit;
  27.     teAverageScore: TEdit;
  28.     btnAddStudent: TButton;
  29.     btnChangeStudent: TButton;
  30.     btnDeleteStudent: TButton;
  31.     lvStudents: TListView;
  32.     ActionList1: TActionList;
  33.     actAddStudent: TAction;
  34.     actChangeStudent: TAction;
  35.     actDeleteStudent: TAction;
  36.     GroupBox1: TGroupBox;
  37.     btnFindStud: TButton;
  38.     GroupBox2: TGroupBox;
  39.     rbPay: TRadioButton;
  40.     rbNoPay: TRadioButton;
  41.     actFindStudent: TAction;
  42.     actGetBestStud: TAction;
  43.     btnGetBestStud: TButton;
  44.     btnShowAllStud: TButton;
  45.     GroupBox3: TGroupBox;
  46.     rbNotPay2: TRadioButton;
  47.     rbPay2: TRadioButton;
  48.     btnVoz: TButton;
  49.     actiGetInAverScore: TAction;
  50.     GroupBox4: TGroupBox;
  51.     btnSortSurname: TButton;
  52.     actSortSurname: TAction;
  53.     teFaculty: TEdit;
  54.     teSpecialty: TEdit;
  55.     procedure FormCreate(Sender: TObject);
  56.     procedure actAddStudentExecute(Sender: TObject);
  57.     procedure actDeleteStudentExecute(Sender: TObject);
  58.     procedure actChangeStudentExecute(Sender: TObject);
  59.     procedure FormDestroy(Sender: TObject);
  60.     procedure actFindStudentExecute(Sender: TObject);
  61.     procedure actGetBestStudExecute(Sender: TObject);
  62.     procedure btnShowAllStudClick(Sender: TObject);
  63.     procedure FormClick(Sender: TObject);
  64.     procedure lvStudentsChange(Sender: TObject; Item: TListItem;
  65.       Change: TItemChange);
  66.     procedure actiGetInAverScoreExecute(Sender: TObject);
  67.     procedure actSortSurnameExecute(Sender: TObject);
  68.   private
  69.     procedure ListChanged(const StudList: TStudentsList);
  70.     procedure FocusListView(Index: Integer);
  71.   public
  72.     { Public declarations }
  73.   end;
  74.  
  75. var
  76.   fMain: TfMain;
  77.   StudList : TStudentsList;
  78.  
  79. implementation
  80.  
  81. {$R *.dfm}
  82.  
  83. procedure TfMain.FormCreate(Sender: TObject);
  84. begin
  85.   StudList := GetDataFromFile(ExtractFilePath(ParamStr(0)) +
  86.     'Config/Students.dat');
  87.   ListChanged(StudList);
  88. end;
  89.  
  90. procedure TfMain.actAddStudentExecute(Sender: TObject);
  91. begin
  92.   if (teSurename.Text <> '') and (teFirstname.Text <> '')
  93.     and (tePatronymic.Text <> '') and (teFaculty.Text <> '')
  94.     and (teSpecialty.Text <> '') and (teGroup.Text <> '')
  95.     and (teRatings.Text <> '') then
  96.   begin
  97.     AddStudent(StudList, teSurename.Text, teFirstname.Text,
  98.     tePatronymic.Text, teFaculty.Text, teSpecialty.Text,
  99.     teGroup.Text, cbFormOfStudy.Text, teRatings.Text);
  100.  
  101.     teSurename.Text := '';
  102.     teFirstname.Text := '';
  103.     tePatronymic.Text := '';
  104.     teFaculty.Text := '';
  105.     teSpecialty.Text := '';
  106.     teGroup.Text := '';
  107.     teRatings.Text := '';
  108.     teAverageScore.Text := '';
  109.  
  110.     ListChanged(StudList);
  111.     FocusListView(StudList.Len);
  112.   end
  113.   else
  114.     MessageDlg('Введены некорректные данные!', mtError, mbOKCancel, 0);
  115. end;
  116.  
  117. procedure TfMain.ListChanged(const StudList: TStudentsList);
  118. var
  119.   Item: TListItem;
  120.   I: Integer;
  121. begin
  122.   lvStudents.Items.BeginUpdate;
  123.   lvStudents.Items.Clear;
  124.   for I := 1 to StudList.Len do
  125.   begin
  126.     Item := lvStudents.Items.Add;
  127.     Item.Caption := StudList.Data[I].Surname;
  128.     Item.SubItems.Add(StudList.Data[I].Firstname);
  129.     Item.SubItems.Add(StudList.Data[I].Patronymic);
  130.     Item.SubItems.Add(StudList.Data[I].Faculty);
  131.     Item.SubItems.Add(StudList.Data[I].Specialty);
  132.     Item.SubItems.Add(StudList.Data[I].Group);
  133.     Item.SubItems.Add(StudList.Data[I].FormOfStudy);
  134.     Item.SubItems.Add(StudList.Data[I].Ratings);
  135.     Item.SubItems.Add(StudList.Data[I].AverageScore);
  136.   end;
  137.   lvStudents.Items.EndUpdate;
  138. end;
  139.  
  140. procedure TfMain.FocusListView(Index: Integer);
  141. begin
  142.   lvStudents.ItemIndex := Index-1;
  143.   lvStudents.SetFocus;
  144. end;
  145.  
  146. procedure TfMain.actDeleteStudentExecute(Sender: TObject);
  147. var
  148.   Index: Word;
  149. begin
  150.   if lvStudents.Selected <> nil then
  151.   begin
  152.     Index := lvStudents.ItemIndex;
  153.     DeleteStudent(StudList, Index);
  154.     FocusListView(-1);
  155.     ListChanged(StudList);
  156.   end
  157.   else
  158.     ShowMessage('Error');
  159.  
  160.   teSurename.Text := '';
  161.   teFirstname.Text := '';
  162.   tePatronymic.Text := '';
  163.   teFaculty.Text := '';
  164.   teSpecialty.Text := '';
  165.   teGroup.Text := '';
  166.   cbFormOfStudy.Text := '';
  167.   teRatings.Text := '';
  168.   teAverageScore.Text := '';
  169. end;
  170.  
  171. procedure TfMain.actChangeStudentExecute(Sender: TObject);
  172. var
  173.   Index : Word;
  174. begin
  175.   if lvStudents.Selected <> nil then
  176.   begin
  177.     Index := lvStudents.ItemIndex;
  178.     ChangeStudent(StudList, Index, teSurename.Text,
  179.     teFirstname.Text, tePatronymic.Text, teFaculty.Text,
  180.     teSpecialty.Text, teGroup.Text, cbFormOfStudy.Text,
  181.     teRatings.Text);
  182.     FocusListView(-1);
  183.     ListChanged(StudList);
  184.   end
  185.   else
  186.     ShowMessage('Error');
  187. end;
  188.  
  189. procedure TfMain.FormDestroy(Sender: TObject);
  190. begin
  191.   WriteDataToFile(StudList, ExtractFilePath(ParamStr(0)) +
  192.     'Config/Students.dat');
  193. end;
  194.  
  195. procedure TfMain.actFindStudentExecute(Sender: TObject);
  196. var
  197.   Index : Integer;
  198. begin
  199.   ListChanged(StudList);
  200.   if (teSurename.Text <> '') and (teFirstname.Text <> '')
  201.     and (tePatronymic.Text <> '') and (teGroup.Text <> '') then
  202.   begin
  203.     Index := FindStudent(StudList, teSurename.Text, teFirstname.Text,
  204.       tePatronymic.Text, teGroup.Text);
  205.     if Index <> -1 then
  206.     begin
  207.       lvStudents.ItemIndex := Index-1;
  208.       lvStudents.SetFocus;
  209.     end
  210.     else
  211.       ShowMessage('Студент не найден!');
  212.   end
  213.   else
  214.     ShowMessage('Error');
  215. end;
  216.  
  217. procedure TfMain.actGetBestStudExecute(Sender: TObject);
  218. var
  219.   BestStudList : TStudentsList;
  220. begin
  221.   BestStudList := GetBestStudents(StudList, rbPay.Checked);
  222.   ListChanged(BestStudList);
  223. end;
  224.  
  225. procedure TfMain.btnShowAllStudClick(Sender: TObject);
  226. begin
  227.   ListChanged(StudList);
  228. end;
  229.  
  230. procedure TfMain.FormClick(Sender: TObject);
  231. begin
  232.   FocusListView(0);
  233.  
  234.   teSurename.Text := '';
  235.   teFirstname.Text := '';
  236.   tePatronymic.Text := '';
  237.   teFaculty.Text := '';
  238.   teSpecialty.Text := '';
  239.   teGroup.Text := '';
  240.   cbFormOfStudy.Text := '';
  241.   teRatings.Text := '';
  242.   teAverageScore.Text := '';
  243. end;
  244.  
  245. procedure TfMain.lvStudentsChange(Sender: TObject; Item: TListItem;
  246.   Change: TItemChange);
  247. var
  248.   Index : Integer;
  249. begin
  250.   Index := lvStudents.ItemIndex;
  251.   if Index >= 0 then
  252.   begin
  253.     teSurename.Text := StudList.Data[Index+1].Surname;
  254.     teFirstname.Text := StudList.Data[Index+1].Firstname;
  255.     tePatronymic.Text := StudList.Data[Index+1].Patronymic;
  256.     teFaculty.Text := StudList.Data[Index+1].Faculty;
  257.     teSpecialty.Text := StudList.Data[Index+1].Specialty;
  258.     teGroup.Text := StudList.Data[Index+1].Group;
  259.     cbFormOfStudy.Text := StudList.Data[Index+1].FormOfStudy;
  260.     teRatings.Text := StudList.Data[Index+1].Ratings;
  261.     teAverageScore.Text := StudList.Data[Index+1].AverageScore;
  262.   end;
  263. end;
  264.  
  265. procedure TfMain.actiGetInAverScoreExecute(Sender: TObject);
  266. var
  267.   SortedSList : TStudentsList;
  268. begin
  269.   SortedSList := SortRatings(StudList, rbPay2.Checked);
  270.   ListChanged(SortedSList);
  271. end;
  272.  
  273. procedure TfMain.actSortSurnameExecute(Sender: TObject);
  274. var
  275.   SortSurnameList : TStudentsList;
  276. begin
  277.   SortSurnameList := SortSurname(StudList, teGroup.Text);
  278.   ListChanged(SortSurnameList);
  279. end;
  280.  
  281. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement