List index out of bounds (4)

Delphi

11/04/2012

Estou utilizando 4 sListBox1,2,3,4

E fiz um código que o botão só ativa, caso todos os 4 estejam com pelo menos 1 item de cada selecionado:
Mesmo assim o botão não ativou, e gera-me este erro antes mesmo do programa abrir!

procedure TForm2.FormCreate(Sender: TObject);
begin
sBitBtn1.Enabled := False;
//Se selecionar de cada lista um item, ative o botao
if (sListBox1.Selected[1] = True)or(sListBox1.Selected[2] = True)or(sListBox1.Selected[3] = True)or(sListBox1.Selected[4] = True)and(sListBox2.Selected[1] = True)or(sListBox2.Selected[2] = True)or(sListBox2.Selected[3] = True)and(sListBox3.Selected[1] = True)or(sListBox3.Selected[2] = True)or(sListBox3.Selected[3] = True)or(sListBox3.Selected[4] = True)and(sListBox4.Selected[1] = True)or(sListBox4.Selected[2] = True) then
  begin
    sBitBtn1.Enabled := True;
  end;
end;
Jhonnatas F

Jhonnatas F

Curtidas 0

Respostas

Jhonnatas F

Jhonnatas F

11/04/2012

Descobri o erro:

Quer dizer que o classificador [4] não existe, por tem 4 itens dentro de uma lista, eu comecei o index com [1] e o correto de inicio é com [0] e só vai até [3] e não [4].

rsrs, mas agora o problema é que o botão não quer ativar! O que há de errado?
GOSTEI 0
Bruno Leandro

Bruno Leandro

11/04/2012

olá boa tarde, veja se assim é o desejado

procedure TForm2.FormCreate(Sender: TObject);
begin
sBitBtn1.Enabled := False;
//Se selecionar de cada lista um item, ative o botao
if ( sListBox1.ItemIndex > -1 ) and ( sListBox2.ItemIndex > -1 ) and ( sListBox3.ItemIndex > -1 ) and ( sListBox4.ItemIndex > -1 ) then
begin
sBitBtn1.Enabled := True;
end;
end;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

11/04/2012

Pra resumir mais ainda, dá pra fazer;
  sBitBtn1.Enabled := (( sListBox1.ItemIndex > -1 ) and ( sListBox2.ItemIndex > -1 ) and ( sListBox3.ItemIndex > -1 ) and ( sListBox4.ItemIndex > -1));


Boa sorte.
GOSTEI 0
Jhonnatas F

Jhonnatas F

11/04/2012

Obrigado!
GOSTEI 0
Jhonnatas F

Jhonnatas F

11/04/2012

Vish, o Botão ainda persiste em ficar desativado mesmo com as listas selecionadas:
http://i42.tinypic.com/4lhwg7.jpg
GOSTEI 0
Bruno Leandro

Bruno Leandro

11/04/2012

talvez seja o local que voce esta utilizando esta condição, me parece que voce colocou no oncreate, nesse momente ainda nao vai haver nenhuma opção marcada, tente criar um onchange no listview e faz com que os quatro listview execute esta condição
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

11/04/2012

Pra facilitar, você seleciona os 4 ListBox de uma vez, e no Object Inspector, ativa o evento onChenge.

Boa sorte.
GOSTEI 0
Jhonnatas F

Jhonnatas F

11/04/2012

Como faço isso? E insiro o que no OnChange?
GOSTEI 0
POSTAR