/
dorofeev_denis
/
test
Обзор
Документация
Войти
/
dorofeev_denis
/
test
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Unit1.pas
125 строк
3 KB
dorofeev_denis
update: Unit1.pas
03 июн 2026, 14:20
Верифицирован
03 июн 2026, 14:20
a70106b
Код
Авторство
О чём код?
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls, Vcl.Samples.Spin, uRequestService, Vcl.ExtCtrls, DBAccess, Uni, MemDS; type TFormMain = class(TForm) dsRequests: TDataSource; PageControlMain: TPageControl; TabEmployee: TTabSheet; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; edtEmployeeName: TEdit; cmbCertType: TComboBox; seCopies: TSpinEdit; mmoReason: TMemo; btnSendRequest: TButton; TabAccountant: TTabSheet; gridAccountant: TDBGrid; btnSetInWork: TButton; btnSetReady: TButton; btnSetRejected: TButton; btnFilterMy: TButton; gridEmployeeRequests: TDBGrid; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure btnSendRequestClick(Sender: TObject); procedure btnFilterMyClick(Sender: TObject); procedure PageControlMainChange(Sender: TObject); procedure btnSetStatusClick(Sender: TObject); private { Private declarations } FService: TRequestService; //procedure RefreshData; public { Public declarations } end; var FormMain: TFormMain; implementation {$R *.dfm} procedure TFormMain.FormCreate(Sender: TObject); var i: TDumpCertificateType; begin FService := TRequestService.Create; dsRequests.DataSet := FService.Table; // Заполняем комбобокс типами справок cmbCertType.Items.Clear; for i := Low(TDumpCertificateType) to High(TDumpCertificateType) do cmbCertType.Items.Add(CertNames[i]); cmbCertType.ItemIndex := 0; end; procedure TFormMain.FormDestroy(Sender: TObject); begin FService.Free; end; procedure TFormMain.btnSendRequestClick(Sender: TObject); begin try FService.CreateRequest( edtEmployeeName.Text, mmoReason.Text, TDumpCertificateType(cmbCertType.ItemIndex), seCopies.Value ); ShowMessage('Запрос успешно отправлен!'); edtEmployeeName.Clear; mmoReason.Clear; except on E: Exception do MessageDlg('Ошибка: ' + E.Message, mtError, [mbOK], 0); // Обработка ошибок end; end; procedure TFormMain.btnFilterMyClick(Sender: TObject); begin if Trim(edtEmployeeName.Text) = '' then begin ShowMessage('Введите ваше имя для просмотра истории.'); Exit; end; FService.FilterByEmployee(edtEmployeeName.Text); end; procedure TFormMain.PageControlMainChange(Sender: TObject); begin // При переходе на вкладку бухгалтера — сбрасываем фильтр сотрудника if PageControlMain.ActivePage = TabAccountant then FService.ClearFilter; end; procedure TFormMain.btnSetStatusClick(Sender: TObject); var SelectedID: Integer; NewStatus: TRequestStatus; begin if FService.Table.IsEmpty then Exit; SelectedID := FService.Table.FieldByName('ID').AsInteger; // из-за связки DBGrid и FService.Table получаем id выделенной строки NewStatus := TRequestStatus((Sender as TButton).Tag); // Назначаем Tag кнопкам (1 = rsInWork, 2 = rsReady, 3 = rsRejected) try FService.UpdateStatus(SelectedID, NewStatus); except on E: Exception do MessageDlg(E.Message, mtError, [mbOK], 0); end; end; end.