Fórum Aplicações Multicamadas Camadas #332471

01/11/2006

0

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

Responder

Posts

01/11/2006

Titanius

Tente Retornar um OLE

Exemplo:

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

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

[]s


Responder

Gostei + 0

01/11/2006

Richardsonlourenco

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]


Responder

Gostei + 0

01/11/2006

Macario

Ola.

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


Responder

Gostei + 0

01/11/2006

Richardsonlourenco

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?


Responder

Gostei + 0

02/11/2006

Richardsonlourenco

Por favor

Estou precisando urgente!


Responder

Gostei + 0

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

Aceitar