procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.text := (sender as TButton).caption;
end;
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ:
sender.caption
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎ ΡΠΎΠΌ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ Β«senderΒ» ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ caption, ΠΈΠ»ΠΈ Π½Π΅Ρ.
CheckBox
ΠΠ°ΡΡΠΈΠ² ΠΈΠ· CheckBox β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ I
Delphi 1
ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Checkbox Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TGroupBox. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΠΎΠ½Π° (ΠΈΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ) Π½Π°Π·Π½Π°ΡΡΡΠ΅ ΠΎΠ±ΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Click Π΄Π»Ρ Π²ΡΠ΅Ρ checkbox'Π². Π§ΡΠΎΠ±Ρ Π² ΡΠΈΠΊΠ»Π΅ ΠΎΠ±ΠΎΠΉΡΠΈ Π²ΡΠ΅ Β«Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅Β» TCheckBox'Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ-ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ Controls TGroupBox (ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈΡ ΠΊ ΡΠΈΠΏΡ TCheckBox). ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊ:
for i := 0 to GroupBox1.ControlCount -1 do
if (GroupBox1.Controls[i] as TCheckBox).checked then
{ΡΡΠΎ-ΡΠΎ ΡΠ°ΠΌ Π΅ΡΠ΅};
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠΌΡ sender ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
procedure TMain1.CheckBoxClick(Sender: TObject);
var whodidit: string[63];
begin
whodidit := TComponent(sender).name;
end;
ΠΠΎΡΠ»Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΈ Π΄ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ². Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Tag. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ checkbox.tag ΡΠ²ΠΎΠΉ ID Π½ΠΎΠΌΠ΅Ρ. Π Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, ΡΠΈΡΠ°Ρ ID, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ sender.
ΠΠ°ΡΡΠΈΠ² ΠΈΠ· CheckBox β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ II
Delphi 1
var
CheckArray: array[1..x] of TCheckBox;
i:integer;
begin
for i:=1 to x do begin
CheckArray[i]:=TCheckBox.Create(Form1);
{Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°}
with CheckBox[i] do begin
Left:=i*20;
Width:=15;
Π΄ΡΡΠ³ΠΎΠ΅β¦
end;
end;
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ:
Check[i].OnClick:=xyz.
ΠΠΎΠΊΠ° Ρ ΠΈ ΡΠ°ΠΌ Π½Π΅ Π·Π½Π°Ρ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΏΠΈΡΡ. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π°, Π½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ?
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° checkbox'ΠΎΠ² Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΡ. Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΠΈΡ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΈ Π΄Π°ΠΉΡΠ΅ ΠΈΠΌ Β«Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠ΅Β» ΠΈΠΌΠ΅Π½Π° (Check1, Check2 ΠΈ Ρ.Π΄.). ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Ρ Π½ΠΈΡ ΠΎΠ±ΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
procedure TForm.Check1Click(Sender : TObject);
var i : Integer;
begin
for i := 1 to 10 { ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ 10 checkbox'ΠΎΠ² } do
With TCheckBox(FindComponent('Check'+IntToStr(i))) do begin
{ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ΄ }
end;
end;
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ CheckBox'ΠΎΠ²
Delphi 3
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Ρ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, Π±Π΅Π· ΡΡΡΠ΄Π° ΡΠ·Π½Π°Π΅ΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ checkbox'ΠΎΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π°ΡΠ° ΡΠΎΡΠΌΠ°. Π Π²ΠΎΡ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΠ΅Π½ΠΎβ¦ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Delphi Run Time Type Information (RTTI). ΠΠ»Ρ Π½Π°ΡΠ΅ΠΉ ΠΈΡΠΏΡΡΡΠ΅ΠΌΠΎΠΉ ΡΠΎΡΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
var i : Integer
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TCheckBox then
(Components[i] as TCheckBox).Checked then begin
... ΡΡΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π²Π°Ρ ΠΊΠΎΠ΄ ...
end;
end;
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Delphi Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½:
if Components[i] = CheckBox5 then Π§ΡΠΎΡΠΎΠ΄Π΅Π»Π°Π΅ΠΌ;
Π’Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² Delphi ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠ΅ (Published) ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ 'Tag', Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°Π²Π°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΈ Π·Π°ΡΠ΅ΠΌ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
var i : Integer
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TCheckBox then
with (Components[i] as TCheckBox) do
Case Tag of
1 : if Checked then DoSomethingOnBox1;
2 : if Checked then DoSomethingOnBox2;
β¦ Π΄ΡΡΠ³ΠΎΠ΅ β¦
end;
end;
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠΏΡΠ°Π²ΠΊΠ΅ Delphi Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ Β«ComponentCountΒ».
BitBtn
ΠΠ½ΠΎΠΏΠΊΠ° Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΡΠΎΡΠΊΠ°ΠΌΠΈ ΡΠ΅ΠΊΡΡΠ° III
ΠΠΎΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎΠ·Π΄Π°ΡΡΠ΅Π³ΠΎ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π²Π΅ ΡΡΡΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°.
program TwolnBtn;
uses Forms,TwolnBtu in 'TWOLNBTU.PAS' {Form1};
{$R *.RES}
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Π€Π°ΠΉΠ» TWOLNBTU.TXT β TWOLNBTU.DFMobject Form1: TForm1
Left = 202
Top = 98
Width = 320
Height = 176
Caption = 'Form1'
Font.Color = clRed
Font.Height = -12
Font.Name = 'Arial'
Font.Style = [fsBold]
PixelsPerInch = 96
OnActivate = ChgSpeedButton
OnCreate = ChgBitBtn
TextHeight = 15
object SpeedButton1: TSpeedButton
Left = 144
Top = 24
Width = 65
Height = 45
Caption = 'ΠΡΠΎ Π΄Π²ΡΡΡΡΠΎΡΠ½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ'
OnClick = ChgSpeedButton
end
object
BitBtn1: TBitBtn
Left = 32
Top = 24
Width = 69
Height = 37
Caption = 'ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ'
TabOrder = 0
OnClick = BitBtn1Click
end
end
Π€Π°ΠΉΠ» TWOLNBTU.PASunit Twolnbtu;
interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type TForm1 = class(TForm)
BitBtn1: TBitBtn;
SpeedButton1: TSpeedButton;
procedure ChgBitBtn(Sender: TObject);
procedure ChgSpeedButton(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ChgBitBtn(Sender: TObject);
VAR
R : TRect;
N : Integer;
Buff : ARRAY[0..255] OF Char;
BEGIN
WITH BitBtn1 DO BEGIN
Glyph.Canvas.Font := Self.Font;
Glyph.Width := Width-6;
Glyph.Height := Height-6;
R := Bounds(0,0,Glyph.Width,0);
StrPCopy(Buff, Caption);
Caption := '';
DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R, DT_CENTER OR DT_WORDBREAK OR DT_CALCRECT);
OffsetRect(R, (Glyph.Width-R.Right) DIV 2, (Glyph.Height - R.Bottom) DIV 2);
DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R, DT_CENTER OR DT_WORDBREAK);
END;
END;
procedure TForm1.ChgSpeedButton(Sender: TObject);
VAR
R : TRect;
N : Integer;
Buff : ARRAY[0..255] OF Char;
BEGIN
WITH SpeedButton1 DO BEGIN
Glyph.Canvas.Font := Self.Font;
Glyph.Width := Width-6;
Glyph.Height := Height-6;
R := Bounds(0,0,Glyph.Width,0);
StrPCopy(Buff, Caption);
Caption := '';
DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R,DT_CENTER OR DT_WORDBREAK OR DT_CALCRECT);
OffsetRect(R, (Glyph.Width-R.Right) DIV 2, (Glyph.Height - R.Bottom) DIV 2);
DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R,DT_CENTER OR DT_WORDBREAK);
END;
END;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Close;
end;
end.
-Dennis Passmore
ComboBox
Π₯ΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ» (combo). ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ?
Nomadic ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ:
ΠΠΎΠ³Π΄Π°-ΡΠΎ ΠΏΠΎΡΡΠ°ΡΠΈΠ» Π½Π΅ΠΌΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ°Π·Π±ΠΎΡ, ΠΊΠ°ΠΊ ΠΆΠ΅ Π²ΡΠ΅ ΡΠ°ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΡΠΎΠΏΠ΄Π°ΡΠ½-ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. Π ΠΈΡΠΎΠ³Π΅ ΠΌΠ½ΠΎΠΉ Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Ρ ΡΠ΅Π±Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Demo Π΄Π»Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ ΡΡ. ΠΠ½ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ (Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° β ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ, Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ β ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡ), Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΠΎΠ½ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠ±Π»ΠΈΠΊΡΡ Π·Π΄Π΅ΡΡ. ΠΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ° - ΡΠ΅Π°Π»ΠΈΠ·ΡΠΉ Π²ΠΌΠ΅ΡΡΠΎ Π»ΠΈΡΡΠ±ΠΎΠΊΡΠ° Π²ΡΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°ΡΡ ΡΠ΅Π±Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΡΠ΅Π²Π°.
unit edit1;