Aplicações Multicamadas Camadas

Delphi

01/11/2006

Olá Srs.

Preciso bastante da ajudas de vcs.

Estrou trabalhando a pouco tempo com aplicações em multi camadas e para mim é um mundo novo.

Sempre trabalhei com com funções onde crio desde form e controles até componentes de conexão dinâmicamente.

Isso para mim, quando se trata de aplicações cliente server me ajuda bastante pois ja tenho uma grande biblioteca de funções que fazem ´tudo´ para mim.

Porém agora estou numa grande bronca.

Sei que ao criar uma função no servidor de aplicação a qual vai me retornar uma String para o cliente, basta coloca o tipo da variável de retorno BSTR.

O que eu preciso agora é criar uma função que me retorne do servidor de aplicação um objeto. Para ser mais direto, preciso que essa função me retorne um Form.

Gostaria muito dessa ajuda.

Sem mais

Richardson


Richardsonlourenco

Richardsonlourenco

Curtidas 0

Respostas

Titanius

Titanius

01/11/2006

Tente Retornar um OLE

Exemplo:

function TClassePrincipal.RetornaID(var DataIn: OleVariant): OleVariant;

Assim, você retorna qualquer coisa, desde um Dataset até um Form.

[]s


GOSTEI 0
Richardsonlourenco

Richardsonlourenco

01/11/2006

Não funcionou:

Declarei a seguinte função no server:

[i:39aa67dc0e]function TSrvCirius.Teste: OleVariant;
var
frm: TForm;
begin
frm := TForm.Create( Self );

Result := frm;
end;[/i:39aa67dc0e]

Na hora de compilar ele da o seguinte erro:

[i:39aa67dc0e][Error] uniSrvRDM.pas(678): Incompatible types: ´OleVariant´ and ´TForm´[/i:39aa67dc0e]


GOSTEI 0
Macario

Macario

01/11/2006

Ola.

Um typecast ao passar a variavel para o result nao funcionaria? :roll:


GOSTEI 0
Richardsonlourenco

Richardsonlourenco

01/11/2006

Mais uma vez obrigado pela Resposta:

Porém ainda estou com um probleminha. So cosegui compilar o server dessa forma:

[i:1120858995]function TSrvCirius.Teste: OleVariant;
var
frm: TForm;
begin
frm := TForm.Create( Self );

Result := HResult( frm );
end;[/i:1120858995]

e nem sei se é a correta.... Mas, pelo menos compilou...


agora estou tendo dificulddes com a aplicaÃ?Ã&o cliente na hora de realizar a achamada da funÃ?Ã&o do server. Criei um botÃ&o na aplicaÃ?Ã&o cliente ou estou chamando a funÃ?Ã&o:

[i:1120858995]procedure TfrmCliPrincipal.Button4Click(Sender: TObject);
var
frm: TForm;
begin
frm := frmCliDM.sktConexao.AppServer.Teste;

frm.Show;
end;[/i:1120858995]


ao compilar da o seguinte erro:

[i:1120858995][Error] uniCliPrincipal.pas(147): Incompatible types: ´TForm´ and ´Variant´[/i:1120858995]

ja tentei todo tipo de type cast a n consigo.

Alguém ainda pode me ajudar?


GOSTEI 0
Richardsonlourenco

Richardsonlourenco

01/11/2006

Por favor

Estou precisando urgente!


GOSTEI 0
POSTAR