GARANTIR DESCONTO

Fórum Número do Componente no Array de Componentes em DesignTime #273325

21/03/2005

0

Pessoal como eu obtenho o número do componente no array de componentes em tempo de projeto e também como auterá-lo?
Exemplo... tenho um formulário com 20 DBComboBox e gostaria de executar um [b:7362c280de]for[/b:7362c280de] apenas nesses 20 DBComboBox então eu pensei em utilizar dessa forma
for Cont := IndiceDoPrimeiro to IndiceDoUltimo do
  if (Components[Cont] is TDBComboBox) then
    (Components[Cont] as DBComboBox).Enabled := False;
onde IndiceDoPrimeiro seria o indice do primeiro dos 20 DBCombo e IndiceDoUltimo seria o indice do 40 DBCombo...


Bruno Belchior

Bruno Belchior

Responder

Posts

21/03/2005

Marcelo Saviski

Tente o Componente.ComponentIndex, mas isso não é muito garantido, por exemplo

podem haver outros componentes entre os 20 Combos que não seja combos, depende da ordem que vão sendo colocados no form, talvez vc possa alterar o index deles indo em Edit>Creation Order


Responder

Gostei + 0

21/03/2005

Massuda

Porque você não cria um array para agrupar os componentes que você deseja e inicializa esse array no OnCreate do form?


Responder

Gostei + 0

21/03/2005

Bruno Belchior

[quote:76960128b2=´Marcelo Saviski´]Tente o Componente.ComponentIndex, mas isso não é muito garantido, por exemplo

podem haver outros componentes entre os 20 Combos que não seja combos, depende da ordem que vão sendo colocados no form, talvez vc possa alterar o index deles indo em Edit>Creation Order[/quote:76960128b2]já coloquei essa solução... porém como vc disse não é nada garantido, eu queria que tivesse como eu alterar a ordem dos componentes por exemplo tenho um componente DBComo e ele está localizado na posição 15 do array de componentes, gostaria de mudá-lo pra posição 10 em tempo de projeto, pois ai sim eu poderei fazer esse controle tendo plena convicção que não existem componentes indesejados entre os meus...


Responder

Gostei + 0

21/03/2005

Bruno Belchior

[quote:6eda90f7d3=´Marcelo Saviski´]Tente o Componente.ComponentIndex, mas isso não é muito garantido, por exemplo podem haver outros componentes entre os 20 Combos que não seja combos, depende da ordem que vão sendo colocados no form, talvez vc possa alterar o index deles indo em Edit>Creation Order
já coloquei essa solução... porém como vc disse não é nada garantido, eu queria que tivesse como eu alterar a ordem dos componentes por exemplo tenho um componente DBComo e ele está localizado na posição 15 do array de componentes, gostaria de mudá-lo pra posição 10 em tempo de projeto, pois ai sim eu poderei fazer esse controle tendo plena convicção que não existem componentes indesejados entre os meus...[/quote:6eda90f7d3]estive pensando em colocar algo na propriedade [b:6eda90f7d3]Tag[/b:6eda90f7d3] dos componentes e verificar todo o array de componentes do formulário, porém não gostaria de gastar processamento atôa (mesmo sabendo que isso é mínimo para as máquinas atuais)...


Responder

Gostei + 0

21/03/2005

Bruno Belchior

me corrija se estiver errado mas [b:c1b5d67106]Edit->Creation Order[/b:c1b5d67106] é apenas para componentes não visuais!!!?


Responder

Gostei + 0

22/03/2005

Marcelo Saviski

me corrija se estiver errado mas [b:ac41460583]Edit->Creation Order[/b:ac41460583] é apenas para componentes não visuais!!!?


Ops, acho que é, é que eu nunca usei ele, ai não me lembrei, mas pensando, esperimente recortar e colar os combos, para ver se funciona......... talvez eles fiquem com os últimos indices do form, teste que talvez funcione


Responder

Gostei + 0

22/03/2005

Marcio.theis

Porque vc não tenta utiliza o ClassType ??? Com ele vc teria certeza de que somente passaria componentes do tipo selecionado. Tenho um sistema que utiliza bastante a criação de componentes em RunTime e tb a validação do mesmo, e em um dos casos eu valido os CheckBox...

if (Panel.Components[n].ClassType = TCheckBox) then


Responder

Gostei + 0

22/03/2005

Bruno Belchior

[quote:8b91a00d3c=´/]/]@t´]Porque vc não tenta utiliza o ClassType ??? Com ele vc teria certeza de que somente passaria componentes do tipo selecionado. Tenho um sistema que utiliza bastante a criação de componentes em RunTime e tb a validação do mesmo, e em um dos casos eu valido os CheckBox...

if (Panel.Components[n].ClassType = TCheckBox) then[/quote:8b91a00d3c]o problema é que tem componentes do mesmo tipo porém não devem entrar no meu laço...


Responder

Gostei + 0

22/03/2005

Marcio.theis

Estes combo são criados em tempo de execução, ou já esta no form?


Responder

Gostei + 0

22/03/2005

Bruno Belchior

em tempo de execução, fiz uma ´gambiarra´ alterando o valor da propriedade [b:18ea481b34]Tag[/b:18ea481b34] apenas dos componentes que queria alterar, mas fico desperdiçando processamento e usando muito RTTI que é muito pesado...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar