Fórum Editores de Componentes #262852

21/12/2004

0

Pessoal:

Alguem sabe onde o Delphi armazena qual Editor está associado a um componente?

Preciso estender a funcionalidade do TSQLConnection (DBX), mas, se eu derivo de TComponentEditor, perco a funcionalidade que mostra o editor de conexões ao dar duplo-clique, o que eu não quero que aconteça.

Grato a todos,
Buosi.


Buosinet

Buosinet

Responder

Posts

21/12/2004

Luciano_f

Meu colega tem duas formas de você fazer isso:
1º seria voce colocar em sua uses a unit referente ao
´TSQLConnection´ que se encontra no seguinte diretorio
´\Source\Property Editors´ e herdar o seu PropertyEditor.

2º forma e acredito mais facil foi uma procudure que usei em um componente que fiz rescentemente.

O componente que fiz é um ´SQL Builder´ para montar querys complexas de forma simples com o mouse.
o Link do componente é:
http://www.iap.org.br/zbackup/DQBuilder/DQBuilder¬201.02.zip

O codigo que você vai precisar é:

type
TSQLForm_Query = class(TComponentEditor)
public
DefaultEditor: IComponentEditor;
constructor Create(AComponent: TComponent; ADesigner: IDesigner); override;
destructor Destroy; override;
procedure Edit;
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;


constructor TSQLForm_Query.Create(AComponent: TComponent; ADesigner: IDesigner);
type PClass= ^TClass;
var CompClass: TClass;
begin
inherited Create(AComponent, ADesigner);
CompClass := PClass(Acomponent)^;
try
PClass(AComponent)^ := TSQLConnection;
DefaultEditor := GetComponentEditor(AComponent, ADesigner);
finally
PClass(AComponent)^ := CompClass;
end;
end;

destructor TSQLForm_Query.Destroy;
begin
inherited Destroy
end;

procedure TSQLForm_Query.Edit;
begin
EditSQLQuery(TDQBDBXQuery(Component));
end;

procedure TSQLForm_Query.ExecuteVerb(Index: Integer);
begin
if Index < DefaultEditor.GetVerbCount then
DefaultEditor.ExecuteVerb(Index) else
case Index of
1: Edit;
end;
end;


function TSQLForm_Query.GetVerb(Index: Integer): string;
begin
if Index < DefaultEditor.GetVerbCount then
Result := DefaultEditor.GetVerb(Index) else
case Index of
1: Result := ´Visual Query Build´;
end;
end;

function TSQLForm_Query.GetVerbCount: Integer;
begin
Result := DefaultEditor.GetVerbCount + 1;
end;


Um forte abraço.
Luciano França.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar