Ir para conteúdo

POWERED BY:

Arquivado

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

Adriana Couto

ActiveX

Recommended Posts

Olá!!! Bom dia!!! Criei um controle ActiveX (COM+) onde tenho definida uma função com 3 parâmetros, onde dois são do tipo string e um é do tipo ponteiro, porém o terceiro parâmetro referencia uma função (ponteiro de função).O que ocorre é que o terceiro parâmetro está gerando uma excessão no Delphi devido ao tipo definido não estar correto. Qual seria o tipo correto a ser usado para passar ponteiros de funções em controles ActiveX ?Obrigada Adriana S. Couto

Compartilhar este post


Link para o post
Compartilhar em outros sites

você têm a mensagem de erro que é gerada ?

Então, acontece o seguinte: temos uma aplicação escrita em XHarbour que carrega um ActiveX escrito em Delphi...No xHarbour definimos um método... e o ponteiro deste método será passado para o controle ActiveX para que dentro do Delphi possamos ligar este médoto a um evento!O problema é que não estamos conseguindo definir um tipo válido para ponteiro com as opções que exitem na Type Library.O ideal seria um ponteiro não tipado ou então precisamos achar qual o tipo correto a ser usado para passar ponteiros de funções em controles ActiveX ?Adriana Couto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode passar o código:???para que possamos analisar???e ver se encontramos uma solução!!!

Eu agradeço a atenção Hugo... Infelizmente não posso passar o código, pois é de propriedade da empresa. Mas de qualquer forma muito obrigada.Drika

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza... vou escrever um exemplo do caso... o código que está aí não contém regras de negócio...

 

Em xHarbour   ///////////////////////////////////   FUNCTION trataevento( obj, sender )   ///////////////////////////////////   return   /////////////////////////////////////////////////////   FUNCTION MainWndProc( hWnd, message, wParam, lParam )   /////////////////////////////////////////////////////   oControl:LigaEvento( "edtCodigoForn", "change", @trataevento() )     RETURN DefWindowProc( hWnd, message, wParam, lParam )Em Delphi   Type	  IActiveFormX = interface(IDispatch)		 procedure LigaEvento(const Componente: WideString; const Evento: WideString; Metodo: Double); safecall; 	  End;	  TActiveFormX = class(TActiveForm, IActiveFormX)		 procedure LigaEvento( const Componente, Evento: WideString; Metodo: Pointer );	  end;   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   procedure TActiveFormX.LigaEvento( const Componente, Evento: WideString;														  Metodo: AquiPrecisariaSerPonteiroNaoTipado_Pointer );   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   var	  i  : integer;	  evt: string;	  mtd: TNotifyEvent;   begin	  mtd:= TNotifyEvent(Metodo);   	  evt:=LowerCase(Evento);  	  for i:=0 to Pred(ComponentCount) do begin		 if LowerCase(Components[i].Name)=LowerCase(Componente) then begin			if evt = 'change' then			   TEdit(Components[i]).OnChange:=mtd			else if evt = 'click' then			   TEdit(Components[i]).OnClick:=mtd			else if evt = 'enter' then			   TEdit(Components[i]).OnEnter:=mtd			else if evt = 'exit' then			   TEdit(Components[i]).OnExit:=mtd;			break;		 end;	  end;   end;
Não sei se está claro... qualquer dúvida pode perguntar...

O parâmetro 'Metodo' de 'LigaEvento', foi criado na Type Library do Delphi, o 'type' de 'Metodo' teria que ser um ponteiro não tipado, ou seja Metodo: Pointer. Mas dentro das opções predefinidas isso não existe.

Esse seria o modo ideal de tratar a situação, mas se houver alguma outra idéia que resolva o caso, que seja bem-vinda!!! rsrsrs...

Desde já muito obrigada pela atenção!!!!

 

 

Drika

Compartilhar este post


Link para o post
Compartilhar em outros sites

se ele for do tipo TBookmark??var x : TBookmark;sei lá....não entendi muito bem, mas quando quero usar ponteiros eu uso assim...ai dou o GetBookmark e o GotoBookmark...

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.