Advertisement
Vladislav8653

4.3 delphi

Mar 16th, 2023
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.47 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  7.   System.Classes, Vcl.Graphics,
  8.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     Edit1: TEdit;
  13.     Button1: TButton;
  14.     Label1: TLabel;
  15.     Label2: TLabel;
  16.     MainMenu1: TMainMenu;
  17.     N1: TMenuItem;
  18.     N2: TMenuItem;
  19.     Label3: TLabel;
  20.     N3: TMenuItem;
  21.     procedure Button1Click(Sender: TObject);
  22.     procedure N2Click(Sender: TObject);
  23.     procedure N1Click(Sender: TObject);
  24.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  25.     procedure Edit1Change(Sender: TObject);
  26.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  27.     procedure N3Click(Sender: TObject);
  28.   private
  29.     { Private declarations }
  30.   public
  31.     { Public declarations }
  32.   end;
  33.  
  34. var
  35.   Form1: TForm1;
  36.  
  37. implementation
  38.  
  39. {$R *.dfm}
  40.  
  41. uses Unit2;
  42.  
  43. procedure TForm1.Button1Click(Sender: TObject);
  44. Const
  45.     STEP = 30;
  46.     CORRECTION = 1;
  47.     SCREEN_CORRECTION = 50;
  48. begin
  49.     Form2.Width := STEP * Length(Edit1.Text) + CORRECTION;
  50.     Form2.Height := Screen.Height - SCREEN_CORRECTION;
  51.     Form2.Position := poDesktopCenter;
  52.     Form2.ShowModal;
  53. end;
  54.  
  55. procedure TForm1.N1Click(Sender: TObject);
  56. begin
  57.     Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
  58. end;
  59.  
  60. procedure TForm1.N2Click(Sender: TObject);
  61. Const
  62.     STR1 = 'После нажатия на кнопку Вы увидите новое окно с разноцветными столбцами, в каждом из которых ';
  63.     STR2 = 'записан один символ из вашей строки. Уникальных цветов для столбцов всего 8. С этой переодичностью они повторяются.';
  64.     STR4 = 'Диапазон длины текста: 6...64 символов.';
  65.     STR3 = 'При нажатии Enter осуществляется сдвиг цвета столбцов.';
  66. begin
  67.     Application.MessageBox(STR1 + STR2 + #10#13 + STR3 + #10#13 + STR4, 'Инструкция', 0);
  68. end;
  69.  
  70. procedure TForm1.N3Click(Sender: TObject);
  71. begin
  72.     Application.MessageBox('Если поперемещать форму по экрану, скрывая ее за границами экрана (особенно вертикально), то столбцы "сломаются" и получится красивая картинка.', 'Инструкция', 0);
  73. end;
  74.  
  75. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  76. begin
  77.     CanClose := MessageBox(Form1.Handle, 'Вы уверены, что хотите выйти?', 'Выход', MB_YESNO + MB_ICONQUESTION)=ID_YES;
  78. end;
  79.  
  80. procedure TForm1.Edit1Change(Sender: TObject);
  81. Const
  82.     MIN = 5; //не меньше 6 символов надо
  83.     MAX = 65; // не больше 64
  84. begin
  85.     Button1.Enabled := (Length(Edit1.Text) > MIN) and (Length(Edit1.Text) < MAX);
  86. end;
  87.  
  88. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  89. begin
  90.     If (Key = #13) and (Button1.Enabled) then
  91.         Button1.Click;
  92. end;
  93.  
  94. end.
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. unit Unit2;
  106.  
  107. interface
  108.  
  109. uses
  110.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  111.   System.Classes, Vcl.Graphics,
  112.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids;
  113.  
  114. type
  115.     TArr = Array Of TColor;
  116.  
  117.   TForm2 = class(TForm)
  118.     procedure FormCreate(Sender: TObject);
  119.     procedure FormPaint(Sender: TObject);
  120.     procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
  121.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  122.   private
  123.     { Private declarations }
  124.   public
  125.     { Public declarations }
  126.   end;
  127.  
  128. var
  129.     Form2: TForm2;
  130.     Arr: TArr;
  131.     I: Integer;
  132.  
  133. implementation
  134.  
  135. uses Unit1;
  136.  
  137. {$R *.dfm}
  138.  
  139. procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
  140. begin
  141.     I := 0;
  142. end;
  143.  
  144. procedure TForm2.FormCreate(Sender: TObject);
  145. begin
  146.     SetLength(Arr, 15);
  147.     Arr[0] := ClRed;
  148.     Arr[1] := ClBlue;
  149.     Arr[2] := ClTeal;
  150.     Arr[3] := ClWhite;
  151.     Arr[4] := ClYellow;
  152.     Arr[5] := ClAqua;
  153.     Arr[6] := ClLime;
  154.     Arr[7] := ClFuchsia;
  155.     Arr[8] := ClGreen;
  156.     Arr[9] := ClMoneyGreen;
  157.     Arr[10] := ClSkyBlue;
  158.     Arr[11] := ClMedGray;
  159.     Arr[12] := ClSilver;
  160.     Arr[13] := ClGray;
  161.     Arr[14] := ClNavy;
  162.     I := 0;
  163. end;
  164.  
  165.  
  166. procedure DrawLetters(X, Y, Temp, Index: Integer);
  167. Const
  168.     WIDE = 30;
  169.     HALF_WIDE = 15;
  170. Begin
  171.     If Index < Form1.Edit1.GetTextLen + 1 Then
  172.         With Form2 do
  173.         Begin
  174.             Canvas.Font.Color := ClBlack;
  175.             Canvas.Brush.Color := Arr[Temp Mod Length(Arr)];
  176.             Canvas.FillRect(Rect(X - HALF_WIDE, 0, X + HALF_WIDE, Form2.Height));
  177.             Canvas.TextOut(X - 7, Y, Form1.Edit1.Text[Index]);
  178.             Inc(Temp);
  179.             Inc(Index);
  180.             DrawLetters(X + WIDE, Y, Temp, Index);
  181.         End
  182.     Else
  183.     Begin
  184.         Inc(I);
  185.     End;
  186. End;
  187.  
  188. procedure TForm2.FormPaint(Sender: TObject);
  189. Var
  190.     X, Y, Temp : Integer;
  191. begin
  192.     Canvas.Pen.Width := 4;
  193.     Canvas.Pen.Color := ClBlack;
  194.     Canvas.Font.Size := 15;
  195.     X := 10;
  196.     Y := Form2.Height div 2;
  197.     Temp := I Mod 8;
  198.     DrawLetters(X, Y, I, 1);
  199. end;
  200.  
  201.  
  202. procedure TForm2.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
  203. begin
  204.     If Msg.CharCode = VK_RETURN Then // если ентер
  205.     Begin
  206.         Inc(I);
  207.         Form2.OnPaint(Application);
  208.     End;
  209. end;
  210.  
  211. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement