Fórum Propriedade TForm em Componente ! #314508
01/03/2006
0
Gostaria de uma pequena ajuda de vcs em relação a criação de componentes. Estou criando um componente que possui uma propriedade Tipo TForm e ao tentar apontar um form para esta propriedade me retorna o erro [b:cdb22f1167]´Invalid Property Value´[/b:cdb22f1167], ja encontrei varios posts aki no forum relacionado a esse problema, mas em nenhum encontrei a solução, existe alguma dica para se declarar Propriedades do tipo TFom ?
Obrigado a Todos.
Mdm
Curtir tópico
+ 0Posts
01/03/2006
Adriano Santos
Gostei + 0
01/03/2006
Mdm
unit component1;
interface
uses
SysUtils, Classes;
type
Tcomponent1 = class(TComponent)
private
{ Private declarations }
FForm : TForm;
procedure SetForm(Value : TForm);
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property Form : TForm read FForm write SetForm;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents(´Samples´, [Tcomponent1]);
end;
{ Tcomponent1 }
procedure Tcomponent1.SetForm(Value: TForm);
begin
if (FForm <> Value) then
FForm := Value;
end;
end.Obrigado novamente
Gostei + 0
01/03/2006
Mdm
Gostei + 0
01/03/2006
Marco Salles
Pode não resolver , mas ja é um começo
Gostei + 0
01/03/2006
Mdm
Espero ajuda dos colegas !
Gostei + 0
02/03/2006
Mdm
desculpem a insistencia amigos !
Gostei + 0
02/03/2006
Marco Salles
O que voce quer dizer como
e como voce faz isto ???
Gostei + 0
02/03/2006
Mdm
O componente ja esta criado ! e uma das propriedade é do tipo TFom, vamos supor que tenho na minha aplicação Form1 e Form2.... eu coloco meu componente no Form1, e adiciono ao uses do Form1 o Form2.com isso se eu for na propriedade do Tipo Tform e clicar nela sera listado para min o Form2, ao selecionalo ocorre o erro ! melhorou ?
Ja encontrei algusm posts aki mas sem solução !
Obrigado pela sua atenção Marco
Gostei + 0
02/03/2006
Adriano Santos
Invalid property value.
MDM pode me passar o componente pra eu dar uma olhada? ou é embaçado???
artes@doiscliques.com
Gostei + 0
02/03/2006
Mdm
estou desde ontem tentando resolver isso ! rs
Obrigado pela atenção de vcs !
Gostei + 0
02/03/2006
Adriano Santos
Blz, tranquilo. Como vc tah fazendo para listar os forms e atualizar a variáveç FForm???? Só não fiz isso, o resto eu fiz e como disse deu o mesmo erro.
Olhei na unit Forms, e lá tem a declaração de uma propriedade do tipo que deseja, mas é uma Interface e não consigo acessar o esquema para criação.
Gostei + 0
02/03/2006
Mdm
procedure setForm(Value : Tform); begin if (FForm <> Value) then FForm <> Value end;
é isso que vc perguntou ? :oops:
Gostei + 0
12/06/2006
Os1000r
voce deve colocar no Create do componente uma atribuição para o form no qual ele esta sendo colocado:
// Declaração da variavel... fForm : TForm; //------------------------------------------------------------------------------ constructor TComponente.Create(AOwner:TComponent); var posCnt, c: integer; begin inherited Create(AOwner); // run mode if not (csDesigning in ComponentState) then begin if (AOwner is TForm) then begin fForm := (AOwner as TForm); fOnShow:= fForm.OnShow; // Salva Eventos originais fOnClose:=fForm.OnClose; fForm.OnShow:=FormShow; // Seta eventos do componente fForm.OnClose:=FormClose; end end else begin // We´re in design mode. if AOwner is TForm then begin fForm := TForm(AOwner); end end; end; // e para a atribuição... //------------------------------------------------------------------------------ procedure TCOmponente.SetForm(value: TForm); begin // if value <> nil then begin if fForm <> value then fForm:=value; end; end; Espero ter ajudado, Abraço
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)