Erro com Parent
Tenho um metodo onde faço a impressao de pedidos, neste momento preciso imprimir um campo memo, entao como utilizo esse metodo em varios forms, crio um memo em tempo de execucao da seguinte maneira:
[CODE]
var
Observ: TMemo;
begin
Observ := TMemo.Create(Self);
Observ.Visible := False;
Observ.Width := 520;
Observ.Parent := FPedidos; Observ.Text := CdsPedidosOBSER.Value;
for lx := 0 to Observ.Lines.Count - 1 do
begin
RDprint.Imp(lin,010,Observ.Lines[lx]);
Inc(lin);
end;
[CODE] O problema aparece quando chamo esse metodo de outro form, retorna o seguinte erro control has no parent window, pq estou colocando o Parent do form principal, como faço entao para conseguir chamar esse metodo de outro forms, imagino que alterando a propriedade Parent ? Mas como ? Abs
begin
Observ := TMemo.Create(Self);
Observ.Visible := False;
Observ.Width := 520;
Observ.Parent := FPedidos; Observ.Text := CdsPedidosOBSER.Value;
for lx := 0 to Observ.Lines.Count - 1 do
begin
RDprint.Imp(lin,010,Observ.Lines[lx]);
Inc(lin);
end;
[CODE] O problema aparece quando chamo esse metodo de outro form, retorna o seguinte erro control has no parent window, pq estou colocando o Parent do form principal, como faço entao para conseguir chamar esse metodo de outro forms, imagino que alterando a propriedade Parent ? Mas como ? Abs
Felipe Ip
Curtidas 0
Respostas
Wilson Junior
16/09/2010
procedure Imprimir_Memo(MyParent: TWinControl); var Observ: TMemo; begin Observ := TMemo.Create( MyParent ); try Observ.Visible := False; Observ.Width := 520; Observ.Parent := MyParent; Observ.Text := CdsPedidosOBSER.Value; for lx := 0 to Observ.Lines.Count - 1 do begin RDprint.Imp( lin, 010, Observ.Lines[lx] ); Inc( lin ); end; finally FreeAndNil( Observ ); end; end; Imprimir_Memo( Meu_TForm )
Espero ter colaborado.
GOSTEI 0
Eriley Barbosa
16/09/2010
var
Observ: TMemo;
begin
Observ := TMemo.Create(Self);
Observ.Visible := False;
Observ.Width := 520;
Observ.Parent := Screen.ActiveForm.Name; Observ.Text := CdsPedidosOBSER.Value;
for lx := 0 to Observ.Lines.Count - 1 do
begin
RDprint.Imp(lin,010,Observ.Lines[lx]);
Inc(lin);
end;
begin
Observ := TMemo.Create(Self);
Observ.Visible := False;
Observ.Width := 520;
Observ.Parent := Screen.ActiveForm.Name; Observ.Text := CdsPedidosOBSER.Value;
for lx := 0 to Observ.Lines.Count - 1 do
begin
RDprint.Imp(lin,010,Observ.Lines[lx]);
Inc(lin);
end;
GOSTEI 0
Felipe Ip
16/09/2010
Nao deu certo nenhuma das duas, mas deixe eu colocar como estou criando esse metodo:
procedure TFPedidos.CabecalhoOrcamento(Sender: TObject; Pagina: Integer);
Como estou usando o rdprint e preciso do numero da pagina que ele gera, preciso criar o metodo dessa maneira.
Na segunda opcao do amigo ERILEY, a propriedade NAME da Screen.ActiveForm, nao estava disponivel, ai testei com PARENT, mas o erro continuou.
Obrigado
GOSTEI 0
Eriley Barbosa
16/09/2010
Testei da seguinte forma e funcionou:
Observ.Parent := Screen.ActiveForm;
GOSTEI 0