Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

БобствСнная Π²Π΅Ρ‚Π²ΡŒ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Бвойства ООП Помимо ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ свойства. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ свойства выглядят ΠΊΠ°ΠΊ поля: ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ значСния ΠΈ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ…. Но Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ»Π΅ΠΉ свойства Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСста Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡ… Ρ‡Ρ‚Сния ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ полями ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ эффСкты ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΡΠ²ΠΎΠΉΡΡ‚Π²Π°ΠΌ. НапримСр… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

БобствСнная Π²Π΅Ρ‚Π²ΡŒ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ЦСлью ΠΌΠΎΠ΅ΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов. ΠžΠΏΠΈΡΠ°Ρ‚ΡŒ классы ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ пространства, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ созданиС Π½ΠΎΠ²Ρ‹Ρ… классов Π² Delphi, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ классов Π² Delphi.

1. ΠšΠ»Π°ΡΡΡ‹ ООП

Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ООП Π² ΡΠ·Ρ‹ΠΊ Delphi Π²Π²Π΅Π΄Π΅Π½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ классами, Π° ΠΈΡ… ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€Ρ‹ — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

ΠšΠ»Π°ΡΡΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² ΡΠ΅ΠΊΡ†ΠΈΠΈ type глобального Π±Π»ΠΎΠΊΠ°. ОписаниС класса начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова class ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом end. По Ρ„ΠΎΡ€ΠΌΠ΅ объявлСния классы ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ записи, Π½ΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ объявлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для выполнСния Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объявлСния класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для чтСния тСкстового Ρ„Π°ΠΉΠ»Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «delimited text» (Ρ„Π°ΠΉΠ» Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ строк; каТдая строка состоит ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° символом-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ):

type

TDelimitedReader = class

// Поля

FileVar: TextFile;

Items: array of string;

Delimiter: Char;

// ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

procedure PutItem (Index: Integer; const Item: string);

procedure SetActive (const AActive: Boolean);

function ParseLine (const Line: string): Integer;

function NextLine: Boolean;

function GetEndOfFile: Boolean;

end;

Класс содСрТит поля (FileVar, Items, Delimiter) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (PutItem, SetActive, ParseLine, NextLine, GetEndOfFile). Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², (всСгда) ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠ»Π΅ΠΉ, ΠΈΠ³Ρ€Π°ΡŽΡ‚ Ρ€ΠΎΠ»ΡŒ ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… (forward) описаний. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ класса ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΠ·ΠΆΠ΅.

Класс ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ описываСт ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. НапримСр, класс TDelimitedReader прСдставляСт собой «Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ» тСкстового Ρ„Π°ΠΉΠ»Π° с Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ считываСмых строк Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ (подстроки), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ символом, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ.

Класс содСрТит нСсколько ΠΏΠΎΠ»Π΅ΠΉ:

FileVar — файловая пСрСмСнная, нСобходимая для доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ;

Delimiter — символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слуТит Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ элСмСнтов;

Items — массив элСмСнтов, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ послСднСй считанной строки;

Класс Ρ‚Π°ΠΊΠΆΠ΅ содСрТит ряд ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ):

PutItem — ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ элСмСнт Π² ΠΌΠ°ΡΡΠΈΠ² Items ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡƒ Index; Ссли индСкс ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива, Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива автоматичСски увСличиваСтся;

SetActive — ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ», ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ производится Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ строк;

ParseLine — осущСствляСт Ρ€Π°Π·Π±ΠΎΡ€ строки: выдСляСт элСмСнты ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊΠΈ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΈΡ… Π² ΠΌΠ°ΡΡΠΈΠ² Items; Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов;

NextLine — считываСт ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ строку ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ParseLine осущСствляСт Π΅Π΅ Ρ€Π°Π·Π±ΠΎΡ€; Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ чтСния ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ строки функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True, Π° ΠΈΠ½Π°Ρ‡Π΅ — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False (достигнут ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°);

GetEndOfFile — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ булСвскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, достигнут Π»ΠΈ ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ описаниС являСтся Π½ΠΈΡ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠ΅ΠΉ интСрфСйса для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса TDelimitedReader. РСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² PutItem, SetActive, ParseLine, NextLine ΠΈ GetEndOfFile Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ отсутствуСт, ΠΎΠ΄Π½Π°ΠΊΠΎ для создания ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ экзСмпляров класса ΠΎΠ½Π° ΠΏΠΎΠΊΠ° ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Π°.

Бвойства ООП Помимо ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ свойства. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ свойства выглядят ΠΊΠ°ΠΊ поля: ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ значСния ΠΈ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ…. Но Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ»Π΅ΠΉ свойства Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСста Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡ… Ρ‡Ρ‚Сния ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ полями ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ эффСкты ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΡΠ²ΠΎΠΉΡΡ‚Π²Π°ΠΌ. НапримСр, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Reader присваиваниС свойству Active значСния True Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, Π° ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ значСния False — Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ эффСкта (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°) достигаСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π° ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ свойству значСния стоит Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

ОбъявлСниС свойства выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ слова property, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

type

TDelimitedReader = class

FActive: Boolean;

// ΠœΠ΅Ρ‚ΠΎΠ΄ записи (установки значСния) свойства

procedure SetActive (const AActive: Boolean);

property Active: Boolean read FActive write SetActive; // Бвойство

end;

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова read ΠΈ write Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ спСцификаторами доступа. ПослС слова read указываСтся ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ (ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ) значСния свойства, Π° ΠΏΠΎΡΠ»Π΅ слова write — ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ записи (установкС) значСния свойства. НапримСр, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ свойства Active ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ поля FActive, Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° свойства — Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° SetActive. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Π½Π° свойств Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π»ΠΈ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ, послСдниС принято ΠΏΠΈΡΠ°Ρ‚ΡŒ с Π±ΡƒΠΊΠ²Ρ‹ F (ΠΎΡ‚ Π°Π½Π³Π». field). ΠœΡ‹ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим соглашСниСм. НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌ поля класса TDelimitedReader: ΠΏΠΎΠ»Π΅ FileVar ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌ Π² FFile, Items — Π² FItems, Π° ΠΏΠΎΠ»Π΅ Delimiter — Π² FDelimiter.

type

TDelimitedReader = class

// Поля

FFile: TextFile; // FileVar -> FFile

FItems: array of string; // Items -> FItems

FActive: Boolean;

FDelimiter: Char; // Delimiter -> FDelimiter

end;

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ²ΠΎΠΉΡΡ‚Π²Π°ΠΌ выглядит Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠΎΠ»ΡΠΌ:

var

Reader: TDelimitedReader;

IsOpen: Boolean;

Reader.Active := True; // Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ Reader. SetActive (True);

IsOpen := Reader. Active; // Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ IsOpen := Reader. FActive

Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступа ΠΎΠΏΡƒΡ‰Π΅Π½, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ (Π·Π°Π΄Π°Π½ спСцификатор read), Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ (Π·Π°Π΄Π°Π½ спСцификатор write). Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ объявлСно свойство, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

type

TDelimitedReader = class

FItems: array of string;

function GetItemCount: Integer;

property ItemCount: Integer read GetItemCount; // Волько для чтСния!

end;

function TDelimitedReader. GetItemCount: Integer;

begin

Result := Length (FItems);

end;

Π—Π΄Π΅ΡΡŒ свойство ItemCount ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство элСмСнтов Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ FItems. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ опрСдСляСтся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ чтСния ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ строки Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ лишь ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ количСство элСмСнтов.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ»Π΅ΠΉ свойства Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ адрСса Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, поэтому ΠΊ Π½ΠΈΠΌ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Как слСдствиС, ΠΈΡ… Π½Π΅Π»ΡŒΠ·Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² varΠΈ out-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

2. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° создания Π½ΠΎΠ²Ρ‹Ρ… классов Π² Delphi

Π’ ΡΡ‚ΠΎΠΉ Π³Π»Π°Π²Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ основныС этапы создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для Delphi.

Π’Ρ‹Π±ΠΎΡ€ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ модуля для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ свойств, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΉ.

ВСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

Π”Π²Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… этапа ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просты ΠΈ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΡΡ‚ΠΎΠΉ Π³Π»Π°Π²Π΅. Π’Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π³Π»Π°Π²Π°Ρ….

Π’ ΡΡ‚ΠΎΠΉ Π³Π»Π°Π²Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС этапы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΡ€ΠΎΠΌΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самого Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ — этапа «Π²Ρ‹Π½Π°ΡˆΠΈΠ²Π°Π½ΠΈΡ» основной ΠΈΠ΄Π΅ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для сСбя вопроса: Ρ‡Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ программистам. ПослСднСС ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ — Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Ρ‚ΠΈΡ€Π°ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° — ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ всСго ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ-СдинствСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, вряд Π»ΠΈ стоит Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия Π½Π° ΠΏΡ€ΠΈΠ΄Π°Π½ΠΈΠ΅ Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, скорСС всСго, Π·Π°Π΄Π°Ρ‡Ρƒ с ΡƒΡΠΏΠ΅Ρ…ΠΎΠΌ Ρ€Π΅ΡˆΠΈΡ‚ спСциализированный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Π’Ρ‹Π±ΠΎΡ€ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ практичСски любой элСмСнт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡΡ‚Π°ΠΏΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ — ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ наслСдником ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… классов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ нСсколькими путями:

ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²;

созданиСм Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²;

созданиСм Π½ΠΎΠ²Ρ‹Ρ… графичСских (Π½Π΅ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ…) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²;

созданиСм подклассов для элСмСнтов управлСния Windows;

созданиСм Π½Π΅Π²ΠΈΠ·ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’ Ρ‚Π°Π±Π». 2.1 пСрСчислСны ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ ΠΊΠ»Π°ΡΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π±Ρ€Π°Ρ‚ΡŒ Π·Π° ΠΎΡΠ½ΠΎΠ²Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

Π’Π°Π±Π»ΠΈΡ†Π° 2.1 — Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ классы

ЦСль

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ классы

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

Π›ΡŽΠ±ΠΎΠΉ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, TButton ΠΈΠ»ΠΈ TListBox) ΠΈΠ»ΠΈ класс TCustomXXXX (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, TCustomListBox)

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

TWinControl ΠΈΠ»ΠΈ TCustomControl

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ графичСский ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

TGraphicControl

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ подкласс для элСмСнта управлСния

Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Windows

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

TComponent

МоТно Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, TRegIniFile ΠΈ TFont). Π’ ΡΡ‚ΠΎΠΌ случаС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠ»Π°ΡΡ свойства, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π΅ΠΌΡƒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ со ΡΡ€Π΅Π΄ΠΎΠΉ Delphi Π½Π° ΡΡ‚Π°ΠΏΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ этом условии вновь созданный класс Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹ΠΌ классом. Π’ΠΎΠΎΠ±Ρ‰Π΅, ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄Π΅Π²ΠΈΠ· ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ Borland: «ΠΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ вСлосипСд — просто наслСдуйтС Π΅Π³ΠΎ!» .

ИзмСнСниС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ — ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ. ΠŸΡ€ΠΈ этом Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹ΠΉ класс ΠΈΠ»ΠΈ класс TCustomXXXX. Как ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Π² Π³Π»Π°Π²Π΅ 3, классы TCustomXXXX Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½ΠΎ Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡ… ΡΠ²ΠΎΠΉΡΡ‚Π²Π° ΠΈ ΡΠΎΠ±Ρ‹Ρ‚ия. ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… классов Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° Π½Π°Π±ΠΎΡ€ΠΎΠΌ свойств ΠΈ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΉ. ΠŸΡƒΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, создаСтся простой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для отобраТСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ систСмного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Для Π²Ρ‹Π²ΠΎΠ΄Π° тСкстовых сообщСний Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΊΠ° TLabel. Однако ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ свойство Caption, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ нСльзя (это свойство Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Ρ‹Π²ΠΎΠ΄Π° систСмного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ). Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ — Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° TCustomLabel ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свойство Caption Π² ΡΠ΅ΠΊΡ†ΠΈΠΈ protected (ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΡ‚ΠΎΠΉ сСкции свойство Caption ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ TCustomLabel). Π’ΠΎΠ³Π΄Π° Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΡΡ‚ΠΎΠΌΡƒ свойству, Π½ΠΎ Π½ΠΈ Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π½ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСльзя.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для отобраТСния Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ систСмного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Он ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°:

1) Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

2) ИспользованиС Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ===================================================================} interface

uses SysUtils, Classes, Controls, StdCtrls, ExtCtrls; type TFarClock = class (TCustomLabel) private { Private declarations } FTimer: TTimer; protected { Protected declarations } procedure UpdateClock (Sender: TObject); public { Public declarations } constructor Create (AOwner: TComponent); override; published { Published declarations } property Align; // property Caption; НС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ это свойство! // НС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… свойств // (AutoSize, Alignment, BiDiMode ΠΈ Ρ‚. ΠΏ.), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ // Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅. property Color; property Font; property ParentColor; property ParentFont; property ParentShowHint; property PopupMenu; property ShowHint; property Transparent; property Visible; end; procedure Register; implementation constructor TFarClock. Create (AOwner: TComponent); {Π’ конструкторС создаСтся Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ FTimer ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ся Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° } begin inherited Create (AOwner); // УнаслСдованный конструктор FTimer := TTimer. Create (Self); // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ FTimer. OnTimer := UpdateClock; // Π•Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ OnTimer FTimer. Enabled := True // ЗапускаСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€ end; procedure TFarClock. UpdateClock (Sender: TObject); { Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° — ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события OnTimer встроСнного Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°. ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ } begin Caption := TimeToStr (Time); // ИзмСняСм надпись Invalidate; // ΠžΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ end; procedure Register; begin RegisterComponents ('Far', [TFarClock]); end; end. ВмСстС со ΡΠ²ΠΎΠΉΡΡ‚Π²ΠΎΠΌ Caption Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ся ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свойства стандартной ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ излишни Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅. НапримСр, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства AutoSize всСгда прСдполагаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ True, поэтому Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ся свойства Alignment, Height ΠΈ Width.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² ΠΎΠΊΠ½Π΅ ΠΈ Ρ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ дСскриптор ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ рСсурса, содСрТащийся Π² ΡΠ²ΠΎΠΉΡΡ‚Π²Π΅ Handle, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ опСрационная систСма управляСт этим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ. ΠžΠΊΠΎΠ½Π½Ρ‹ΠΉ рСсурс позволяСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ фокус Π²Π²ΠΎΠ΄Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ API-функциям Windows. ВсС ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками класса TWinControl. Π’ Π½ΠΈΡ… входят Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΠ°Π½Π΅Π»ΠΈ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ группирования), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² Ρ„окусС Π²Π²ΠΎΠ΄Π° (ΠΊΠ½ΠΎΠΏΠΊΠΈ, списки, поля Π²Π²ΠΎΠ΄Π°). Π₯отя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ нСпосрСдствСнно ΠΎΡ‚ TWinControl, Delphi прСдоставляСт для этих Ρ†Π΅Π»Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ класс TCustomControl, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся наслСдником ΠΎΡ‚ TWinControl ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ Π΅Π³ΠΎ свойством Canvas.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ графичСских ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Если ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ фокуса Π²Π²ΠΎΠ΄Π° вашим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚риваСтся, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ графичСским ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ. ГрафичСскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌ, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, поэтому ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ мСньшС систСмных рСсурсов. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‚ΠΈΠΏΠ° TLabel, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ фокус Π²Π²ΠΎΠ΄Π°, ΡΠ²Π»ΡΡŽΡ‚ΡΡ графичСскими. Π₯отя эти элСмСнты Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ фокус Π²Π²ΠΎΠ΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ события ΠΌΡ‹ΡˆΠΈ (Ρ‰Π΅Π»Ρ‡ΠΎΠΊ, Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ ΠΈ Ρ‚. ΠΏ.). Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнныС графичСскиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, наслСдуйтС ΠΈΡ… ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° TGraphicControl. Π­Ρ‚ΠΎΡ‚ класс прСдоставляСт ΠΊΠ°Π½Π²Ρƒ для рисования ΠΈ Π² Windows ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ всСми событиями WM_PAINT (Π½ΡƒΠΆΠ½ΠΎ просто ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Paint).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ подклассов для элСмСнтов управлСния Windows

Π’ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ Windows-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡƒΡ‚Π΅ΠΌ объявлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ класса ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π΅Π³ΠΎ Π² Windows. ΠžΠΊΠΎΠ½Π½Ρ‹ΠΉ класс содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΠ±Ρ‰ΡƒΡŽ для всСх экзСмпляров ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ класс Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ (это называСтся созданиСм подклассов), ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ свой элСмСнт Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ (DLL) — Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ стандартныС элСмСнты управлСния Windows — ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ интСрфСйс для элСмСнта. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ создания подклассов элСмСнтов управлСния Windows ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Ρ StdCtrls, содСрТащСго стандартныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Windows (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ TEdit).

класс delphi Π²Π΅Ρ‚Π²ΡŒ windows

3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ классов

type

TMyPanel = class (TPanel)

public

procedure CMMouseEnter (var message: TMessage); message CM_MOUSEENTER;

procedure CMMouseLeave (var message: TMessage); message CM_MOUSELEAVE;

end;

var

Form1: TForm1;

MyPanel1:TMypanel;

Implementation

{$R *.dfm}

procedure TMyPanel. CMMouseEnter (var message: TMessage);

begin

Form1.Label1.Caption := 'ΠœΡ‹ΡˆΡŒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ';

end;

procedure TMyPanel. CMMouseLEAVE (var message: TMessage);

begin

Form1.Label1.Caption :='ΠœΡ‹ΡˆΡŒ Π²Π½Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ';

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

MyPanel1 := TMyPanel. Create (self);

with MyPanel1 do

begin

Parent := Form1;

Visible := true;

Left := 100;

Top := 100;

end;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

CLose;

end;

end.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ способ созданиС Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ классов. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описано ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

1. А. Π―. ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Delphi Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ VCL.- М.: ООО <<οΏ½Π‘ΠΈΠ½ΠΎΠΌ-ΠŸΡ€Π΅ΡΡ>>, 2006 Π³. — 944 c.

2. Π’. Π€Π°Ρ€ΠΎΠ½ΠΎΠ² Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Delphi (+CD). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2005. — 463 с.

3. М. ΠšΡΠ½Ρ‚Ρƒ Delphi 7 для профСссионалов.

4. Π€Π»Π΅Π½ΠΎΠ² М. Π•. Delphi 2005. Π‘Π΅ΠΊΡ€Π΅Ρ‚Ρ‹ программирования — БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2006. — 266 с.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ