Fórum Owner e E Objetos em Run-Time #319936
25/04/2006
0
2 - Ainda não li a revista clubedelphi nº 72 que fala sobre isso, mas pretendo lê-la essa semana ainda.
3 - Varias duvidas. Vamos lá.
Quando crio um componente, o que colocar no owner? Quando crio formularios coloco como nil (pelo que li aki no forum). E componentes?
Pergunto isso pois tenho uma rotina que busca por esses componentes e dependendo o owner eles nao sao encontrados.
Qual a melhor forma de buscar componentes? Eu crio um TComponente (por ex Acha_Componente)e faço ele receber Formulario.FindComponent(´nome´) depois uso : TButton(Acha_Componente) ... tem uma forma mais correta de fazer isso. Como criar por ex Botao : TButton e fazer uma
busca soh por botoes, pra nao ter que fazer um laço em componentcount?
Se eu der um free em um componente, o free passa para os que estao ligados a ele pelo parent? (tipo um button em um panel).
Se eu crio um TImage, tem como eu dar um load em jpg ou vou ter q usar TJPegImage? e ao contrario?
valeu galera. breve posto mais algumas...
M@gnun
Curtir tópico
+ 0Posts
25/04/2006
M@gnun
valeu.
Gostei + 0
25/04/2006
Massuda
Isso serve para garantir que componentes contidos em um outro componente (o Owner) sejam destruídos junto com o Owner.
[quote:ebefa4d004=´m@gnun´]Pergunto isso pois tenho uma rotina que busca por esses componentes e dependendo o owner eles nao sao encontrados.[/quote:ebefa4d004]O Owner está associado a idéia de um componente que contem outros componentes. Como as rotinas de busca geralmente procuram por um dos componentes contidos em um componente, dependendo do Owner um dado componente pode ou não ser encontrado dentro de outro.
[quote:ebefa4d004=´m@gnun´]Se eu der um free em um componente, o free passa para os que estao ligados a ele pelo parent? (tipo um button em um panel).[/quote:ebefa4d004]O que você quer dizer com ´passa para os que estao ligados a ele pelo parent´?
Note que Parent e Owner são coisas diferentes. Parent está ligado ao conceito da ordem de exibição dos componentes. Um dado componente sempre é exibido em cima do Parent dele.
[quote:ebefa4d004=´m@gnun´]Tem como definir qual componente ficará na frente...[/quote:ebefa4d004]Pelo que escrevi antes, basta ajustar o Parent adequadamente.
Gostei + 0
25/04/2006
Massuda
Gostei + 0
26/04/2006
M@gnun
Quiz dizer: se eu destriuir um componente, seu componente ligado pelo [b:df87e97b9e]parent[/b:df87e97b9e] tambem será destruido? Porque em um projeto antigo eu criava um panel, e nele dois botoes (o owner de todos era o form). Eu apenas destruia o panel e depois criava os tres novamente e nao dava access violation.
Entao, pelo o que vc disse deveria dar erro, não é?
E se os parent deles for o mesmo componente?
No caso do quikreport por ex: Tenho que definir o parent dos qrdbtexts e dos qrdbimages como qrband1, porem o ordem de criação deles pode variar, mas sempre o meu qrdbtext tem que ficar por cima do qrdbimage. Em tempo de projeto, se os componentes tem o mesmo parent, o ultimo a ser criado fica por cima, certo? tem como controlar isso?
valeu.
ps: não sei usar a citação do quote aqui no forum, acho que perceberam. como coloca o nome de quem escreveu no lugar de ´citação:´
Gostei + 0
26/04/2006
Massuda
[quote:3af9359f12=´m@gnun´]pelo o que vc disse deveria dar erro, não é?[/quote:3af9359f12]Não geraria um erro se os componentes ficassem sem serem destruídos, o que aconteceria é que você perderia um pouco de memória cada vez que isso acontecesse. Entretanto, provavelmente o panel e os botões ou tinham um [b:3af9359f12]Owner[/b:3af9359f12] em comum ou o [b:3af9359f12]Owner[/b:3af9359f12] dos botões era o panel, de modo que quando o panel era destruído, automaticamente os botões também eram destruídos.
[quote:3af9359f12=´m@gnun´]E se os parent deles for o mesmo componente? ... o ultimo a ser criado fica por cima, certo? tem como controlar isso?[/quote:3af9359f12]Aí o que define quem fica por cima de quem é a ordem de criação dos componentes, como você mesmo já descobriu. Fora isso, todo componente visual (derivado de TControl) possui os métodos BringToFront e SendToBack e você pode usá-los exatamente como faz na IDE.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)