Parâmetro entre forms
Saudações, amigos programadores.
Estou tentando enviar um parâmetro entre dois forms com o seguinte código:
Porém, ele me levanta a seguinte exceção: ´Cannot change Visible in OnShow or OnHide.´
Alguém sabe resolver ou então conhece uma outra maneira de enviar um parâmetro para outro form :?:
Estou tentando enviar um parâmetro entre dois forms com o seguinte código:
with Tform1.Create(self) do begin stringdoTform1 := Self.DatasetCampoDaTabela.AsString; end;
Porém, ele me levanta a seguinte exceção: ´Cannot change Visible in OnShow or OnHide.´
Alguém sabe resolver ou então conhece uma outra maneira de enviar um parâmetro para outro form :?:
Lero
Curtidas 0
Respostas
Nandolh
13/09/2005
Porque vc não reescreve o método create do form que deve receber o parâmetro.
Ex.:
constructor Create(AOwner: TComponent; xDataBase: TSQLConnection;Param: integer); reintroduce; overload;
constructor TfrmCadastroContrato.Create(AOwner: TComponent;
xDataBase: TSQLConnection;Param: integer);
begin
inherited Create(AOwner);
Conexao := xDataBase;
XParam := Param;
end;
Ex.:
constructor Create(AOwner: TComponent; xDataBase: TSQLConnection;Param: integer); reintroduce; overload;
constructor TfrmCadastroContrato.Create(AOwner: TComponent;
xDataBase: TSQLConnection;Param: integer);
begin
inherited Create(AOwner);
Conexao := xDataBase;
XParam := Param;
end;
GOSTEI 0
Lero
13/09/2005
Mas onde eu devo colocar? Eu colokei no form padrão q é pai dos outros forms do projeto, mas ele não aceita qdo eu vou compilar. Dá o erro
Eu colokei no public, depois tentei declarando na classe e dá sempre esse erro. Só pra confirmar o código é
Obrigado
Leomar de Rossi Ferreira
[Error] uLogin.pas(54): There is no overloaded version of ´Create´ that can be called with these arguments
Eu colokei no public, depois tentei declarando na classe e dá sempre esse erro. Só pra confirmar o código é
constructor Create(AOwner: TComponent; User: string); reintroduce; overload;
Obrigado
Leomar de Rossi Ferreira
GOSTEI 0
Massuda
13/09/2005
Eu colokei no form padrão q é pai dos outros forms do projeto...
O que você quer dizer com ´pai´... você herdou seus outros forms desse form padrão ou esse form padrão é o fsMDIForm do seu projeto? Do jeito que você fez só vai funcionar no primeiro caso.GOSTEI 0
Lero
13/09/2005
Boa tarde, Massuda.
Não é MDI, não. É um form pai ´padrão´. Qdo adiciono outro form ao projeto, ao invés de adicionar o form comun do delphi, eu coloco esse q já tem uma programção necessária para todas as telas.
Aí eu tentei implementar esse create nele para utilizar em todos os forms, mas não estou conseguindo.
Não é MDI, não. É um form pai ´padrão´. Qdo adiciono outro form ao projeto, ao invés de adicionar o form comun do delphi, eu coloco esse q já tem uma programção necessária para todas as telas.
Aí eu tentei implementar esse create nele para utilizar em todos os forms, mas não estou conseguindo.
GOSTEI 0
Massuda
13/09/2005
...Qdo adiciono outro form ao projeto, ao invés de adicionar o form comun do delphi, eu coloco esse q já tem uma programção necessária para todas as telas...
Você está criando esses forms filhos usando [b:3b82c2e74d]File|New|seu_projeto[/b:3b82c2e74d]? Nesse caso, você marcou a opção Copy ou Inherit? Só forms filhos criados usando Inherited são realmente derivados do form padrão.GOSTEI 0
Lero
13/09/2005
Eles são inherited.
GOSTEI 0
Massuda
13/09/2005
Relendo o tópico, percebi que você não precisa declarar o overload...
constructor Create(AOwner: TComponent; User: string); reintroduce;
GOSTEI 0
Lero
13/09/2005
Blz. Obrigado, Massuda. Mas eu não entendi pq não pode deixar o overload.
GOSTEI 0