Advertisement
anticlown

Lab.7.1.Full(Delphi)

Jun 3rd, 2023
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 18.70 KB | None | 0 0
  1. Unit UnitVCLMain;
  2.  
  3. Interface
  4.  
  5. Uses
  6.     Winapi.Windows,
  7.     Winapi.Messages,
  8.     System.SysUtils,
  9.     System.Variants,
  10.     System.Classes,
  11.     Vcl.Graphics,
  12.     Vcl.Controls,
  13.     Vcl.Forms,
  14.     Vcl.Dialogs,
  15.     System.ImageList,
  16.     Vcl.ImgList,
  17.     Vcl.VirtualImageList,
  18.     Vcl.Menus,
  19.     Vcl.StdCtrls,
  20.     Vcl.Buttons,
  21.     Vcl.WinXCtrls,
  22.     Vcl.ExtCtrls,
  23.     Vcl.Grids,
  24.     ClipBrd,
  25.     System.Actions,
  26.     Vcl.ActnList;
  27.  
  28. Type
  29.  
  30.     TMatrix = Array Of Array Of Integer;
  31.  
  32.     TLabeledEdit = Class(Vcl.ExtCtrls.TLabeledEdit)
  33.     Protected
  34.         Procedure WMPaste(Var Msg: TMessage); Message WM_PASTE;
  35.     End;
  36.  
  37.     TfrmMain = Class(TForm)
  38.         VilButtons: TVirtualImageList;
  39.         SvdSaveToFileDialog: TSaveDialog;
  40.         BalloonHint: TBalloonHint;
  41.         OpdOpenFromFileDialog: TOpenDialog;
  42.         PTop: TPanel;
  43.         PClient: TPanel;
  44.         SplvMenu: TSplitView;
  45.         SdbtExit: TSpeedButton;
  46.         SdbtSaveToFile: TSpeedButton;
  47.         SdbtOpenFromFile: TSpeedButton;
  48.         SdbtStart: TSpeedButton;
  49.         SdbtMenu: TSpeedButton;
  50.         SdbtHelp: TSpeedButton;
  51.         LbWelcome: TLabel;
  52.         LbTaskInfo: TLabel;
  53.         LbeNodesRequirement: TLabeledEdit;
  54.         StrgrMatrix: TStringGrid;
  55.         LbMatrixRequirement: TLabel;
  56.         BtGetMatrix: TButton;
  57.         SdbtAboutDeveloper: TSpeedButton;
  58.         Procedure SdbtMenuClick(Sender: TObject);
  59.         Procedure SdbtAboutDeveloperClick(Sender: TObject);
  60.         Procedure SdbtHelpClick(Sender: TObject);
  61.         Procedure FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
  62.         Procedure SdbtExitClick(Sender: TObject);
  63.         Procedure BtGetMatrixClick(Sender: TObject);
  64.         Procedure SdbtStartClick(Sender: TObject);
  65.         Procedure LbeNodesRequirementChange(Sender: TObject);
  66.         Procedure SdbtOpenFromFileClick(Sender: TObject);
  67.         Procedure SdbtSaveToFileClick(Sender: TObject);
  68.     Private
  69.         IntendencyMatrix: TMatrix;
  70.         Function CheckInput(): Boolean;
  71.         Function GetMatrix(): Boolean;
  72.         Procedure ConvertMatrix();
  73.     Public
  74.         AdjacencyMatrix: TMatrix;
  75.     End;
  76.  
  77. Var
  78.     FrmMain: TfrmMain;
  79.  
  80. Implementation
  81.  
  82. {$R *.dfm}
  83.  
  84. Uses UnitData,
  85.     UnitMain,
  86.     UnitVCLMatrix;
  87.  
  88. { бэк }
  89.  
  90. Function IsFileCorrect(Path: String): Boolean;
  91. Const
  92.     MIN_SIZE = 2;
  93.     MAX_SIZE = 10;
  94. Var
  95.     InputFile: TextFile;
  96.     IsCorrect: Boolean;
  97.     Size, I, J: Integer;
  98.     Matrix: TMatrix;
  99. Begin
  100.     AssignFile(InputFile, Path);
  101.     IsCorrect := True;
  102.  
  103.     Try
  104.         Try
  105.             Reset(InputFile);
  106.             Readln(InputFile, Size);
  107.  
  108.             If (Size < MIN_SIZE) Or (Size > MAX_SIZE) Then
  109.                 IsCorrect := False
  110.             Else
  111.             Begin
  112.                 SetLength(Matrix, Size, Size);
  113.                 I := 0;
  114.  
  115.                 While (IsCorrect) And (I < Size) Do
  116.                 Begin
  117.                     J := 0;
  118.  
  119.                     While (IsCorrect) And (J < Size) Do
  120.                     Begin
  121.                         Read(InputFile, Matrix[I, J]);
  122.                         If (Matrix[I, J] < 0) Or (Matrix[I, J] > Size) Then
  123.                             IsCorrect := False;
  124.                         Inc(J);
  125.                     End;
  126.  
  127.                     Inc(I);
  128.                 End;
  129.             End;
  130.         Finally
  131.             CloseFile(InputFile);
  132.         End;
  133.     Except
  134.         IsCorrect := False;
  135.     End;
  136.  
  137.     IsFileCorrect := IsCorrect;
  138. End;
  139.  
  140. Procedure GetSizeFromFile(Const Path: String; Var Size: Single; Var IsCorrect: Boolean);
  141. Var
  142.     InputFile: TextFile;
  143.     Null: String;
  144. Begin
  145.     IsCorrect := True;
  146.     Try
  147.         AssignFile(InputFile, Path);
  148.         Try
  149.             Reset(InputFile);
  150.             Readln(InputFile, Null);
  151.  
  152.             If (Null <> '') Then
  153.                 IsCorrect := True
  154.             Else
  155.             Begin
  156.                 IsCorrect := False;
  157.                 Application.MessageBox('Файл пуст!', 'Ошибка', MB_ICONERROR);
  158.             End;
  159.         Finally
  160.             Close(InputFile);
  161.         End;
  162.     Except
  163.         Application.MessageBox('Ошибка доступа!', 'Ошибка', MB_ICONERROR);
  164.     End;
  165.  
  166.     If (IsCorrect) Then
  167.     Begin
  168.         Try
  169.             Try
  170.                 Reset(InputFile);
  171.                 Readln(InputFile, Size);
  172.             Finally
  173.                 Close(InputFile);
  174.             End;
  175.         Except
  176.             IsCorrect := False;
  177.         End;
  178.     End;
  179. End;
  180.  
  181. Function GetMatrixFromFile(Const Path: String; Const Size: Single; Var Matrix: TMatrix; Var IsCorrect: Boolean): TMatrix;
  182. Var
  183.     InputFile: TextFile;
  184.     I, J: Integer;
  185.     Null: String;
  186. Begin
  187.     IsCorrect := True;
  188.     Try
  189.         AssignFile(InputFile, Path);
  190.         Reset(InputFile);
  191.         Readln(InputFile, Null);
  192.         If (Null <> '') Then
  193.             IsCorrect := True
  194.         Else
  195.         Begin
  196.             IsCorrect := False;
  197.             Application.MessageBox('Данные в файле введены неверно или отсутствуют!', 'Ошибка', MB_ICONERROR);
  198.         End;
  199.  
  200.     Except
  201.         Application.MessageBox('Ошибка доступа!', 'Ошибка', MB_ICONERROR);
  202.     End;
  203.  
  204.     If (IsCorrect) Then
  205.     Begin
  206.         Try
  207.             Reset(InputFile);
  208.             Readln(InputFile);
  209.             For I := Low(Matrix) To High(Matrix) Do
  210.                 For J := Low(Matrix[0]) To High(Matrix[0]) Do
  211.                     Read(InputFile, Matrix[I, J]);
  212.         Except
  213.             IsCorrect := False;
  214.         End;
  215.         Close(InputFile);
  216.     End;
  217.  
  218.     GetMatrixFromFile := Matrix;
  219. End;
  220.  
  221. Function TfrmMain.CheckInput: Boolean;
  222. Var
  223.     I, J: Integer;
  224. Begin
  225.     For J := 0 To StrgrMatrix.RowCount - 1 Do
  226.     Begin
  227.         I := 1;
  228.         While (I < StrgrMatrix.RowCount) And (StrgrMatrix.Cells[I, J] <> '0') Do
  229.         Begin
  230.             If (StrgrMatrix.Cells[I, J] = '') Or (StrToInt(StrgrMatrix.Cells[I, J]) < 0) Or (StrToInt(StrgrMatrix.Cells[I, J]) > StrgrMatrix.RowCount)
  231.                 Or (StrToInt(StrgrMatrix.Cells[I, J]) = J + 1) Then
  232.             Begin
  233.                 CheckInput := False;
  234.                 Break;
  235.             End
  236.             Else
  237.                 CheckInput := True;
  238.             Inc(I);
  239.         End;
  240.     End;
  241. End;
  242.  
  243. Function TfrmMain.GetMatrix(): Boolean;
  244. Var
  245.     I, J: Integer;
  246. Begin
  247.     SetLength(IntendencyMatrix, StrgrMatrix.RowCount, StrgrMatrix.RowCount);
  248.     GetMatrix := True;
  249.     If CheckInput() Then
  250.         For I := 1 To StrgrMatrix.ColCount - 1 Do
  251.             For J := 0 To StrgrMatrix.RowCount - 1 Do
  252.                 IntendencyMatrix[J, I - 1] := StrToInt(StrgrMatrix.Cells[I, J])
  253.     Else
  254.     Begin
  255.         Application.MessageBox('Списки заданы неверно! Проверьте ввод!', 'Ошибка', MB_ICONERROR);
  256.         GetMatrix := False;
  257.     End;
  258. End;
  259.  
  260. Procedure TfrmMain.ConvertMatrix();
  261. Var
  262.     I, J: Integer;
  263. Begin
  264.     SetLength(AdjacencyMatrix, Length(IntendencyMatrix), Length(IntendencyMatrix[0]));
  265.     For I := Low(IntendencyMatrix) To High(IntendencyMatrix) Do
  266.     Begin
  267.         J := 0;
  268.         While (J < High(IntendencyMatrix)) Do
  269.         Begin
  270.             AdjacencyMatrix[I, J] := 0;
  271.             Inc(J);
  272.         End;
  273.         J := 0;
  274.         While (J < High(IntendencyMatrix)) And (IntendencyMatrix[I, J] <> 0) Do
  275.         Begin
  276.             AdjacencyMatrix[I, IntendencyMatrix[I, J] - 1] := 1;
  277.             Inc(J);
  278.         End;
  279.     End;
  280. End;
  281.  
  282. { форма }
  283.  
  284. Procedure TfrmMain.FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
  285. Begin
  286.     If Application.MessageBox(PChar('Вы уверены, что хотите выйти?'), PChar('Выход'), MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON1 + MB_TASKMODAL)
  287.         = IDYES Then
  288.         CanClose := True
  289.     Else
  290.         CanClose := False;
  291. End;
  292.  
  293. Procedure TLabeledEdit.WMPaste(Var Msg: TMessage);
  294. Const
  295.     MIN_VALUE = 2;
  296.     MAX_VALUE = 10;
  297. Begin
  298.     If Clipboard.HasFormat(CF_TEXT) Then
  299.     Begin
  300.         Try
  301.             If (StrToInt(Clipboard.AsText) < MIN_VALUE) Or (StrToInt(Clipboard.AsText) > MAX_VALUE) Then
  302.             Begin
  303.                 Application.MessageBox(Pchar('В буфере обмена содержится неподходящее значение!'), 'Ошибка', MB_ICONWARNING);
  304.                 Exit;
  305.             End;
  306.         Except
  307.             Application.MessageBox(Pchar('При чтении из буфера произошла ошибка!'), 'Ошибка', MB_ICONWARNING);
  308.             Exit;
  309.         End;
  310.     End
  311.     Else
  312.     Begin
  313.         Application.MessageBox(Pchar('В буфере обмена содержатся некорректные данные!'), 'Ошибка', MB_ICONWARNING);
  314.         Exit;
  315.     End;
  316.     Inherited;
  317. End;
  318.  
  319. Function NewEditProc(Window: HWND; UMsg: UINT; WindowParametr: WPARAM; LParam: LPARAM): Integer; Stdcall;
  320. Const
  321.     MIN_VALUE = 0;
  322. Var
  323.     Col, Row: Integer;
  324. Begin
  325.     Col := FrmMain.StrgrMatrix.Col;
  326.     Row := FrmMain.StrgrMatrix.Row;
  327.  
  328.     If UMsg = WM_PASTE Then
  329.     Begin
  330.         Try
  331.             If (StrToInt(Clipboard.AsText) < MIN_VALUE) Then
  332.             Begin
  333.                 Application.MessageBox(Pchar('В буфере обмена содержится неподходящее значение!'), 'Ошибка', MB_ICONWARNING);
  334.                 Exit;
  335.             End
  336.             Else
  337.             Begin
  338.                 FrmMain.StrgrMatrix.Cells[Col, Row] := Clipboard.AsText;
  339.                 Exit;
  340.             End;
  341.         Except
  342.             Application.MessageBox(Pchar('В буфере обмена находятся неподходящие данные!'), 'Ошибка', MB_ICONWARNING);
  343.             Exit;
  344.         End;
  345.     End
  346.     Else
  347.         Result := CallWindowProc(Pointer(GetWindowLong(Window, GWL_USERDATA)), Window, UMsg, WindowParametr, LParam);
  348. End;
  349.  
  350. { обработка нажатий на splitview }
  351.  
  352. Procedure TfrmMain.SdbtMenuClick(Sender: TObject);
  353. Begin
  354.     SplvMenu.Opened := Not SplvMenu.Opened;
  355. End;
  356.  
  357. Procedure TfrmMain.SdbtOpenFromFileClick(Sender: TObject);
  358. Var
  359.     SizeFromFile: Single;
  360.     IsCorrect: Boolean;
  361.     Size, I, J: Integer;
  362. Begin
  363.     If OpdOpenFromFileDialog.Execute() Then
  364.         If IsFileCorrect(OpdOpenFromFileDialog.FileName) Then
  365.         Begin
  366.             GetSizeFromFile(OpdOpenFromFileDialog.FileName, SizeFromFile, IsCorrect);
  367.             Size := Round(SizeFromFile);
  368.  
  369.             SetLength(IntendencyMatrix, Size, Size);
  370.             SetLength(AdjacencyMatrix, Size, Size);
  371.             IntendencyMatrix := GetMatrixFromFile(OpdOpenFromFileDialog.FileName, Size, IntendencyMatrix, IsCorrect);
  372.  
  373.             If (IsCorrect) Then
  374.             Begin
  375.                 LbeNodesRequirement.Text := IntToStr(Size);
  376.                 For I := Low(IntendencyMatrix) To High(IntendencyMatrix) Do
  377.                     For J := Low(IntendencyMatrix[0]) To High(IntendencyMatrix[0]) Do
  378.                         StrgrMatrix.Cells[J + 1, I] := IntToStr(FrmMain.IntendencyMatrix[I, J]);
  379.             End
  380.             Else
  381.                 Application.MessageBox('Данные в файле некорректны, попробуйте ещё раз.', 'Ошибка!', MB_ICONERROR);
  382.         End
  383.         Else
  384.             Application.MessageBox('Данные в файле некорректны, попробуйте ещё раз.', 'Ошибка!', MB_ICONERROR);
  385. End;
  386.  
  387. Procedure TfrmMain.SdbtSaveToFileClick(Sender: TObject);
  388. Var
  389.     OutputFile: TextFile;
  390.     I, J: Integer;
  391. Begin
  392.     If SvdSaveToFileDialog.Execute() And FileExists(SvdSaveToFileDialog.FileName) Then
  393.     Begin
  394.         AssignFile(OutputFile, SvdSaveToFileDialog.FileName);
  395.  
  396.         Try
  397.             Try
  398.                 Rewrite(OutputFile);
  399.  
  400.                 Writeln(OutputFile, 'Входные данные ');
  401.                 Writeln(OutputFile, 'Кол-во вершин: ', Length(AdjacencyMatrix));
  402.                 Writeln(OutputFile, 'Списки: ');
  403.                 For I := Low(IntendencyMatrix) To High(IntendencyMatrix) Do
  404.                 Begin
  405.                     Write(OutputFile, I + 1, ': ');
  406.                     For J := Low(IntendencyMatrix[0]) To High(IntendencyMatrix[0]) Do
  407.                         Write(OutputFile, IntendencyMatrix[I, J], '    ');
  408.                     Write(OutputFile, #13#10);
  409.                 End;
  410.  
  411.                 Write(OutputFile, 'Матрица смежности: ' + #13#10);
  412.                 Write(OutputFile, '    ');
  413.                 For I := Low(AdjacencyMatrix) To High(AdjacencyMatrix) Do
  414.                     Write(OutputFile, I + 1, '    ');
  415.                 Write(OutputFile, #13#10);
  416.                 For I := Low(AdjacencyMatrix) To High(AdjacencyMatrix) Do
  417.                 Begin
  418.                     Write(OutputFile, I + 1, '    ');
  419.                     For J := Low(AdjacencyMatrix) To High(AdjacencyMatrix) Do
  420.                         Write(OutputFile, AdjacencyMatrix[I, J], '    ');
  421.                     Write(OutputFile, #13#10);
  422.                 End;
  423.  
  424.                 Application.MessageBox('Данные успешно записаны в файл!', 'Сохранение', MB_ICONINFORMATION);
  425.             Finally
  426.                 CloseFile(OutputFile);
  427.             End;
  428.         Except
  429.             Application.MessageBox('Отказано в доступе! Измените параметры файла! ', 'Ошибка!', MB_ICONERROR);
  430.         End;
  431.     End
  432.     Else
  433.         Application.MessageBox('Введено некорректное имя файла или закрыто окно сохранения!', 'Ошибка!', MB_ICONERROR);
  434. End;
  435.  
  436. Procedure TfrmMain.SdbtStartClick(Sender: TObject);
  437. Begin
  438.     BtGetMatrixClick(Sender);
  439. End;
  440.  
  441. Procedure TfrmMain.SdbtAboutDeveloperClick(Sender: TObject);
  442. Const
  443.     FIRST_MESSAGE = 'Ф.И.О.: Карась А.С. a.k.a Clownfish' + #13#10;
  444.     SECOND_MESSAGE = 'Группа: 251004' + #13#10;
  445.     THIRD_MESSAGE = 'Контакты: предварительная запись вживую по адресу' + #13#10;
  446.     FOURTH_MESSAGE = 'г.Гродно, ул.Мостовая, д.31';
  447. Begin
  448.     Application.MessageBox(FIRST_MESSAGE + SECOND_MESSAGE + THIRD_MESSAGE + FOURTH_MESSAGE, 'О разработчике');
  449. End;
  450.  
  451. Procedure TfrmMain.SdbtHelpClick(Sender: TObject);
  452. Const
  453.     FIRST_MESSAGE = '- Вводимыми значениями могут являться только целые числа!' + #13#10;
  454.     SECOND_MESSAGE = '- Диапазон ввода количества вершин: 2...10' + #13#10;
  455.     THIRD_MESSAGE = '- Для ввода из файла используйте вкладку ''Файл'' - ''Открыть''.' + #13#10;
  456.     FOURTH_MESSAGE = '- Для сохранения в файл используйте вкладку ''Файл'' - ''Сохранить''.' + #13#10;
  457.     FIFTH_MESSAGE = '- Для удобного использования программы представлен набор кнопок на левой панели.';
  458. Begin
  459.     Application.MessageBox(FIRST_MESSAGE + SECOND_MESSAGE + THIRD_MESSAGE + FOURTH_MESSAGE + FIFTH_MESSAGE, 'Справка');
  460. End;
  461.  
  462. Procedure TfrmMain.SdbtExitClick(Sender: TObject);
  463. Begin
  464.     Close;
  465. End;
  466.  
  467. { компоненты формы }
  468.  
  469. Procedure TfrmMain.LbeNodesRequirementChange(Sender: TObject);
  470. Const
  471.     MIN_VALUE = 2;
  472.     MAX_VALUE = 10;
  473. Var
  474.     I: Integer;
  475. Begin
  476.     If (LbeNodesRequirement.Text <> '') And Not((StrToInt(LbeNodesRequirement.Text) < MIN_VALUE) Or
  477.         (StrToInt(LbeNodesRequirement.Text) > MAX_VALUE)) Then
  478.     Begin
  479.         StrgrMatrix.ColCount := StrToInt(LbeNodesRequirement.Text) + 1;
  480.         StrgrMatrix.RowCount := StrToInt(LbeNodesRequirement.Text);
  481.         StrgrMatrix.Width := (StrgrMatrix.DefaultColWidth + 2) * StrgrMatrix.ColCount;
  482.         If StrgrMatrix.Width > StrgrMatrix.Constraints.MaxWidth Then
  483.             StrgrMatrix.Width := StrgrMatrix.Constraints.MaxWidth;
  484.         StrgrMatrix.Height := (StrgrMatrix.DefaultRowHeight + 2) * StrgrMatrix.RowCount;
  485.         If StrgrMatrix.Height > StrgrMatrix.Constraints.MaxHeight Then
  486.             StrgrMatrix.Height := StrgrMatrix.Constraints.MaxHeight;
  487.         For I := 0 To StrgrMatrix.RowCount - 1 Do
  488.             StrgrMatrix.Cells[0, I] := IntToStr(I + 1) + ':';
  489.         LbMatrixRequirement.Visible := True;
  490.         StrgrMatrix.Visible := True;
  491.         BtGetMatrix.Visible := True;
  492.         SdbtStart.Enabled := True;
  493.     End
  494.     Else
  495.     Begin
  496.         LbMatrixRequirement.Visible := False;
  497.         StrgrMatrix.Visible := False;
  498.         BtGetMatrix.Visible := False;
  499.         SdbtStart.Enabled := False;
  500.     End;
  501. End;
  502.  
  503. Procedure TfrmMain.BtGetMatrixClick(Sender: TObject);
  504. Begin
  505.     If GetMatrix() Then
  506.     Begin
  507.         ConvertMatrix();
  508.         FrmMatrix := TfrmMatrix.Create(Self);
  509.         FrmMatrix.StrgrMatrix.RowCount := StrgrMatrix.RowCount + 1;
  510.         FrmMatrix.StrgrMatrix.ColCount := StrgrMatrix.ColCount;
  511.         SdbtSaveToFile.Enabled := True;
  512.         FrmMatrix.Show;
  513.         FrmMain.Hide;
  514.     End;
  515. End;
  516.  
  517. End.
  518.  
  519. Unit UnitData;
  520.  
  521. Interface
  522.  
  523. Uses
  524.     System.SysUtils,
  525.     System.Classes,
  526.     Vcl.BaseImageCollection,
  527.     Vcl.ImageCollection;
  528.  
  529. Type
  530.     TdtmdPictures = Class(TDataModule)
  531.         ImcForButtons: TImageCollection;
  532.     End;
  533.  
  534. Var
  535.     DtmdPictures: TdtmdPictures;
  536.  
  537. Implementation
  538.  
  539. {%CLASSGROUP 'Vcl.Controls.TControl'}
  540. {$R *.dfm}
  541.  
  542. End.
  543.  
  544. Unit UnitVCLLoadingScreen;
  545.  
  546. Interface
  547.  
  548. Uses
  549.     Winapi.Windows,
  550.     Winapi.Messages,
  551.     System.SysUtils,
  552.     System.Variants,
  553.     System.Classes,
  554.     Vcl.Graphics,
  555.     Vcl.Controls,
  556.     Vcl.Forms,
  557.     Vcl.Dialogs,
  558.     Vcl.Imaging.Pngimage,
  559.     Vcl.ExtCtrls;
  560.  
  561. Type
  562.     TfrmLoadingScreen = Class(TForm)
  563.         PBack: TPanel;
  564.         ImLogo: TImage;
  565.         TmrAlphaBlendChanging: TTimer;
  566.         TmrEndLoadingScreen: TTimer;
  567.         Procedure FormCreate(Sender: TObject);
  568.         Procedure TmrAlphaBlendChangingTimer(Sender: TObject);
  569.         Procedure TmrEndLoadingScreenTimer(Sender: TObject);
  570.     End;
  571.  
  572. Var
  573.     FrmLoadingScreen: TfrmLoadingScreen;
  574.  
  575. Implementation
  576.  
  577. {$R *.dfm}
  578.  
  579. Procedure TfrmLoadingScreen.FormCreate(Sender: TObject);
  580. Var
  581.     HRgn: Cardinal;
  582. Begin
  583.     HRgn := CreateEllipticRgn(0, 0, 400, 400);
  584.     SetWindowRgn(Handle, HRgn, False);
  585.  
  586.     TmrEndLoadingScreen.Enabled := True;
  587.     TmrAlphaBlendChanging.Enabled := True;
  588. End;
  589.  
  590. Procedure TfrmLoadingScreen.TmrAlphaBlendChangingTimer(Sender: TObject);
  591. Begin
  592.     If FrmLoadingScreen.AlphaBlendValue > 253 Then
  593.         TmrAlphaBlendChanging.Enabled := False
  594.     Else
  595.         FrmLoadingScreen.AlphaBlendValue := FrmLoadingScreen.AlphaBlendValue + 2;
  596. End;
  597.  
  598. Procedure TfrmLoadingScreen.TmrEndLoadingScreenTimer(Sender: TObject);
  599. Begin
  600.     TmrEndLoadingScreen.Enabled := False;
  601. End;
  602.  
  603. End.
  604.  
  605.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement