Aplicações Multicamadas Camadas
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
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
Curtidas 0
Respostas
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
Exemplo:
function TClassePrincipal.RetornaID(var DataIn: OleVariant): OleVariant;
Assim, você retorna qualquer coisa, desde um Dataset até um Form.
[]s
GOSTEI 0
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]
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
01/11/2006
Ola.
Um typecast ao passar a variavel para o result nao funcionaria? :roll:
Um typecast ao passar a variavel para o result nao funcionaria? :roll:
GOSTEI 0
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?
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
01/11/2006
Por favor
Estou precisando urgente!
Estou precisando urgente!
GOSTEI 0