Advertisement
Egor_Vakar

(Delphi) lab4.1 ChangeUnit

Feb 22nd, 2022
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.71 KB | None | 0 0
  1. unit ChangeUnit;
  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.StdCtrls, Vcl.Menus, ClipBrd;
  8.  
  9. type
  10.   TChangeInfo = class(TForm)
  11.     MainLabel: TLabel;
  12.     NumLabel: TLabel;
  13.     NumEdit: TEdit;
  14.     ConfirmButton: TButton;
  15.     PopupMenu: TPopupMenu;
  16.     N1: TMenuItem;
  17.     N2: TMenuItem;
  18.     N3: TMenuItem;
  19.     N4: TMenuItem;
  20.     procedure CutClick(Sender: TObject);
  21.     procedure CopyClick(Sender: TObject);
  22.     procedure DeleteClick(Sender: TObject);
  23.     procedure KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  24.     procedure IntEditPress(Sender: TObject; var Key: Char);
  25.     procedure ButtonClick(Sender: TObject);
  26.     procedure CloseChange(Sender: TObject; var CanClose: Boolean);
  27.   private
  28.     { Private declarations }
  29.   public
  30.     { Public declarations }
  31.   end;
  32.  
  33. var
  34.   ChangeInfo: TChangeInfo;
  35.  
  36. implementation
  37.  
  38. {$R *.dfm}
  39.  
  40. uses lab4_1, InfoUnit;
  41.  
  42. procedure TChangeInfo.ButtonClick(Sender: TObject);
  43. var
  44.     Temp: String;
  45.     i: Integer;
  46. begin
  47.     Temp := MainLabel.Caption;
  48.     Temp := Copy(Temp, 41, Length(MainLabel.Caption));
  49.     if not(NumEdit.Text = '') then
  50.         if not(StrToInt(NumEdit.Text) > MainForm.TeamSGrid.RowCount - 1) then
  51.         begin
  52.             if Temp = 'изменить' then
  53.             begin
  54.                 TeamInfo.show;
  55.                 TeamInfo.MainLabel.Caption := TeamInfo.MainLabel.Caption + ' №' + NumEdit.Text;
  56.                 TeamInfo.MainLabel.Font.Size := 10;
  57.                 TeamInfo.MainLabel.Left := TeamInfo.MainLabel.Left - (Length(TEdit(Sender).Text) + 1) * 1;
  58.                 TeamInfo.NameEdit.text := MainForm.TeamSGrid.Cells[0,StrToInt(NumEdit.Text)];
  59.                 TeamInfo.PointsEdit.text := MainForm.TeamSGrid.Cells[1,StrToInt(NumEdit.Text)];
  60.                 TeamInfo.CountryEdit.text := MainForm.TeamSGrid.Cells[2,StrToInt(NumEdit.Text)];
  61.                 TeamInfo.CoachEdit.text := MainForm.TeamSGrid.Cells[3,StrToInt(NumEdit.Text)];
  62.                 NumEdit.Text := '';
  63.                 ChangeInfo.Close;
  64.             end;
  65.             if Temp = 'удалить' then
  66.             begin
  67.                 MainForm.Enabled := True;
  68.                 MainForm.TeamSGrid.Enabled := True;
  69.                 for i := StrToInt(NumEdit.Text) to MainForm.TeamSGrid.RowCount - 2 do
  70.                 begin
  71.                     MainForm.TeamSGrid.Cells[0,i]:= MainForm.TeamSGrid.Cells[0,i + 1];
  72.                     MainForm.TeamSGrid.Cells[1,i]:= MainForm.TeamSGrid.Cells[1,i + 1];
  73.                     MainForm.TeamSGrid.Cells[2,i]:= MainForm.TeamSGrid.Cells[2,i + 1];
  74.                     MainForm.TeamSGrid.Cells[3,i]:= MainForm.TeamSGrid.Cells[3,i + 1];
  75.                 end;
  76.                 MainForm.TeamSGrid.RowCount := MainForm.TeamSGrid.RowCount - 1;
  77.                 MainForm.Height := MainForm.Height - 24;
  78.                 MainForm.TeamSGrid.Height := MainForm.TeamSGrid.Height - 24;
  79.                 ChangeInfo.Close;
  80.                 MainForm.Savetofilemenu.Enabled := True;
  81.                 MainForm.TeamSGrid.Enabled := False;
  82.                 if MainForm.TeamSGrid.RowCount = 1 then
  83.                     MainForm.SaveToFileMenu.Enabled := False;
  84.             end;
  85.         end
  86.         else
  87.             Application.MessageBox('Некоректные данные в ячейке!', 'Ошибка', MB_ICONERROR)
  88.     else
  89.         Application.MessageBox('Заполните ячейку!', 'Ошибка', MB_ICONERROR);
  90.  
  91. end;
  92.  
  93. procedure TChangeInfo.CloseChange(Sender: TObject; var CanClose: Boolean);
  94. begin
  95.     MainForm.Enabled := True;
  96. end;
  97.  
  98. procedure TChangeInfo.CopyClick(Sender: TObject);
  99. begin
  100.     ClipBoard.AsText := NumEdit.Text;
  101. end;
  102.  
  103. procedure TChangeInfo.CutClick(Sender: TObject);
  104. begin
  105.     ClipBoard.AsText := NumEdit.Text;
  106.     NumEdit.Text := '';
  107. end;
  108.  
  109. procedure TChangeInfo.DeleteClick(Sender: TObject);
  110. begin
  111.     NumEdit.Text := '';
  112. end;
  113.  
  114. function CountDigits(Num: Integer): Byte;
  115. var
  116.     Answer: Byte;
  117. begin
  118.     Answer := 0;
  119.     while Num > 0 do
  120.     begin
  121.         Num := Num div 10;
  122.         Inc(Answer);
  123.     end;
  124.     CountDigits := Answer;
  125. end;
  126.  
  127. procedure TChangeInfo.IntEditPress(Sender: TObject; var Key: Char);
  128. begin
  129.     if not(Key in ['0'..'9', #08]) then
  130.         Key := #0;
  131.     if (Length(TEdit(Sender).Text) = CountDigits(MainForm.TeamSGrid.RowCount - 1)) and not(Key = #08) then
  132.         Key := #0;
  133.     if (TEdit(Sender).Text = '') and (Key = '0') then
  134.         Key := #0;
  135. end;
  136.  
  137. procedure TChangeInfo.KeyDown(Sender: TObject; var Key: Word;
  138.   Shift: TShiftState);
  139. begin
  140.     TEdit(Sender).ReadOnly := (((Shift=[ssShift]) and (Key = VK_INSERT)) or (Shift=[ssCtrl]) or (Shift=[ssAlt]));
  141. end;
  142.  
  143. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement