ΠΡΠΎΡΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Exam2 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π½Π΅ ΡΡΠ΅Π±ΡΡΡ.
ΠΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Exam2 Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° case ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ InitTask, ΡΠ²ΡΠ·Π°Π² Π΅Π³ΠΎ Ρ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ 17 ΠΈ 18:
procedure InitTask(num: integer);
begin
case num of
1..2: UseTask('ExamBegin', 70 + num);
3..4: Exam1(num - 2);
5..16: UseTask('ExamTaskC', 20 + num);
17..18: Exam2(num - 16);
end;
end;
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΡΡ ΠΎΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ CreateGroup, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΏΠΎΠ»ΠΎΠΆΠΈΠ² Π΅Π³ΠΎ ΡΠ°Π²Π½ΡΠΌ 18.
ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ [F9] Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ Π·Π°Π΄Π°ΡΠ½ΠΈΠΊΠ° Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ (Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π²ΠΈΠ΄ ΠΎΠΊΠ½Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»Π° Ρ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠΎΠΉ Π·Π°Π΄Π°Π½ΠΈΡ):
ΠΡΠ»ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠΏΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ» ?" Π½Π° ΡΠΈΠΌΠ²ΠΎΠ» "# " Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Task ΡΠ΅ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ [F9] ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ html-ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π³ΡΡΠΏΠΏΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅, Π½ΠΎ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ Π·Π°Π΄Π°Π½ΠΈΡ:
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡ CreateTask Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏ (ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈΠ· Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏ), Π½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ ΡΡΠΈΡ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏ: ExamDemo3 ΠΈ ExamDemo4 -- Π² ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΠ΅ "ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²", Π° ExamDemo17 ΠΈ ExamDemo18 -- Π² ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΠ΅ "ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ»ΠΎΠΆΠ½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ".
Π£ΡΠΎΠΊΠΈ PascalABC .NET
ABCObjects: Π±ΡΡΡΡΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ABCObjects, ΡΠ²Π»ΡΡΡΡΡ RectangleABC, SquareABC, EllipseABC, CircleABC, TextABC, RegularPolygonABC, StarABC, PictureABC, MultiPictureABC, BoardABC ΠΈ ContainerABC.
Π’ΠΈΠΏΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡΡ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ΄Π°ΡΡΠΈΠ΅ΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ² Width ΠΈ Height ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Color - ΡΠ²Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Ρ.Π΄. ΠΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° ToFront Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½, Π° Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Intersect(g) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ, ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ Π»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ g.
ΠΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° ObjectABC, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π° ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΡ ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
uses ABCObjects,GraphABC;
var
r: RectangleABC;
c: CircleABC;
begin
r := new RectangleABC(70,50,200,100,clMoneyGreen);
c := new CircleABC(120,80,110,clBlue);
end.
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎΠΌΠ΅Π½ΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ MoveOn Π΄Π»Ρ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ, Π΄ΠΎΠΏΠΈΡΠ°Π² Π² ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
r.Width := 150;
c.Color := clRed;
c.MoveOn(30,30);
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
c.Number := 8;
r.Text := 'Hello';
r.ToFront;
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
ABCObjects: ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΠ»Π°ΡΡ ContainerABC ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ ObjectABC, Π½ΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
procedure Add(g: ObjectABC);
property Count: integer; // ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
property Objects[i: integer]: ObjectABC; // i-ΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
ΠΡΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ContainerABC ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² Π½Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ContainerABC Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Owner ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΡΠΌ ΡΡΠΎΠΌΡ ContainerABC. ΠΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Owner ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ Π½ΠΎΠ²ΠΎΠΌΡ Π²Π»Π°Π΄Π΅Π»ΡΡΡ. ΠΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Owner ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ nil ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΎΠΊΠ½Π΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
uses ABCObjects,GraphABC;
var
c1,c2: ContainerABC;
r: CircleABC;
begin
SetWindowSize(300,300);
c1 := new ContainerABC(50,30);
c1.Add(new RectangleABC(0,0,200,100,clGreen));
r := new CircleABC(15,15,70,clYellow);
end.
ΠΠΎΡΠ»Π΅ Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΊΡΠ°Π½ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ c1 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π΅Π»Π΅Π½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, Π° ΠΎΠ±ΡΠ΅ΠΊΡ r Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° (r.Owner=nil). ΠΠ΅ΡΡΡΠ΄Π½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ObjectsCount=2 (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ ΠΊΡΡΠ³), Π° c1.Count=1.
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΡΡΠ³ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π΄ΠΎΠΏΠΈΡΠ°Π² Π² ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΡΠΎΡΠΊΡ
c1.Add(r);
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΊΡΠ°Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΈΠ΄:
ΠΡΡΠ³ r ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (r.Owner=Ρ2), ObjectsCount=1 (ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ), Π° c1.Count=2. ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΡΡΠ³Π° ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°-Π²Π»Π°Π΄Π΅Π»ΡΡΠ° (ΠΎΠ½ΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ°Π²Π½Ρ (15,15), Π½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ³Π»Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° c1).
Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°
r.Owner := c1;
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ c2 ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΠΌ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° Ρ r Π½Π° c2. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΈΡΠ΅ΠΌ Π² ΠΊΠΎΠ½Π΅Ρ ΡΡΡΠΎΠΊΠΈ:
c2 := new ContainerABC(50,160);
c2.Add(new RectangleABC(0,0,200,100,clMoneyGreen));
r.Owner := c2;
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΊΡΠ°Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΈΠ΄:
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΡΡΠ³ r ΠΏΠΎΠΌΠ΅Π½ΡΠ» Π²Π»Π°Π΄Π΅Π»ΡΡΠ°, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ (15,15), Π½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ³Π»Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° c2.
ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠΎΡΠΊΠΈ r.Owner:=c2; Π½Π°ΠΏΠΈΡΠ°ΡΡ r.Owner:=nil; , ΡΠΎ ΠΊΡΡΠ³ r ΠΏΠΎΡΠ΅ΡΡΠ΅Ρ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΠΈ ΡΠ½ΠΎΠ²Π° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ³Π»Π° ΡΠΊΡΠ°Π½Π°:
ΠΡΠΈΠΌΠ΅ΡΡΠΡΠ°ΡΠΈΠΊΠ° ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ
ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ Π±Π΅Π· ΠΌΠ΅ΡΡΠ°Π½ΠΈΡ
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡ LockDrawing ΠΈ Redraw Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π±Π΅Π· ΠΌΠ΅ΡΡΠ°Π½ΠΈΡ:
uses GraphABC;
begin
LockDrawing;
for var i:=1 to 500 do
begin
Window.Clear;
Brush.Color := clGreen;
Ellipse(i,100,i+100,200);
Redraw;
Sleep(1);
end;
end.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: ΠΎΡΠΊΠ»ΡΡΠΈΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π²ΡΠ·Π²Π°Π² LockDrawing (ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²Π½Π΅ΡΠΊΡΠ°Π½Π½ΠΎΠΌ Π±ΡΡΠ΅ΡΠ΅), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π±ΡΠ΄Π΅ΠΌ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π· ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ°Π΄Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π΅Π³ΠΎ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° ΡΠΊΡΠ°Π½, Π²ΡΠ·ΡΠ²Π°Ρ Redraw. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Redraw ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΊΠΎΡΠΎΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° Π²Π½Π΅ΡΠΊΡΠ°Π½Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Π½Π° ΡΠΊΡΠ°Π½.
ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ
Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡΡΡΡ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΎΠΊΠ½Π΅
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡΡΡΡ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΎΠΊΠ½Π΅:
uses GraphABC;
procedure MouseDown(x,y,mb: integer);
begin
MoveTo(x,y);
end;
procedure MouseMove(x,y,mb: integer);
begin
if mb=1 then LineTo(x,y);
end;
begin
// ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊ ΡΠΎΠ±ΡΡΠΈΡΠΌ
OnMouseDown := MouseDown;
OnMouseMove := MouseMove
end.
ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ:
uses GraphABC;
procedure KeyDown(Key: integer);
begin
case Key of
VK_Left: Window.Left := Window.Left - 2;
VK_Right: Window.Left := Window.Left + 2;
VK_Up: Window.Top := Window.Top - 2;
VK_Down: Window.Top := Window.Top + 2;
end;
end;
begin
// ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊ ΡΠΎΠ±ΡΡΠΈΡΠΌ
OnKeyDown := KeyDown;
end.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡ 1 ΠΊΠ°ΠΆΠ΄ΡΠ΅ 100 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 3 ΡΠ΅ΠΊΡΠ½Π΄:
uses Timers;
procedure TimerProc;
begin
write(1);
end;
begin
var t := new Timer(100,TimerProc);
t.Start;
Sleep(3000);
end.
ΠΡΠ·ΠΎΠ² Sleep Π·Π΄Π΅ΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½, ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΡΡΠ°Π·Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ, ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π½ΠΈ ΡΠ°Π·Ρ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ.