Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²
ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΠ°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ» ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π² ΡΠ΅Π±Π΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ. ΠΠΎ ΡΠ°ΠΊΠΎΠΌΡ ΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° «ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅», ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ . Π€ΠΠΠ£ ΠΠΠ ΠΠ°ΠΌΡΠ°ΡΡΠΊΠΈΠΉ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π€Π°ΠΊΡΠ»ΡΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΠ°ΡΠ΅Π΄ΡΠ° ΡΠΈΡΡΠ΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π€ΠΠΠ£ ΠΠΠ ΠΠ°ΠΌΡΠ°ΡΡΠΊΠΈΠΉ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π€Π°ΠΊΡΠ»ΡΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΠ°ΡΠ΅Π΄ΡΠ° ΡΠΈΡΡΠ΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΡΡΡΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π’Π΅ΠΌΠ°: Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΠΠ΅ΡΡΠΎΠΏΠ°Π²Π»ΠΎΠ²ΡΠΊ-ΠΠ°ΠΌΡΠ°ΡΡΠΊΠΈΠΉ
Π¦Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ — ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΡΠΎ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΎΡΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ.
ΠΠ°Π΄Π°ΡΠ΅ΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° (Π°Π½Π°Π»ΠΈΠ· ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ) Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° (ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ).
Π Ρ ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°Π²ΡΠΊΠΈ Π² ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π΄Π°ΡΠΈ, Π°Π½Π°Π»ΠΈΠ·Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π²ΡΠ±ΠΎΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
ΠΡΡΡΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΊΡΡΡΡ «ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅» Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΡΡΠ΄Π΅Π½ΡΠΎΠΌ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²ΡΠ΄Π°Π½Π½ΡΠΌ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Π΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ².
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ»Π°ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ «Windows» ΠΈ Π±ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ «Delphi».
Π ΠΊΠ»Π°ΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
1. ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²;
2. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²;
3. ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π΄Π²Π° Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½Π°ΠΊΠ°;
4. ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ°ΡΡΡΡ (ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ) Π΄Π²ΡΡ Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²;
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°: stack ΠΈ TForm1. stack ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΡΠ΅ΠΊΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π½ΡΠΌ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ°ΠΌ. TForm1 — ΠΊΠ»Π°ΡΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Π°ΡΡ stack:
Π₯ΡΠ°Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
top: pNode; | ΠΠ΅ΡΡΠΈΠ½Π° ΡΡΠ΅ΠΊΠ°. | |
num: integer; | Π‘ΡΡΡΡΠΈΠΊ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠ². | |
constructor Create; | ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ | |
destructor Destroy; | ΠΠ΅ΡΡΡΡΠΊΡΠΎΡ | |
function newRect (x, y, w, h: integer): string; | Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. | |
procedure delRect (id: string); | Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
procedure moveSize (id: string; x, y, w, h: integer); | ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
function find (id: string): pNode; | Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΏΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ. | |
ΠΠ»Π°ΡΡ TForm1:
ListBox1: TListBox | Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² | |
Button1: TButton; | ΠΠ½ΠΎΠΏΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
sel2: TLabel; | ΠΠΎΠ»Π΅ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ | |
sel1: TLabel; | ΠΠΎΠ»Π΅ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ | |
Button2: TButton; | ΠΠ½ΠΎΠΏΠΊΠ° Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
Editx: TEdit; | ΠΠΎΠ»Π΅ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ x | |
Edity: TEdit; | ΠΠΎΠ»Π΅ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ y | |
Editw: TEdit; | ΠΠΎΠ»Π΅ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΠΈΡΠΈΠ½Ρ | |
Edith: TEdit; | ΠΠΎΠ»Π΅ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° Π²ΡΡΠΎΡΡ | |
Button3: TButton; | ΠΠ½ΠΎΠΏΠΊΠ° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
Button4: TButton; | ΠΠ½ΠΎΠΏΠΊΠ° Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π² ΡΠ΅Π±Π΅ Π·Π°Π΄Π°Π½Π½ΡΠ΅. | |
Button5: TButton; | ΠΠ½ΠΎΠΏΠΊΠ° Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π° ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΈ. | |
procedure FormCreate (Sender: TObject); | ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠΊΠ½Π° | |
procedure Button1Click (Sender: TObject); | ΠΠ½ΠΎΠΏΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
procedure ListBox1Click (Sender: TObject); | ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
procedure FormPaint (Sender: TObject); | ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ | |
procedure Button3Click (Sender: TObject); | ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
procedure Button2Click (Sender: TObject); | ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° | |
procedure Button4Click (Sender: TObject); | ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π·Π°Π΄Π°Π½Π½ΡΠ΅ | |
function min (a, b: integer): integer; | ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. | |
function max (a, b: integer): integer; | ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. | |
procedure roll (var a, b: integer); | ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ΅Π½ΡΡΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. | |
procedure Button5Click (Sender: TObject); | ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π° ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π΄Π²ΡΡ Π·Π°Π΄Π°Π½Π½ΡΡ | |
s: stack; | Π‘ΡΠ΅ΠΊ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². | |
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π°Π΄ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠΎΠ±Π°Π²ΠΈΡΡ». Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°Π² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈ Π²Π²Π΅Π΄Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ, Π° ΠΏΠΎΡΠΎΠΌ Π½Π°ΠΆΠ°Π² «ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ». Π‘ΠΈΠ½ΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ: ΡΡΠΊΠΎ ΡΠΈΠ½ΠΈΠΌ — ΡΠ΅ΠΊΡΡΠΈΠΉ, ΡΡΠΌΠ½ΠΎ ΡΠΈΠ½ΠΈΠΌ — ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ.
ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΠ°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ» ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π² ΡΠ΅Π±Π΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ. ΠΠΎ ΡΠ°ΠΊΠΎΠΌΡ ΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° «ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅», ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ .
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π¦Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΡΠΎ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΎΡΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Delphi ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π²ΠΌΠ΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π² ΡΠ΅Π±Ρ Π΄Π²Π° Π·Π°Π΄Π°Π½Π½ΡΡ , ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ°ΡΡΡΡ Π΄Π²ΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ .
ΠΠ»ΠΈΠΌΠΎΠ²Π° Π.Π. Delphi 7. ΠΡΠ½ΠΎΠ²Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ. Π‘Π°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ. ΠΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠ΅.- Π.: ΠΠ£ΠΠΠ¦ΠΠΠ ΠΠ, 2006. 480 Ρ.
Π₯ΠΎΠΌΠΎΠ½Π΅Π½ΠΊΠΎ Π.Π. ΠΈ Π΄Ρ. Delphi 7/ ΠΠΎΠ΄ ΠΎΠ±Ρ. Π Π΅Π΄. Π. Π. Π₯ΠΎΠΌΠΎΠ½Π΅Π½ΠΊΠΎ.- Π‘ΠΠ±: ΠΠ₯ΠΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³, 2005. 1216 Ρ.
ΠΠΎΠ±ΡΠΎΠ²ΡΠΊΠΈΠΉ Π‘.Π. Delphi 7. Π£ΡΠ΅Π±Π½ΡΠΉ ΠΊΡΡΡΠ‘ΠΠ±: ΠΠΈΡΠ΅Ρ, 2005. 736 Ρ.
http://khpi-iip.mipk.kharkiv.edu/library/case/leon/gl3/gl3.html
http://khpi-iip.mipk.kharkiv.edu/library/case/leon/gl5/gl5.html
ΠΠ°Π²Π»ΠΎΠ²ΡΠΊΠ°Ρ Π’. Π. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ — Π‘ΠΠ±: ΠΠΈΡΠ΅Ρ, 2006.
ΠΠΎΠ³Π°Π½ Π. Π. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° — «ΠΡΠΊΠΈΠΌΠΎ», 2006.
ΠΠ΅ΡΠ½Π΅Π²ΡΠΊΠΈΠΉ Π.Π‘. ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ²Π°Π½ΠΎΠ²Π° Π. Π‘. ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ — Π, 2003.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
ΠΊΠ»Π°ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class (TForm)
ListBox1: TListBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
sel2: TLabel;
sel1: TLabel;
Button2: TButton;
Editx: TEdit;
Edity: TEdit;
Editw: TEdit;
Edith: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure FormCreate (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure ListBox1Click (Sender: TObject);
procedure FormPaint (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure Button4Click (Sender: TObject);
function min (a, b: integer): integer;
function max (a, b: integer): integer;
procedure roll (var a, b: integer);
procedure Button5Click (Sender: TObject);
private
{ Private declarations }
s: stack;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1. FormCreate (Sender: TObject);
begin
s := stack. Create;
end;
procedure TForm1. Button1Click (Sender: TObject);
begin
ListBox1.Items.Add (s.newRect (300, 100, 100, 100));
Refresh;
end;
procedure TForm1. ListBox1Click (Sender: TObject);
var
selItem: string;
f: pNode;
begin
selItem := ListBox1. Items[ListBox1.ItemIndex];
if selItem <> sel1. Caption then
begin
sel2.Caption := sel1. Caption;
sel1.Caption := selItem;
f := s. find (selItem);
if f <> nil then
begin
EditX.Text := IntToStr (f.x);
EditY.Text := IntToStr (f.y);
EditW.Text := IntToStr (f.w);
EditH.Text := IntToStr (f.h);
end;
end;
Refresh;
end;
procedure TForm1. FormPaint (Sender: TObject);
var
i: integer;
p: pNode;
begin
for i := 0 to ListBox1.Items.Count — 1 do
begin
p := s. find (ListBox1.Items[i]);
if p <> nil then
begin
if p. id = sel1. Caption then Canvas.Pen.Color := clBlue
else if p. id = sel2. Caption then Canvas.Pen.Color := clNavy
else Canvas.Pen.Color := clBlack;
Canvas.Pen.Width := 5;
Canvas.Brush.Style := bsClear;
Canvas.Rectangle (p.x, p. y, p. x + p. w, p. y + p. h);
end;
end;
end;
procedure TForm1. Button3Click (Sender: TObject);
var
f: pNode;
begin
f := s. find (sel1.Caption);
if f <> nil then
begin
f.x := StrToInt (Editx.Text);
f.y := StrToInt (Edity.Text);
f.w := StrToInt (Editw.Text);
f.h := StrToInt (Edith.Text);
Refresh;
end;
end;
procedure TForm1. Button2Click (Sender: TObject);
begin
if sel1. Caption <> '' then s. delRect (sel1.Caption);
ListBox1.Items.Delete (ListBox1.ItemIndex);
Refresh;
end;
procedure TForm1. Button4Click (Sender: TObject);
var
f1, f2: pNode;
x, y, w, h: integer;
begin
f1 := s. find (sel1.Caption);
f2 := s. find (sel2.Caption);
x := min (min (f1.x, f1. x + f1. w), min (f2.x, f2. x + f2. w));
w := max (max (f1.x, f1. x + f1. w), max (f2.x, f2. x + f2. w));
w := w — x;
y := min (min (f1.y, f1. y + f1. h), min (f2.y, f2. y + f2. h));
h := max (max (f1.y, f1. y + f1. h), max (f2.y, f2. y + f2. h));
h := h — y;
ListBox1.Items.Add (s.newRect (x, y, w, h));
Refresh;
end;
function TForm1. min (a, b: integer): integer;
begin
if a < b then min := a else min := b;
end;
function TForm1. max (a, b: integer): integer;
begin
if a > b then max := a else max := b;
end;
procedure TForm1. roll (var a, b: integer);
var
c: integer;
begin
c := a;
a := b;
b := c;
end;
procedure TForm1. Button5Click (Sender: TObject);
var
x1, y1, w1, h1: integer;
x2, y2, w2, h2: integer;
x, y, w, h: integer;
f: pNode;
begin
f := s. find (sel1.Caption);
x1 := f. x;
y1 := f. y;
w1 := x1 + f. w;
if w1 < x1 then roll (w1, x1);
h1 := y1 + f. h;
if h1 < y1 then roll (h1, y1);
f := s. find (sel2.Caption);
x2 := f. x;
y2 := f. y;
w2 := x2 + f. w;
if w2 < x2 then roll (w2, x2);
h2 := y2 + f. h;
if h2 < y2 then roll (h2, y2);
if (((x1 > x2) and (x1 < w2)) or ((w1 > x2) and (w1 < w2)) or
((x2 > x1) and (x2 < w1)) or ((w2 > x1) and (w2 < w1))) and
(((y1 > y2) and (y1 < h2)) or ((h1 > y2) and (h1 < h2)) or
((y2 > y1) and (y2 < h1)) or ((h2 > y1) and (h2 < h1))) then
begin
x := max (x1, x2);
y := max (y1, y2);
w := min (w1, w2);
h := min (h1, h2);
w := w — x;
h := h — y;
ListBox1.Items.Add (s.newRect (x, y, w, h));
Refresh;
end;
end;
end.
unit Unit2;
interface
uses sysutils, classes;
type
pNode = ^Node;
Node = record
id: string;
x, y, w, h: integer;
next: pNode;
end;
stack = class
top: pNode;
num: integer;
public
constructor Create;
destructor Destroy;
function newRect (x, y, w, h: integer): string;
procedure delRect (id: string);
procedure moveSize (id: string; x, y, w, h: integer);
function find (id: string): pNode;
end;
implementation
constructor stack. Create;
begin
top := nil;
num := 0;
end;
destructor stack. Destroy;
var
del: pNode;
begin
while top <> nil do
begin
del := top;
top := top. next;
Dispose (del);
end;
end;
function stack. newRect (x, y, w, h: integer): string;
var
n: pNode;
begin
n := New (pNode);
n.id := IntToStr (num);
Inc (num);
n.x := x;
n.y := y;
n.w := w;
n.h := h;
n.next := top;
top := n;
newRect := n. id;
end;
procedure stack. delRect (id: string);
var
f, d: pNode;
begin
f := top;
if f <> nil then
if f. id = id then
begin
top := top. next;
Dispose (f);
end
else
begin
while f. next <> nil do
begin
if f.next.id = id then
begin
d := f. next;
f.next := d. next;
Dispose (d);
break;
end
end;
end;
end;
procedure stack. moveSize (id: string; x, y, w, h: integer);
var
f: pNode;
begin
f := find (id);
if f <> nil then
begin
f.x := x;
f.y := y;
f.w := w;
f.h := h;
end;
end;
function stack. find (id: string): pNode;
var
f: pNode;
begin
f := top;
while f <> nil do
begin
if f. id = id then break;
f := f. next;
end;
find := f;
end;
end.
ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
constructor stack. Create;
destructor stack. Destroy;
function stack. newRect (x, y, w, h: integer): string;
procedure stack. delRect (id: string);
procedure stack. moveSize (id: string; x, y, w, h: integer);
function stack. find (id: string): pNode;