Advertisement
believe_me

Untitled

Apr 5th, 2022
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.60 KB | None | 0 0
  1. unit ShowSquareUnit;
  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.ExtCtrls, Vcl.StdCtrls, Vcl.Menus, MainUnit;
  8.  
  9. type
  10.   TShowForm = class(TForm)
  11.     Image: TImage;
  12.     ShowLowerPartButton: TButton;
  13.     ShowFirstSquareButton: TButton;
  14.     BuildSecondSquareButton: TButton;
  15.     ShowMagicSquareButton: TButton;
  16.     MainMenu: TMainMenu;
  17.     InstructionMenu: TMenuItem;
  18.     SaveMenu: TMenuItem;
  19.     SaveToFile: TSaveDialog;
  20.     SumLabel: TLabel;
  21.     TaskLabel: TLabel;
  22.     procedure ShowMagicSquareButtonClick(Sender: TObject);
  23.     procedure BuildSecondSquareButtonClick(Sender: TObject);
  24.     procedure ShowFirstSquareButtonClick(Sender: TObject);
  25.     procedure ShowLowerPartButtonClick(Sender: TObject);
  26.     procedure InstructionMenuClick(Sender: TObject);
  27.     procedure FormShow(Sender: TObject);
  28.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  29.     procedure SaveMenuClick(Sender: TObject);
  30.   private
  31.     { Private declarations }
  32.   public
  33.     { Public declarations }
  34.   end;
  35.  
  36. var
  37.   ShowForm: TShowForm;
  38.  
  39. implementation
  40.  
  41. {$R *.dfm}
  42.  
  43. uses
  44.     DrawSquareUnit, MagicBoxUnit;
  45.  
  46. const
  47.     TextMagicSquare = 'Итоговый магический квадрат:';
  48.     TextSecondSquare = 'Второй латинский квадрат:';
  49.     TextFirstSquare = 'Первый латинский квадрат:';
  50.     TextLowerPartSquare = 'Основа первого латинского квадрата:';
  51.  
  52. var
  53.     FirstLatinSquare, SecondLatinSquare, MagicSquare, FirstLowerLatinSquare: TSquare;
  54.     Sum, IndexOfPrinted: integer;
  55.    
  56.  
  57. procedure TShowForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  58.  
  59. begin
  60.     SquarePrinter.clear(Image);
  61.     Main.Enabled := true;
  62. end;
  63.  
  64. procedure TShowForm.FormShow(Sender: TObject);
  65.  
  66. begin
  67.     Main.Enabled := false;
  68.     SumLabel.visible := false;
  69.     TaskLabel.Visible := false;
  70.     SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE);
  71.     SaveMenu.Enabled := false;
  72.     Sum := 0;
  73.     Size := strToInt(Main.SizeSpinEdit.Text);
  74.     TSquareOperations.receiveMagicSquare(MagicSquare,
  75.          FirstLatinSquare, SecondLatinSquare, FirstLowerLatinSquare, Sum, Size);
  76. end;
  77.  
  78. procedure TShowForm.InstructionMenuClick(Sender: TObject);
  79.  
  80. Var
  81.     InstructionMenu: TForm;
  82.     Instruction: string;
  83.  
  84. begin
  85.     Instruction := 'Отображение разных этапов получения магического квадрата:' + #13#10 + #13#10
  86.         + '1. "Нижняя часть" - отобразить нижнюю часть первого латинского квадрата(Верхняя будет заполнена нулями).' + #13#10
  87.         + '2. "Первый латинский" - отобразить нижний латинский квадрат.' + #13#10 +
  88.          '3. "Второй латинский" - отобразить второй латинский квадрат.' +
  89.          #13#10 + '4. "Магический квадрат" - отобразить магический квадрат с суммой элементов.';
  90.     InstructionMenu := CreateMessageDialog(Instruction, mtInformation, [mbOk], mbOK);
  91.     InstructionMenu.ShowModal;
  92.     InstructionMenu.Free;
  93. end;
  94.  
  95. procedure TShowForm.BuildSecondSquareButtonClick(Sender: TObject);
  96.  
  97. begin
  98.     IndexOfPrinted := 3;
  99.     SumLabel.visible := false;
  100.     SaveMenu.Enabled := true;
  101.     TaskLabel.Visible := false;
  102.     SumLabel.Caption := '';
  103.     SquarePrinter.clear(Image);
  104.     SquarePrinter.printText(TextSecondSquare, Image);
  105.     SquarePrinter.drawSquare(SecondLatinSquare, Image);
  106. end;
  107.  
  108. procedure TShowForm.SaveMenuClick(Sender: TObject);
  109.  
  110. begin
  111.     if SaveToFile.Execute() then
  112.     Begin
  113.         case IndexOfPrinted of
  114.             1: TSquareOperations.saveSquare(FirstLowerLatinSquare, SaveToFile.FileName, TextLowerPartSquare);
  115.             2: TSquareOperations.saveSquare(FirstLatinSquare, SaveToFile.FileName, TextFirstSquare);
  116.             3: TSquareOperations.saveSquare(SecondLatinSquare, SaveToFile.FileName, TextSecondSquare);
  117.             4:
  118.             begin
  119.                 TSquareOperations.saveSquare(MagicSquare, SaveToFile.FileName, TextMagicSquare, TSquareOperations.findSum(MagicSquare));
  120.             end;
  121.         end;
  122.         Application.MessageBox('Квадрат записан в файл.', 'Запись в файл');
  123.     End;
  124. end;
  125.  
  126. procedure TShowForm.ShowFirstSquareButtonClick(Sender: TObject);
  127.  
  128. begin
  129.     IndexOfPrinted := 2;
  130.     SaveMenu.Enabled := true;
  131.     SumLabel.visible := false;
  132.     TaskLabel.Visible := false;
  133.     SumLabel.Caption := '';
  134.     SquarePrinter.clear(Image);
  135.     SquarePrinter.printText(TextFirstSquare, Image);
  136.     SquarePrinter.drawSquare(FirstLatinSquare, Image);
  137. end;
  138.  
  139. procedure TShowForm.ShowLowerPartButtonClick(Sender: TObject);
  140.  
  141. begin
  142.     IndexOfPrinted := 1;
  143.     SaveMenu.Enabled := true;
  144.     SumLabel.Caption := '';
  145.     TaskLabel.Visible := false;
  146.     SquarePrinter.clear(Image);
  147.     SquarePrinter.printText(TextLowerPartSquare, Image);
  148.     SquarePrinter.drawSquare(FirstLowerLatinSquare, Image);
  149. end;
  150.  
  151. procedure TShowForm.ShowMagicSquareButtonClick(Sender: TObject);
  152.  
  153. begin
  154.     IndexOfPrinted := 4;
  155.     SumLabel.visible := true;
  156.     TaskLabel.Visible := true;
  157.     SumLabel.Caption := '';
  158.     SumLabel.Caption := intToStr(TSquareOperations.findSum(MagicSquare));
  159.     SaveMenu.Enabled := true;
  160.     SquarePrinter.clear(Image);
  161.     SquarePrinter.printText(TextMagicSquare, Image);
  162.     SquarePrinter.drawSquare(MagicSquare, Image);
  163. end;
  164.  
  165. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement