ВУЗ:
Составители:
4. Ɋɟɚɥɢɡɭɟɦ ɦɟɬɨɞɵ Get_Color ɢ Set_Color:
function TAutoServer.Get_Color: SYSUINT;
begin
result:=Form1.Color;
end;
procedure TAutoServer.Set_Color(Value: SYSUINT);
begin
Form1.Color:=Value;
end;
5. Ɉɬɤɨɦɩɢɥɢɪɭɣɬɟ ɢ ɡɚɪɟɝɢɫɬɪɢɪɭɣɬɟ ɩɨɥɭɱɟɧɧɨɟ ɩɪɢɥɨɠɟɧɢɟ.
ɑɬɨɛɵ ɭɜɢɞɟɬɶ ɪɚɛɨɬɭ ɤɥɢɟɧɬɚ ɢ ɜɧɟɲɧɟɝɨ COM-ɫɟɪɜɟɪɚ, ɪɟɚɥɢɡɭɟɦ
ɞɥɹ ɧɚɲɟɝɨ ɩɪɢɦɟɪɚ ɤɥɢɟɧɬ.
1. ɋɨɡɞɚɣɬɟ ɧɨɜɵɣ ɩɪɨɟɤɬ-ɩɪɢɥɨɠɟɧɢɟ MyClient.dpr ɫɨ ɫɜɨɟɣ ɮɨɪ-
ɦɨɣ.
2. ȼ ɪɚɡɞɟɥɟ ɨɩɢɫɚɧɢɹ private ɮɨɪɦɵ ɫɨɡɞɚɜɚɟɦɨɝɨ ɩɪɢɥɨɠɟɧɢɹ ɜɜɟ-
ɞɢɬɟ ɩɟɪɟɦɟɧɧɭɸ Server ɬɢɩɚ Variant.
3. ɇɚ ɫɨɛɵɬɢɟ OnCreate ɢ OnDestroy ɮɨɪɦɵ ɭɫɬɚɧɨɜɢɬɟ ɩɪɨɰɟɞɭɪɭ
ɜɵɡɨɜɚ ɧɚɲɟɝɨ ɫɟɪɜɟɪɚ:
procedure TForm1.FormShow(Sender: TObject);
begin
Server:=CreateOLEObject('MyServer.AutoServer');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Server:=NULL;
end;
4. ɇɚ ɮɨɪɦɟ ɭɫɬɚɧɨɜɢɬɟ ColorDialog ɢ Button1. Ɋɟɚɥɢɡɭɣɬɟ ɫɨɛɵɬɢɟ
OnClick ɤɧɨɩɤɢ:
procedure TForm1.Button1Click(Sender: TObject);
begin
if ColorDialog1.Execute then Server.Color:=ColorDialog1.Color;
end;
5. Ɉɬɤɨɦɩɢɥɢɪɭɣɬɟ ɩɨɥɭɱɟɧɧɨɟ ɩɪɢɥɨɠɟɧɢɟ.
49
ɉɪɢ ɫɬɚɪɬɟ ɩɪɢɥɨɠɟɧɢɹ-ɤɥɢɟɧɬɚ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɡɚɩɭɫɤɚɟɬɫɹ ɜɧɟɲɧɢɣ
COM-ɫɟɪɜɟɪ. Ɏɨɪɦɚ ɫɟɪɜɟɪɚ ɦɟɧɹɟɬ ɫɜɨɣ ɰɜɟɬ ɜ ɫɨɨɬɜɟɬɫɬɜɢɢ ɫ ɜɵɛɪɚɧ-
ɧɵɦ ɰɜɟɬɨɦ ɜ ɞɢɚɥɨɝɨɜɨɦ ɨɤɧɟ ɤɥɢɟɧɬɚ, ɜɵɡɵɜɚɟɦɨɦ ɩɪɢ ɧɚɠɚɬɢɢ ɧɚ
ɤɧɨɩɤɭ Button1. Ɉɛɪɚɬɢɬɟ ɜɧɢɦɚɧɢɟ, ɤɨɝɞɚ ɤɥɢɟɧɬ ɡɚɜɟɪɲɚɟɬ ɪɚɛɨɬɭ, ɫɟɪ-
ɜɟɪ ɬɨɠɟ ɜɵɝɪɭɠɚɟɬɫɹ.
5.5. ɋɨɛɵɬɢɹ ɜ COM ɢ ɨɛɪɚɬɧɵɟ ɜɵɡɨɜɵ
ɉɪɢ ɪɚɡɪɚɛɨɬɤɟ ɫɟɪɶɟɡɧɵɯ COM-ɩɪɢɥɨɠɟɧɢɣ ɱɚɫɬɨ ɬɪɟɛɭɟɬɫɹ ɜɵ-
ɩɨɥɧɹɬɶ ɩɪɨɝɪɚɦɦɧɵɣ ɤɨɞ ɤɥɢɟɧɬɚ, ɟɫɥɢ ɜ COM-ɫɟɪɜɟɪɟ ɩɪɨɢɡɨɲɥɨ ɬɨ
ɢɥɢ ɢɧɨɟ ɞɟɣɫɬɜɢɟ. Ɉɫɨɛɟɧɧɨ ɷɬɨ ɚɤɬɭɚɥɶɧɨ, ɟɫɥɢ COM-ɫɟɪɜɟɪ ɩɨɞɞɟɪɠɢ-
ɜɚɟɬ ɞɢɚɥɨɝɨɜɵɟ ɨɤɧɚ ɞɥɹ ɜɜɨɞɚ ɤɚɤɢɯ-ɥɢɛɨ ɞɚɧɧɵɯ ɢ ɩɟɪɟɞɚɱɢ ɪɟɡɭɥɶɬɚɬɚ
ɤɥɢɟɧɬɭ. Ɉɫɧɨɜɧɚɹ ɢɞɟɹ ɦɟɯɚɧɢɡɦɚ ɫɨɛɵɬɢɣ ɫɥɟɞɭɸɳɚɹ: ɤɥɢɟɧɬ ɩɪɢ ɩɨɞ-
ɤɥɸɱɟɧɢɢ ɤ COM-ɫɟɪɜɟɪɭ ɩɟɪɟɞɚɟɬ ɢɧɬɟɪɮɟɣɫ, ɜ ɤɨɬɨɪɨɦ ɪɟɚɥɢɡɨɜɚɧɵ
ɮɭɧɤɰɢɢ ɫɨɛɵɬɢɣ. ɂɧɬɟɪɮɟɣɫ, ɩɟɪɟɞɚɜɚɟɦɵɣ ɤɥɢɟɧɬɨɦ COM-ɫɟɪɜɟɪɭ, ɧɚ-
ɡɵɜɚɟɬɫɹ ɢɧɬɟɪɮɟɣɫɨɦ ɨɛɪɚɬɧɨɝɨ ɜɵɡɨɜɚ.
Ⱦɥɹ ɪɟɚɥɢɡɚɰɢɢ ɤɨɦɩɨɧɟɧɬɚ, ɩɨɞɞɟɪɠɢɜɚɸɳɟɝɨ ɦɟɯɚɧɢɡɦ ɨɛɪɚɛɨɬɤɢ
ɫɨɛɵɬɢɣ ɢ ɨɛɪɚɬɧɨɝɨ ɜɵɡɨɜɚ, ɜ ɦɚɫɬɟɪɟ Automation Object Wizard ɧɭɠɧɨ
ɭɫɬɚɧɨɜɢɬɶ ɮɥɚɠɨɤ Generate Event support code. ɗɬɨ ɩɨɡɜɨɥɢɬ ɫɝɟɧɟɪɢɪɨ-
ɜɚɬɶ ɲɚɛɥɨɧ ɫɨɡɞɚɜɚɟɦɨɝɨ ɤɨɦɩɨɧɟɧɬɚ ɫ ɩɨɞɞɟɪɠɤɨɣ ɫɨɛɵɬɢɣ:
<ɢɦɹ ɤɨɦɩɨɧɟɧɬɚ> = class(TAutoObject, IConnectionPointContainer,
{<ɢɧɬɟɪɮɟɣɫɵ ɤɨɦɩɨɧɟɧ-
ɬɚ>})
private
{ Private declarations }
FConnectionPoints: TConnectionPoints;
FConnectionPoint: TConnectionPoint;
FSinkList: TList;
FEvents: <ɢɧɬɟɪɮɟɣɫ ɫɨɛɵɬɢɣ>;
public
procedure Initialize; override;
protected
{ Protected declarations }
property ConnectionPoints: TConnectionPoints
read FConnectionPoints implements IConnectionPointContainer;
procedure EventSinkChanged(const EventSink: IUnknown); over-
ride;
end;
ɗɬɨ ɨɫɧɨɜɧɵɟ ɫɜɨɣɫɬɜɚ ɢ ɦɟɬɨɞɵ ɞɥɹ ɩɨɞɞɟɪɠɤɢ ɤɨɦɩɨɧɟɧɬɨɦ COM-
ɫɟɪɜɟɪɚ ɦɟɯɚɧɢɡɦɚ ɫɨɛɵɬɢɣ ɢ ɮɭɧɤɰɢɢ ɨɛɪɚɬɧɨɝɨ ɜɵɡɨɜɚ
. ɉɪɨɰɟɞɭɪɵ
50
4. ��������� ������ Get_Color � Set_Color: ��� ������ ����������-������� ������������� ����������� ������� function TAutoServer.Get_Color: SYSUINT; COM-������. ����� ������� ������ ���� ���� � ������������ � ������- ��� ������ � ���������� ���� �������, ���������� ��� ������� �� begin ������ Button1. �������� ��������, ����� ������ ��������� ������, ���- result:=Form1.Color; ��� ���� �����������. end; procedure TAutoServer.Set_Color(Value: SYSUINT); 5.5. ������� � COM � �������� ������ begin Form1.Color:=Value; ��� ���������� ��������� COM-���������� ����� ��������� ��- end; ������� ����������� ��� �������, ���� � COM-������� ��������� �� ��� ���� ��������. �������� ��� ���������, ���� COM-������ ��������- 5. �������������� � ��������������� ���������� ����������. ���� ���������� ���� ��� ����� �����-���� ������ � �������� ���������� ����� ������� ������ ������� � �������� COM-�������, ��������� �������. �������� ���� ��������� ������� ���������: ������ ��� ���- ��� ������ ������� ������. �������� � COM-������� �������� ���������, � ������� ����������� ������� �������. ���������, ������������ �������� COM-�������, ��- 1. �������� ����� ������-���������� MyClient.dpr �� ����� ���- �������� ����������� ��������� ������. ���. ��� ���������� ����������, ��������������� �������� ��������� 2. � ������� �������� private ����� ������������ ���������� ���- ������� � ��������� ������, � ������� Automation Object Wizard ����� ���� ���������� Server ���� Variant. ���������� ������ Generate Event support code. ��� �������� ���������- 3. �� ������� OnCreate � OnDestroy ����� ���������� ��������� ���� ������ ������������ ���������� � ���������� �������: ������ ������ �������: <��� ����������> = class(TAutoObject, IConnectionPointContainer, procedure TForm1.FormShow(Sender: TObject); {<���������� ��������- ��>}) begin private Server:=CreateOLEObject('MyServer.AutoServer'); { Private declarations } end; FConnectionPoints: TConnectionPoints; FConnectionPoint: TConnectionPoint; procedure TForm1.FormDestroy(Sender: TObject); FSinkList: TList; begin FEvents: <��������� �������>; Server:=NULL; public end; procedure Initialize; override; protected 4. �� ����� ���������� ColorDialog � Button1. ���������� ������� { Protected declarations } OnClick ������: property ConnectionPoints: TConnectionPoints procedure TForm1.Button1Click(Sender: TObject); read FConnectionPoints implements IConnectionPointContainer; begin procedure EventSinkChanged(const EventSink: IUnknown); over- if ColorDialog1.Execute then Server.Color:=ColorDialog1.Color; ride; end; end; 5. �������������� ���������� ����������. ��� �������� �������� � ������ ��� ��������� ����������� COM- ������� ��������� ������� � ������� ��������� ������. ��������� 49 50
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »