Разработка компонентов в DELPHI. Вощинская Г.Э. - 17 стр.

UptoLike

Составители: 

Ʉɨɧɟɱɧɨ, ɧɟ ɤɚɠɞɵɣ ɤɨɦɩɨɧɟɧɬɧɵɣ ɤɥɚɫɫ ɧɭɠɞɚɟɬɫɹ ɜ ɨɩɪɟɞɟɥɟɧɢɢ
ɧɨɜɨɝɨ ɤɨɧɫɬɪɭɤɬɨɪɚ. Ɇɨɠɧɨ ɭɧɚɫɥɟɞɨɜɚɬɶ ɤɨɧɫɬɪɭɤɬɨɪ ɨɬ ɩɪɟɞɤɚ. ȼ ɥɸɛɨɦ
ɫɥɭɱɚɟ, ɤɨɧɫɬɪɭɤɬɨɪ ɫɨɞɟɪɠɢɬ ɩɚɪɚɦɟɬɪ ɬɢɩɚ TComponent, ɭɤɚɡɵɜɚɸɳɢɣ
ɧɚ ɜɥɚɞɟɥɶɰɚ (Owner) ɤɨɦɩɨɧɟɧɬɚ. ȼɥɚɞɟɥɟɰɷɬɨ ɤɨɦɩɨɧɟɧɬ, ɜɵɡɵɜɚɸɳɢɣ
ɩɪɢ ɫɜɨɟɦ ɭɧɢɱɬɨɠɟɧɢɢ ɞɟɫɬɪɭɤɬɨɪɵ ɩɨɞɱɢɧɟɧɧɵɯ ɤɨɦɩɨɧɟɧɬɨɜ.
Ⱦɥɹ ɤɨɦɩɨɧɟɧɬɨɜ ɤɨɧɫɬɪɭɤɬɨɪ Createɷɬɨ ɢ ɟɫɬɶ ɦɟɫɬɨ, ɝɞɟ ɭɫɬɚ-
ɧɚɜɥɢɜɚɸɬɫɹ ɡɧɚɱɟɧɢɹ ɫɜɨɣɫɬɜ ɩɨ ɭɦɨɥɱɚɧɢɸ. ɇɚɩɪɢɦɟɪ:
constructor TSampleControl.Create = class(TWinControl)
begin
inherited Create(AOwner) ;
FHeight := 25; {ɍɫɬɚɧɨɜɤɚ ɡɧɚɱɟɧɢɣ ɩɨ ɭɦɨɥɱɚɧɢɸ}
FWidth := 50;
FColor := clWindows;
end;
ɇɟɨɛɯɨɞɢɦɨ ɩɨɫɥɟ ɨɛɴɹɜɥɟɧɢɹ ɤɨɧɫɬɪɭɤɬɨɪɚ ɡɚɞɚɬɶ ɞɢɪɟɤɬɢɜɭ
override. ɉɪɨɩɭɫɤ ɷɬɨɣ ɞɢɪɟɤɬɢɜɵ ɫɢɧɬɚɤɫɢɱɟɫɤɢ ɡɚɤɨɧɟɧ, ɧɨ ɟɫɥɢ ɬɚɤ
ɫɞɟɥɚɬɶ, ɬɨ ɤɨɦɩɨɧɟɧɬ ɧɟɥɶɡɹ ɛɭɞɟɬ ɩɨɦɟɫɬɢɬɶ ɧɚ ɮɨɪɦɭ.
Ɉɬɦɟɬɢɦ, ɱɬɨ ɜ ɩɟɪɟɨɩɪɟɞɟɥɟɧɧɨɦ ɤɨɧɫɬɪɭɤɬɨɪɟ ɩɟɪɜɵɦ ɞɨɥɠɟɧ ɜɵ-
ɡɵɜɚɬɶɫɹ ɤɨɧɫɬɪɭɤɬɨɪ ɩɪɟɞɤɚ, ɫɧɚɛɠɟɧɧɵɣ ɤɥɸɱɟɜɵɦ ɫɥɨɜɨɦ inherited
(ɭɧɚɫɥɟɞɨɜɚɧɧɵɣ), ɞɚɥɟɟ ɡɚɩɢɫɵɜɚɸɬɫɹ ɨɩɟɪɚɰɢɢ, ɫɩɟɰɢɮɢɱɧɵɟ ɞɥɹ ɞɚɧɧɨ-
ɝɨ ɤɨɦɩɨɧɟɧɬɚ.
ȿɫɥɢ ɭɞɚɥɟɧɢɟ ɤɨɦɩɨɧɟɧɬɚ ɢɡ ɩɚɦɹɬɢ ɞɨɥɠɧɨ ɫɨɩɪɨɜɨɠɞɚɬɶɫɹ ɞɨ-
ɩɨɥɧɢɬɟɥɶɧɵɦɢ ɞɟɣɫɬɜɢɹɦɢ, ɬɨ ɜ ɤɨɦɩɨɧɟɧɬɟ ɞɨɥɠɟɧ ɛɵɬɶ ɩɟɪɟɨɩɪɟɞɟɥɟɧ
ɞɟɫɬɪɭɤɬɨɪ:
destructor Destroy; override;
ȼ ɞɟɫɬɪɭɤɬɨɪɟ, ɭɧɢɱɬɨɠɚɸɳɟɦ ɷɤɡɟɦɩɥɹɪ ɤɨɦɩɨɧɟɧɬɚ, ɩɨɪɹɞɨɤ ɞɟɣ-
ɫɬɜɢɣ ɨɛɪɚɬɧɵɣ:
destructor TSampleControl.Destroy;
begin
17
     Ʉɨɧɟɱɧɨ, ɧɟ ɤɚɠɞɵɣ ɤɨɦɩɨɧɟɧɬɧɵɣ ɤɥɚɫɫ ɧɭɠɞɚɟɬɫɹ ɜ ɨɩɪɟɞɟɥɟɧɢɢ
ɧɨɜɨɝɨ ɤɨɧɫɬɪɭɤɬɨɪɚ. Ɇɨɠɧɨ ɭɧɚɫɥɟɞɨɜɚɬɶ ɤɨɧɫɬɪɭɤɬɨɪ ɨɬ ɩɪɟɞɤɚ. ȼ ɥɸɛɨɦ
ɫɥɭɱɚɟ, ɤɨɧɫɬɪɭɤɬɨɪ ɫɨɞɟɪɠɢɬ ɩɚɪɚɦɟɬɪ ɬɢɩɚ TComponent, ɭɤɚɡɵɜɚɸɳɢɣ
ɧɚ ɜɥɚɞɟɥɶɰɚ (Owner) ɤɨɦɩɨɧɟɧɬɚ. ȼɥɚɞɟɥɟɰ – ɷɬɨ ɤɨɦɩɨɧɟɧɬ, ɜɵɡɵɜɚɸɳɢɣ
ɩɪɢ ɫɜɨɟɦ ɭɧɢɱɬɨɠɟɧɢɢ ɞɟɫɬɪɭɤɬɨɪɵ ɩɨɞɱɢɧɟɧɧɵɯ ɤɨɦɩɨɧɟɧɬɨɜ.
     Ⱦɥɹ ɤɨɦɩɨɧɟɧɬɨɜ ɤɨɧɫɬɪɭɤɬɨɪ Create – ɷɬɨ ɢ ɟɫɬɶ ɦɟɫɬɨ, ɝɞɟ ɭɫɬɚ-
ɧɚɜɥɢɜɚɸɬɫɹ ɡɧɚɱɟɧɢɹ ɫɜɨɣɫɬɜ ɩɨ ɭɦɨɥɱɚɧɢɸ. ɇɚɩɪɢɦɟɪ:
     constructor TSampleControl.Create = class(TWinControl)
     begin
        inherited Create(AOwner) ;
        FHeight := 25;        {ɍɫɬɚɧɨɜɤɚ ɡɧɚɱɟɧɢɣ ɩɨ ɭɦɨɥɱɚɧɢɸ}
        FWidth := 50;
        FColor := clWindows;
     end;

     ɇɟɨɛɯɨɞɢɦɨ ɩɨɫɥɟ ɨɛɴɹɜɥɟɧɢɹ ɤɨɧɫɬɪɭɤɬɨɪɚ ɡɚɞɚɬɶ ɞɢɪɟɤɬɢɜɭ
override. ɉɪɨɩɭɫɤ ɷɬɨɣ ɞɢɪɟɤɬɢɜɵ ɫɢɧɬɚɤɫɢɱɟɫɤɢ ɡɚɤɨɧɟɧ, ɧɨ ɟɫɥɢ ɬɚɤ
ɫɞɟɥɚɬɶ, ɬɨ ɤɨɦɩɨɧɟɧɬ ɧɟɥɶɡɹ ɛɭɞɟɬ ɩɨɦɟɫɬɢɬɶ ɧɚ ɮɨɪɦɭ.
     Ɉɬɦɟɬɢɦ, ɱɬɨ ɜ ɩɟɪɟɨɩɪɟɞɟɥɟɧɧɨɦ ɤɨɧɫɬɪɭɤɬɨɪɟ ɩɟɪɜɵɦ ɞɨɥɠɟɧ ɜɵ-
ɡɵɜɚɬɶɫɹ ɤɨɧɫɬɪɭɤɬɨɪ ɩɪɟɞɤɚ, ɫɧɚɛɠɟɧɧɵɣ ɤɥɸɱɟɜɵɦ ɫɥɨɜɨɦ inherited
(ɭɧɚɫɥɟɞɨɜɚɧɧɵɣ), ɞɚɥɟɟ ɡɚɩɢɫɵɜɚɸɬɫɹ ɨɩɟɪɚɰɢɢ, ɫɩɟɰɢɮɢɱɧɵɟ ɞɥɹ ɞɚɧɧɨ-
ɝɨ ɤɨɦɩɨɧɟɧɬɚ.
     ȿɫɥɢ ɭɞɚɥɟɧɢɟ ɤɨɦɩɨɧɟɧɬɚ ɢɡ ɩɚɦɹɬɢ ɞɨɥɠɧɨ ɫɨɩɪɨɜɨɠɞɚɬɶɫɹ ɞɨ-
ɩɨɥɧɢɬɟɥɶɧɵɦɢ ɞɟɣɫɬɜɢɹɦɢ, ɬɨ ɜ ɤɨɦɩɨɧɟɧɬɟ ɞɨɥɠɟɧ ɛɵɬɶ ɩɟɪɟɨɩɪɟɞɟɥɟɧ
ɞɟɫɬɪɭɤɬɨɪ:
     destructor Destroy; override;

     ȼ ɞɟɫɬɪɭɤɬɨɪɟ, ɭɧɢɱɬɨɠɚɸɳɟɦ ɷɤɡɟɦɩɥɹɪ ɤɨɦɩɨɧɟɧɬɚ, ɩɨɪɹɞɨɤ ɞɟɣ-
ɫɬɜɢɣ ɨɛɪɚɬɧɵɣ:
     destructor TSampleControl.Destroy;
     begin

                                  17