Code:

{©Drkb v.3(2007): http://delphi-hlp.ru}

Try

{здесь вы пишите код в котором может произойти ошибка}

Except

on e:Exception do Shwomessage(e.message);

End

Перед тем как Дельфи сможет использовать любые ActiveX/COM (в том числе и ADO компоненты) должна быть выполнена строка Application.Initialize - которая инициализирует использование COM. Если пишется DLL или консольное приложение, которые не имеют объекта Application, то надо просто добавить в Uses ещё один модуль: "oleauto"

 Debug Delphi 3 experts with Delphi 3

Delphi 3 has a new feature "debug DLLs". It can be used to debug experts with the internal debugger. Just follow these simple steps, and debugging an expert can be fun:

  

Make sure that the expert is not installed. If there is this entry

\CURRENT_USER\software\Delphi\3.0\experts,

myexpert=\projects\myexpert\expert.dll

rename this entry to "expert.xxx". (don't delete it, you'll need it later).

Otherwise, you cannot compile a new version.

 

 Используйте конструкцию

Code:

{©Drkb v.3(2007):http://delphi-hlp.ru}

Try

{здесь вы пишите код в котором может произойти ошибка}

Finally

{здесь вы пишите код который выполнится в любом случае - хоть произойдёт ошибка, хоть нет}

End

 

Например, это часто применяется во избежание утечек при динамическом распределении памяти:

Code:

{©Drkb v.3(2007): http://delphi-hlp.ru}

t:TStringList;

...

t:=TStringList.create; //распределили память под объект t

Try

{здесь работаем с переменной t}

Finally

t.free;//память выделенная под объект t всегда будет освобождена

End

Создание pop-up меню своего компонента и кое-что еще о классе TComponentExpert

Давайте рассмотрим создание простейшего одно уровневого контекстного меню на своем компоненте, которое будет открываться при щелчке правой кнопкой по нему в самом верху контекстного меню Delphi.

 

Прежде всего вам следует разделить код вашего компонента на Design-time и Run-time. Для этого перенесите ваш компонент в модуль, с названием, например, MyComponent.pas, а процедуры регистрации его в палитре компонентов (procedure Register и т.д.) в модуль, с названием, например, MyComponentReg. На такие меры приходится идти из-за того, что Borland не включила в исходные коды исходник файла Proxies.pas.

 

Code:

{©Drkb v.3(2007): http://delphi-hlp.ru}

raise Exception.Create('Это моя ошибка! Сам что хочу то и пишу здесь!')

 

 

Примечание: в отличие от других объектов, объекты типа Exception или других классов, унаследованных от Exception не требуют вызова деструкторов или любых других действий по освобождению памяти после их создания.

Если вы присвоили свойству имя TableName, то полный цикл создания редактора свойств включает следующие шаги:

 

Опишите класс редактора свойства:

 

Code:

type

TTableNameProperty = class(TStringProperty)

function GetAttributes: TPropertyAttributes; override;

procedure GetValues(Proc: TGetStrProc); override;

end;

 

implementation

 

{ TTableNameProperty }

function TTableNameProperty.GetAttributes: TPropertyAttributes;

begin

Result := [paValueList];

end;

 

procedure TTableNameProperty.GetValues(Proc: TGetStrProc);

var

TableName: String;

I: Integer;

begin

{ здесь вы должны добавить свой код, ?тобы с помощью цикла обойти имена всех

таблиц, включенных в список }

for I := 0to ???? do

begin

TableName := ????[I];

Proc(TableName);

end;

end;

 Затем зарегистрируйте данный редактор свойства следующим образом: 

 

Code:

RegisterPropertyEditor(TypeInfo(string), TcsNotebook, 'TableName', TTableNameProperty);

 

 

Code:

{....}

 

uses ToolsApi, Menus;

 

{....}

 

var

item: TMenuItem;

begin

{get reference to delphi's mainmenu. You can handle it like a common TMainMenu}

with (BorlandIDEServices as INTAServices).GetMainMenu do

begin

item := TMenuItem.Create(nil);

item.Caption := 'A Mewn caption';

Items.Add(item);

end;

end;

 

This article introduces you to the world of Delphi Experts. Delphi Experts are DLLs, that will be loaded during the startup sequence of Delphi. This article first appeared on Delphi-PRAXiShttp://www.delphipraxis.net/viewtopic.php?t=5300 in German.

 

NOTE: The techniques shown in this article are valid starting with Delphi 3 or 4 and since Delphi 7 they are deprecated, however, still fully suported by the Delphi IDE.

 

Installation of a Delphi-IDE-Expert

 

Every Delphi-Expert has to be registered in the Windows-Registry. For each Delphi-Version installed on a machine, as well as for each user using the machine, the Delphi-Expert has to be registered separately.

 

In the Registry the Delphi-Expert has to be registered under the folowing key:

 

HKCU\Software\Borland\Delphi\X.0\Experts

 

  

Code:

{

This unit can be compiled into a package and will then appear in the Delphi

Help menu.

}

unit SDCSimpleExpert;

 

interface

 

uses ToolsApi;

 

type

TSDCSimpleExpert = class(TNotifierObject, IOTAMenuWizard, IOTAWizard)

public

function GetIDString: string;

function GetName: string;

function GetState: TWizardState;

procedure Execute;

function GetMenuText: string;

end;

 

procedureRegister;

 

implementation

 

uses Dialogs;

 

procedureRegister;

begin

{register expert}

RegisterPackageWizard(TSDCSimpleExpert.Create);

end;

 

{ TSDCSimpleExpert }

 

procedure TSDCSimpleExpert.Execute;

begin

{code to execute when menu item is clicked}

ShowMessage('Hello SwissDelphiCenter Simple Expert.');

end;

 

function TSDCSimpleExpert.GetIDString: string;

begin

{unique expert identifier}

Result := 'SwissDelphiCenter.SimpleExpert';

end;

 

function TSDCSimpleExpert.GetMenuText: string;

begin

{caption of menu item in help menu}

Result := 'SwissDelphiCenter Simple Expert';

end;

 

function TSDCSimpleExpert.GetName: string;

begin

{name of the expert}

Result := 'SwissDelphiCenter Simple Expert';

end;

 

function TSDCSimpleExpert.GetState: TWizardState;

begin

Result := [wsEnabled];

end;

 

end.

Одной и наиболее сильных сторон среды программирования Delphi является ее открытая архитектура, благодаря которой Delphi допускает своего рода метапрограммирование, позволяя "программировать среду программирования". Такой подход переводит Delphi на качественно новый уровень систем разработки приложений и позволяет встраивать в этот продукт дополнительные инструментальные средства, поддерживающие практически все этапы создания прикладных систем. Столь широкий спектр возможностей открывается благодаря реализованной в Delphi концепции так называемых открытых интерфейсов, являющихся связующим звеном между IDE (Integrated Development Environment) и внешними инструментами. Данная статья посвящена открытым интерфейсам Delphi и представляет собой обзор представляемых ими возможностей.

 

В Delphi определены шесть открытых интерфейсов: Tool Interface, Design Interface, Expert Interface, File Interface, Edit Interface и Version Control Interface. Вряд ли в рамках данной статьи нам удалось бы детально осветить и проиллюстрировать возможности каждого из них. Более основательно разобраться в рассматриваемых вопросах вам помогут исходные тексты Delphi, благо разработчики снабдили их развернутыми комментариями. Объявления классов, представляющих открытые интерфейсы, содержатся в соответствующих модулях в каталоге ...\Delphi\Source\ToolsAPI.