Advertisement
Matixs

Untitled

May 31st, 2023
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.64 KB | None | 0 0
  1. unit PartyEdit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  7.   Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
  8.  
  9. type
  10.   TPartyEditFrame = class(TFrame)
  11.     LBPK: TLabel;
  12.     GroupBox1: TGroupBox;
  13.     Label1: TLabel;
  14.     Label5: TLabel;
  15.     EditNameParty: TEdit;
  16.     BtnPrev: TButton;
  17.     BtnNext: TButton;
  18.     BtnEdit: TButton;
  19.     ComboBox1: TComboBox;
  20.     procedure BtnPrevClick(Sender: TObject);
  21.     procedure BtnNextClick(Sender: TObject);
  22.     procedure BtnEditClick(Sender: TObject);
  23.     procedure FrameEnter(Sender: TObject);
  24.   private
  25.     { Private declarations }
  26.   public
  27.     { Public declarations }
  28.     Procedure FillComponents();
  29.   end;
  30.  
  31. implementation
  32.  
  33. {$R *.dfm}
  34.  
  35. uses Party, BidirectionalParty, Main;
  36.  
  37. var
  38.     CurrentPartyIndex : Integer;
  39.  
  40. Procedure FillCombobox(CB : TComboBox);
  41. begin
  42.     CB.Clear;
  43.     CB.Items.Add('Консерватизм');
  44.     CB.Items.Add('Либерализм');
  45.     CB.Items.Add('Социал-демократия');
  46.     CB.Items.Add('Либертарианство');
  47.     CB.Items.Add('Национализм');
  48.     CB.Items.Add('Экологическое движение');
  49.     CB.Items.Add('Консервативный либерализм');
  50.     CB.Items.Add('Социальный консерватизм');
  51.     CB.Items.Add('Социализм');
  52.     CB.Items.Add('Коммунизм');
  53. end;
  54.  
  55. Function GetParty() : TParty;
  56. var
  57.     TempHead : PPartyList;
  58.     CurrentPartyNode : TParty;
  59.     Counter : Integer;
  60. begin
  61.     TempHead := Main.PartyList.Head;
  62.     CurrentPartyNode := NIL;
  63.  
  64.     Counter := 0;
  65.  
  66.     While TempHead <> NIL Do
  67.     Begin
  68.         if Counter = CurrentPartyIndex then
  69.         begin
  70.             CurrentPartyNode := TempHead.Party;
  71.             break
  72.         end
  73.         else
  74.             Inc(Counter);
  75.         TempHead := TempHead^.Next;
  76.     End;
  77.  
  78.     GetParty := CurrentPartyNode;
  79. end;
  80.  
  81. Procedure TPartyEditFrame.FillComponents();
  82. var
  83.     Party : TParty;
  84.     PartyName : String;
  85. begin
  86.     Party := GetParty;
  87.     LBPK.Caption := Party.IdParty.ToString;
  88.     EditNameParty.Text := Party.Name;
  89.     ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(Party.PoliticalPosition);
  90. end;
  91.  
  92. procedure TPartyEditFrame.FrameEnter(Sender: TObject);
  93. begin
  94.     CurrentPartyIndex := 0;
  95.     FillComponents;
  96.     FillCombobox(ComboBox1);
  97.     ComboBox1.ItemIndex := 0;
  98. end;
  99.  
  100. procedure TPartyEditFrame.BtnEditClick(Sender: TObject);
  101. var
  102.     NewParty : TParty;
  103. begin
  104.     if EditNameParty.Text <> '' then
  105.     begin
  106.         try
  107.             NewParty := TParty.Create(StrToInt(LBPK.Caption), EditNameParty.Text, Combobox1.Text);
  108.             Main.PartyList.EditParty(NewParty);
  109.             Application.MessageBox('Партия успешно отредактирована!','Редактирование партии', MB_OK + MB_ICONINFORMATION);
  110.         Except
  111.             On E : Exception do
  112.                 Application.MessageBox(PChar(E.Message),'Ошибка редактирования партии', MB_OK + MB_ICONSTOP);
  113.         end;
  114.     end
  115.     else
  116.         Application.MessageBox('Заполните все поля!','Редактирование партии',MB_OK+MB_ICONWARNING);
  117. end;
  118.  
  119. procedure TPartyEditFrame.BtnNextClick(Sender: TObject);
  120. begin
  121.     if CurrentPartyIndex <> Main.PartyList.Count - 1 then
  122.     begin
  123.         Inc(CurrentPartyIndex);
  124.         FillComponents;
  125.     end;
  126. end;
  127.  
  128. procedure TPartyEditFrame.BtnPrevClick(Sender: TObject);
  129. begin
  130.     if CurrentPartyIndex <> 0 then
  131.     begin
  132.         Dec(CurrentPartyIndex);
  133.         FillComponents;
  134.     end;
  135. end;
  136.  
  137. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement