Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarcielDeg

Criação De Dll + Devexpress

Recommended Posts

Bom dia,

 

Essa é minha primeira postagem no fórum e já trazendo um problema "cabeludo", hehe...

 

Estou enfrentando problemas ao usar os componentes DevExpress em uma DLL. Minha DLL exporta uma função que retorna um TFrame. Se utilizar um componente DevExpress qualquer na DLL, dá erro de Access Violation. Retirando os componentes e adicionando componentes default do Delphi, o erro não ocorre.

 

Estou a dois dias inteiros pesquisando e testando todas as soluções possíveis e nada deu certo... Nem mesmo usando a biblioteca dxGDIPlusAPI, que foi apresentada como solução no fórum da DevExpress.

 

Alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Encontrei o erro. Está na unit cxContainer do DevExpress, em torno da linha 3300, nessa função:

 

procedure TcxContainer.GetTabOrderList(List: TList);
var
 AActiveControl: TWinControl;
begin
 if IsContainerClass then
   inherited GetTabOrderList(List)
 else
 begin
   //Nesta linha ocorre o erro
   AActiveControl := GetParentForm(Self).ActiveControl;

   if (AActiveControl <> Self) and CanFocus and (InnerControl <> nil) and
     (InnerControl = AActiveControl) then
   begin
     List.Add(InnerControl);
     List.Remove(Self);
   end;
 end;
end;

 

A função GetParentForm() retorna nil se Parent não for um TForm. Como minha DLL retorna um frame, todos os componentes dela têm como pai um TFrame. Parece que a DevExpress não preveu essa situação na criação do componente. Ainda não sei a melhor forma de resolver... mas com o problema identificado fica mais fácil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.