Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delfi_1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
341.5 Кб
Скачать

Ріс.2. Елемент управління RichEdit в редакторові бібліотеки типів

На Рис. 2 показано вікно редактора бібліотеки типів для даного елементу управління ActiveX. Лістинг 3.9 містить код файлу бібліотеки типів.

Лістинг 3

unit RichEditXControllJTLB;

// Увага

// Типи, оголошені в цьому файлі, згенерували з даних

// бібліотеки типів. Якщо бібліотека типів явно або неявно (посилається

// на цю бібліотеку через іншу) реимпортирована або за допомогою команди

// 'Refresh' у вікні Type Library Editor активізована в час

// редагування бібліотеки типів, вміст даного файлу має бути

// регенеровано, а всі внесені уручну зміни можуть бути загублені.

*****************************************************

// PASTLWTR : $Revision: 1.88 $

// Файл створений 15.02.2001 18:30:46 з бібліотеки типів, описаної нижче.

*****************************************************

// Type Lib: C:\Program

Files\Borland\Delphi5\Projects\!!!\RichEditXControll.tlb (1)

// IIDXLCID: {B1F514E7-E8BO-49B5-A6C3-F7F4910CFF9D}0

// Helpfile:

// DepndLst:

// (1) v2.0 stdole (C:\WINDOWS\SYSTEM\stdole2.tlb)

// (2) v4.0 STDVCL (C:\WINDOWS\SYSTEM\STDVCL40.DLL)

*****************************************************

{$TYPEDADDRESS OFF} // Модуль має відкомпілюватися без перевірки

// типів покажчиків

interface

uses Windows, ACTIVEX, Classes, Graphics, OleServer, OleCtrls, STDVCL;

//***********************************************

// GUIDS оголошені в TypeLibrary. Використовуються наступні префікси:

// Type Libraries : LIBID_xxxx

// CoClasses : CLASS_xxxx

// DISPInterfaces : DIID_xxxx

// NON-DISP interfaces: IID_xxxx

//***********************************************

const

RichEditXControllMajorVersion = 1; RichEditXControllMinorVersion =0; '

LIBID_RichEditXControll: TGUID = '{B1F514E7-E8BO-49B5-A6C3-F7F4910CFF9D}';

IID_IRichEditX: TGUID = '{86F5C46C-CDA6-4279-8BF4-F69F1A051ED7}';

DIID_IRichEditXEvents: TGUID = '{21AB5F94-7D87-4FCO-AB5A-9BCE1D05AF8B} ' ;

CLASS_RichEditX: TGUID = '{7C731EEO-D98D-4040-8FE1-EOCB9E54C58B}';

//***********************************************

// Оголошення перерахувань, визначених в бібліотеці типів

//***********************************************

// Константи для TxAlignment

type

TxAlignment = TOleEnum;

const

taLeftJustify = $00000000;

taRightJustify = $00000001;

taCenter = $00000002;

// Константи для TxBorderStyle

type

TxBorderStyle = TOleEnum;

const

bsNone = $00000000;

bsSingle = $00000001;

// Константи для TxDragMode

type

TxDragMode = TOleEnum;

const

dmManual = $00000000;

dmAutomatic = $00000001;

// Константи для TxImeMode

type

TxImeMode = TOleEnum;

const

imDisable = $00000000;

imClose = $00000001;

imOpen = $00000002;

imDontCare = $00000003;

imSAlpha = $00000004;

imAlpha = $00000005;

imHira = $00000006;

imSKata = $00000007;

imKata = $00000008;

imChinese = $00000009;

imSHanguel = $OOOOOOOA;

imHanguel = $OOOOOOOB;

// Константи для TxScrollStyle

type

TxScrollStyle = TOleEnum;

const

ssNone = $00000000;

ssHorizontal = $00000001;

ssVertical = $00000002;

ssBoth = $00000003;

// Константи для TxMouseButton

type

TxMouseButton = TOleEnum;

const

mbLeft = $00000000;

mbRight = $00000001;

mbMiddle = $00000002;

type

// Попереднє оголошення типів, визначених в бібліотеці типів

//***********************************************

IRichEditX = interface;

IRichEditXDisp = dispinterface;

IRichEditXEvents = dispinterface;

//***********************************************

// Оголошення CoClasses, визначених в бібліотеці типів

//***********************************************

RichEditX = IRichEditX;

//***********************************************

// Оголошення структур, союзів і альянсів.

//***********************************************

PPUserTypel = AIFontDisp; {*}

//***********************************************

// Interface: IRichEditX

// Flags: (4416) Dual OleAutomation Dispatchable

// GUID: {86F5C46C-CDA6-4279-8BF4-F69F1A051ED7}

//***********************************************

IRichEditX = interface(IDispatch)

['{86F5C46C-CDA6-4279-8BF4-F69F1A051ED7}']

function Get_Alignment: TxAlignment; safecall;

procedure Set_Alignment(Value: TxAlignment); safecall;

function Get_BorderStyle: TxBorderStyle; safecall;

procedure Set_BorderStyle(Value: TxBorderStyle); safecall;

function Get_Color: OLE_COLOR; safecall;

procedure Set_Color(Value: OLE_COLOR); safecall;

function Get_Ctl3D: WordBool; safecall;

procedure Set_Ctl3D(Value: WordBool); safecall;

function Get_DragCursor: Smallint; safecall;

procedure Set__DragCursor'(Value: Smallint); safecall;

function Get_DragMode: TxDragMode; safecall;

procedure Set_DragMode(Value: TxDragMode); safecall;

function Get_Enabled: WordBool; safecall;

procedure Set_Enabled(Value: WordBool); safecall;

function Get_Font: .IFontDisp; safecall;

procedure _Set_Font(const Value: IFontDisp); safecall;

procedure Set_Font(var Value: IFontDisp); safecall;

function Get_HideSelection: WordBool; safecall;

procedure Set_HideSelection(Value: WordBool); safecall;

function Get_HideScrollBars: WordBool; safecall;

procedure Set_HideScrollBars(Value: WordBool); safecall;

function Get_ImeMode: TxImeMode; safecall;

procedure Set_ImeMode(Value: TxImeMode); safecall;

function Get_ImeName: WideString; safecall;

procedure Set_ImeName(const Value: WideString}; safecall;

function Get_Lines: IStririgs; safecall;

procedure Set_Lines(const Value: IStrings); safecall;

function Get_MaxLength: Integer; safecall;

procedure Set_MaxLength(Value: Integer); safecall;

function Get_ParentColor: WordBool; safecall;

procedure Set_ParentColor(Value: WordBool); safecall;

function Get_ParentCtl3D: WordBool; safecall;

procedure Set_ParentCtl3D(Value: WordBool); safecall;

function Get_PlainText: WordBool; safecall;

procedure Set_PlainText(Value: WordBool); safecall;

function Get_ReadOnly: WordBool; safecall;

procedure Set_ReadOnly(Value: WordBool); safecall;

function Get_ScrollBars: TxScrollStyle; safecall;

procedure Set_ScrollBars(Value: TxScrollStyle); safecall;

function Get_Visible: WordBool; safecall;

procedure Set_Visible(Value: WordBool); safecall;

function Get_WantTabs: WordBool; safecall;

procedure Set_WantTabs(Value: WordBool); safecall;

function Get_WantReturns: WordBool; safecall;

procedure Set_WantReturns(Value: WordBool); safecall;

function Get_WordWrap: WordBool; safecall;

procedure Set_WordWrap(Value: WordBool); safecall;

function Get_CanUndo: WordBool; safecall;

function Get_Modified: WordBool; safecall;

procedure Set_Modifled(Value: WordBool); safecall;

function Get_SelLength: Integer; safecall;

procedure Set_SelLength(Value: Integer); safecall;

function Get_SelStart: Integer; safecall;

procedure Set_SelStart(Value: Integer); safecall;

function Get_SelText: WideString; safecall;

procedure Set_SelText(const Value: WideString); safecall;

function GetJText: WideString; safecall;

procedure Set_Text(const Value:.WideString); safecall;

function Get_DoubleBuffered: WordBool; safecall;

procedure Set_DoubleBuffered(Value: WordBool); safecall;

function Get_VisibleDockClientCount: Integer; safecall;

function Get_Cursor: Smallint; safecall;

procedure Set_Cursor(Value: Smallint); safecall;

property Alignment: TxAlignment read Get_Alignment write Set_Alignment ;

property BorderStyle: TxBorderStyle read Get_BorderStyle write Set_BorderStyle;

property Color: OLE_COLOR read Get_Color write Set_Color;

property CTLSD: WordBool read Get_Ctl3D write Set_Ctl3D;

property DragCursor: Smallint read Get_DragCursor write Set_DragCursor;

property DragMode: TxDragMode read Get_DragMode write Set_DragMode;

property Enabled: WordBool read Get_Enabled write Set_Enabled;

property Font: IFontDisp read Get_Font write _Set_Font;

property HideSelection: WordBool read Get_HideSelection write Set_HideSelection;

property HideScrollBars: WordBool read Get_HideScrollBars write Set_HideScrollBars;

property ImeMode: TxImeMode read Get_ImeMode write Set_ImeMode;

property ImeName: WideString read Get_ImeName write Set_ImeName;

property Lines: IStrings read Get_Lines write Set_Lines;

property MaxLength: Integer read Get_MaxLength write Set_MaxLength;

property ParentColor: WordBool read Get_ParentColor write Set_ParentColor;

property ParentCtlSD: WordBool read Get_ParentCtl3D write Set_ParentCtl3D;

property PlainText: WordBool read Get_PlainText write Set_PlainText;

property Readonly: WordBool read Get_ReadOnly write Set_ReadOnly;

property ScrollBars: TxScrollStyle read Get_ScrollBars write Set_ScrollBars;

property Visible: WordBool read Get_Visible write Set_Visible;

property WantTabs: WordBool read Get_WantTabs write Set_WantTabs;

property WantReturns: WordBool read Get_WantReturns write SetJWantReturns;

property Wordwrap: WordBool read Get_WordWrap write Set_WordWrap;

property CanUndo: WordBool read Get_CanUndo;

property Modified: WordBool read Get__Modified write Set_Modified;

property SelLength: Integer read Get_SelLength write Set_SelLength;

property SelStart: Integer read Get_SelStart write Set_SelStart;

property SelText: WideString read Get_SelText write Set_SelText;

property Text: WideString read Get_Text write Set_Text;

property DoubleBuffered: WordBool read Get_DoubleBuffered write Set_DoubleBuffered;

property VisibleDockClientCount: Integer read Get_VisibleDockClientCoxint;

property Cursor: Smallint read Get_Cursor write Set_Cursor;

end;

//***********************************************

// Displntf: IRichEditXDisp

// Flags: (4416) Dual OleAutomation Dispatchable

// GUID: {86F5C46C-CDA6-4279-8BF4-F69F1A051ED7}

//***********************************************

IRichEditXDisp = dispinterface

['{86F5C46C-CDA6-4279-8BF4-F69F1A051ED7}']

property Alignment: TxAlignment dispid 1;

property BorderStyle: TxBorderStyle dispid 2;

property Color: OLE_COLOR dispid -501;

property Ctl3D: WordBool dispid 3;

property DragCursor: Smallint dispid 4;

property DragMode: TxDragMode dispid 5;

property Enabled: WordBool dispid -514;

property Font: IFontDisp dispid -512;

property HideSelection: WordBool dispid 6;

property HideScrollBars: WordBool dispid 7;

property ImeMode: TxImeMode dispid 8;

property ImeName: WideString dispid 9;

property Lines: IStrings dispid 10;

property MaxLength: Integer dispid 11;

property ParentColor: WordBool dispid 12;

property ParentCtl3D: WordBool dispid 13;

property PlainText: WordBool dispid 14;

property Readonly: WordBool dispid 15;

property ScrollBars: TxScrollStyle dispid 16;

property Visible: WordBool dispid 17;

property WantTabs: WordBool dispid 18;

property WantReturns: WordBool dispid 19;

property Wordwrap: WordBool dispid 20;

property CanUndo: WordBool readonly dispid 34;

property Modified: WordBool dispid 35;

property SelLength: Integer dispid 36;

property SelStart: Integer dispid 37;

property SelText: WideString dispid 38;

property Text: WideString dispid -517;

property DoubleBuffered: WordBool dispid 39;

property VisibleDockClientCount: Integer readonly dispid 40;

property Cursor: Smallint dispid 49;

end;

//***********************************************

// Displntf: IRichEditXEvents

// Flags: (0)

// QUID: {21AB5F94-7D87-4FCO-AB5A-9BCE1D05AF8B}

//***********************************************

IRichEditXEvents = dispinterface

['{21AB5F94-7D87-4FCO-AB5A-9BCE1D05AF8B}']

procedure OnChange; dispid 1;

procedure OnKeyPress(var Кеу: Smallint); dispid 8;

procedure OnProtectChange(StartPos: Integer; EndPos: Integer; var AllowChange: WordBool); dispid 16;

procedure OnSaveClipboardfNumObjects: Integer; NumChars: Integer; var SaveClipboard: WordBool); dispid 18;

procedure OnSelectionChange; dispid 19;

end;

// Оголошення класу OLE Control Proxy

// Control Name TRichEditX

// Help String RichEditX Control

// Default Interface IRichEditX

// Def. Intf. DISP? No

// Event Interface IRichEditXEvents

// TypeFlags (34) CanCreate Control

//***********************************************

TRichEditXOnKeyPress = procedure(Sender: TObject; var Кеу: Smallint) of object;

TRichEditXOnProtectChange = procedure(Sender: TObject; StartPos: Integer; EndPos: Integer;

var AllowChange: WordBool) of object;

TRichEditXOnSaveClipboard = procedure(Sender: TObject; NumObjects: Integer; NumChars-: Integer;

var SaveClipboard: WordBool) of object;

TRichEditX = class(Telecontrol)

private

FOnChange: TNotifyEvent;

FOnKeyPress: TRichEditXOnKeyPress;

FOnProtectChange: TRichEditXOnProtectChange;

FOnSaveClipboard: TRichEditXOnSaveClipboard;

FOnSelectionChange: TNotifyEvent;

FIntf: IRichEditX;

function GetControlInterface: IRichEditX;

protected

procedure CreateControl;

procedure InitControlData; override/function Get_Lines: IStrings;

procedure Set_Lines(const Value: IStrings);

public

property Controllnterface: IRichEditX read GetControlInterface;

property Defaultlnterface: IRichEditX read GetControlInterface;

property CanUndo: WordBool index 34 read GetWordBoolProp;

property Modified: WordBool index 35 read GetWordBoolProp write SetWordBoolProp;

property SelLength: Integer index 36 read GetlntegerProp write SetlntegerProp;

property SelStart: Integer index 37 read GetlntegerProp write SetlntegerProp;

property SelText: WideString index 38 read GetWideStringProp write SetWideStringProp;

property Text: WideString index -517 read GetWideStringProp write SetWideStringProp;

property DoubleBuffered: WordBool index 39 read GetWordBoolProp write SetWordBoolProp;

property VisibleDockClientCount: Integer index 40 read GetlntegerProp;

published

property Alignment: TOleEnum index 1 read GetTOleEnumProp write SetTOleEnumProp stored False;

property BorderStyle: TOleEnum index 2 read GetTOleEnumProp write SetTOleEnumProp stored False;

property Color: TColor index -501 read GetTColorProp write SetTColorProp stored False;

property Ctl3D: WordBool index 3 read GetWordBoolProp write SetWordBoolProp stored False;

property DragCursor: Smallint index 4 read GetSmallintProp write SetSmallintProp stored False property DragMode: TOleEnum index 5 read GetTOleEnumProp write SetTOleEnumProp stored False;

property Enabled: WordBool index -514 read GetWordBoolProp write SetWordBoolProp stored False;

property Font: TFont index -512 read GetTFontProp write SetTFontProp stored False;

property HideSelection; WordBool index 6 read GetWordBoolProp write SetWordBoolProp stored False;

property HideScrollBars: WordBool index 7 read GetWordBoolProp write SetWordBoolProp stored False;

property ImeMode: TOleEnum index 8 read GetTOleEnumProp write SetTOleEnumProp stored False;

property ImeName: WideString index 9 read GetWideStringProp write SetWideStringProp stored False;

property Lines: IStrings read Get_Lines write Set_Lines stored False property MaxLength: Integer index 11 read GetlntegerProp write SetlntegerProp stored False

property ParentColor: WordBool index 12 read GetWordBoolProp write SetWordBoolProp stored False;

property ParentCtlSD: WordBool index 13 read GetWordBoolProp write SetWordBoolProp stored False;

property PlainText: WordBool index 14 read GetWordBoolProp write SetWordBoolProp stored False;

property Readonly: WordBool index 15 read GetWordBoolProp write SetWordBoolProp stored False;

property ScrollBars: TOleEnum index 16 read GetTOleEnumProp write SetTOleEnumProp stored False;

property Visible: WordBool index 17 read GetWordBoolProp write SetWordBoolProp stored False;

property WantTabs: WordBool index 18 read GetWordBoolProp write SetWordBoolProp stored False;

property WantReturns: WordBool index 19 read GetWordBoolProp write SetWordBoolProp stored False;

property Wordwrap: WordBool index 20 read GetWordBoolProp write SetWordBoolProp stored False;

property Cursor: Smallint index 49 read GetSmallintProp write SetSmallintProp stored False;

property OnChange: TNotifyEvent read FOnChange write FOnChange;

property OnKeyPress: TRichEditXOnKeyPress read FOnKeyPress write FOnKeyPress;

property OnProtectChange: TRichEditXOnProtectChange read FOnProtectChange write FOnProtectChange;

property OnSaveClipboard: TRichEditXOnSaveClipboard read FOnSaveClipboard write FOnSaveClipboard;

property OnSelectionChange: TNotifyEvent read FOnSelectionChange write FOnSelectionChange;

end;

procedure Register; implementation uses ComObj;

procedure TRichEditX.InitControlData; const

CEventDispIDs: array [0..4] of DWORD = (

$00000001, $00000008, $00000010, $00000012, $00000013); CTFontlDs: array [0..0] of DWORD = (

$FFFFFEOO); CControlData: TControlData2 = (

CLASSID: '{7C731EEO-D98D-4040-8FE1-EOCB9E54C58B}';

EVENTHD: '{21AB5F94-7D87-4FCO-AB5A-9BCE1D05AF8B}';

EventCount: 5;

EventDispIDs: @CEventDispIDs;

LicenseKey: nil (*HR:$80040154*);

Flags: $00000020;

Version: 401;

FontCount: 1;

FontlDs: @CTFontIDs);

begin

ControlData := @CControlData;

TControlData2(CControlData).FirstEventOfs := Cardinal(SSFOnChange) - Cardinal(Self);

end;

procedure TRichEditX.CreateControl;

procedure DoCreate;

begin

FIntf := lUnknown(OleObject) as IRichEditX;

end;

begin

if FIntf = nil then DoCreate;

end;

function TRichEditX.GetControlInterface: IRichEditX;

begin

CreateControl;

Result := FIntf;

end;

function TRichEditX.Get_Lines: IStrings;

begin

Result := DefaultInterface.Get_Lines;

end;

procedure TRichEditX.Set_Lines(const Value: IStrings);

begin

Defaultlnterface.Set_Lines(Value);

end;

procedure Register;

begin

RegisterComponents('ACTIVEX'[TRichEditX]);

end;

end.

Як ви можете бачити, приведені вище лістинги мають достатньо великий розмір. Але той факт, що Delphi бере на себе таку велику роботу, дозволяє навіть непрофесіоналові в розробці елементів управління ActiveX створювати свої ActiveX за допомогою майстра. Майстер в даному випадку генерує повністю функціональний елемент управління ActiveX з інтерфейсами, бібліотекою типів і подіями, при цьому розробникові не потрібно вводити власний код.

Для установки даного елементу управління в палітру компонентів Delphi потрібно зробити наступне:

1. Відкомпілювати проект за допомогою пункту головного меню Project/Compile <ім'я проекту> (Проєкт/компіліровать <ім'я проекту>), при цьому буде створена бібліотека OCX.

2. За допомогою пункту головного меню Component/Import ActiveX Control (Компонент/Імпорт елементу управління ActiveX) відкрити вікно імпорту нового елементу ActiveX.

3. У діалоговому вікні імпорту ActiveX натискувати кнопку Add (Додати), перейти в каталог, що містить створений файл OCX, і вибрати його подвійним клацанням, елемент управління з'явиться в списку діалогового вікна імпорту ActiveX.

4. Вибрати даний елемент управління в списку і натискувати кнопку Install (Встановити).

5. Вибрати файл пакету і натискувати кнопку ОК.

Після виконання даної послідовності кроків в палітрі компонентів Delphi з'явиться ваш елемент управління ActiveX.

Слід зауважити, що створення елементів управління ActiveX із стандартних компонентів Delphi застосовується дуже рідко. Ви можете використовувати дану процедуру перетворення компоненту в ActiveX до самостійно створеного компоненту, що значно розширить його функціональність і дозволить використовувати ваш компонент розробниками в іншій середі програмування.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]