GARANTIR DESCONTO

Fórum Como verificar se uma Lista está vazia (TStringList)? #268300

12/02/2005

0

Boa Tarde Pessoal

Estou com dois erros na rotina abaixo e conto com a ajuda de vocês. Depois de montar uma lista com uma sequencia
de numeros de cheques eu quero que esta lista seja atribuida a um componente COMBOBOX que tenho na tela.
O primeiro erro ocorre porque eu tenho que verificar se a lista não está vazia antes de fazer a atribuição
´DBComboBox2.Items := Lista;´. Como devo fazer para verificar se a lista não está vazia?

O segundo erro ocorre na linha em que adiciono o número do cheque à lista: ´Lista.Add(FormatCurr(´0000000000´, I));´
Sempre que para nesta linha ocorre o erro: ´access violation at address 004E93CE´ e confesso que não entendi porque. Achi que devo usar o evento CREATE para criar a lista certo?

Muito obrigado por qualquer ajuda e abaixo segue a rotina:

procedure TForm_Despesas_Diarias.DBComboBox2Enter(Sender: TObject);
var SeqIni: Integer;
SeqFin: Integer;
I: Integer;
NumChq: String;
Lista: TStringList;
begin
with DataMod.ADOTable_Taloes_Cheques DO
begin
first;
while not eof do
Begin
if (DataMod.ADOTable_Taloes_ChequesChq_Liberado.Value) and
(not DataMod.ADOTable_Taloes_ChequesChq_Encerrado.Value) then
begin
SeqINI := DataMod.ADOTable_Taloes_ChequesChq_Seq_Ini.Asinteger;
SeqFIN := DataMod.ADOTable_Taloes_ChequesChq_Seq_Fin.Asinteger;
For I := SeqINI to SeqFIN do
Lista.Add(FormatCurr(´0000000000´, I));
end;
end;
DBComboBox2.Items := Lista;
end;
end;


Alexsandro

Alexsandro

Responder

Posts

12/02/2005

Alexsandro

Peço desculpa aos moderadores. Não enviei o erro três vezes. Quando eu tentava enviar o Site caia, indicando falha de envio.

Alex


Responder

Gostei + 0

12/02/2005

Massuda

Você não precisa criar uma nova lista, basta usar a lista interna do combobox.

Ao invés de checar se a lista já contem dados, seria mais fácil apagar sempre o conteúdo da lista e recriar o conteúdo.

procedure TForm_Despesas_Diarias.DBComboBox2Enter(Sender: TObject);
var 
  SeqIni: Integer;
  SeqFin: Integer;
  I: Integer;
  NumChq: String;
begin
  // limpa a lista
  DBComboBox2.Items.Clear;

  with DataMod.ADOTable_Taloes_Cheques DO begin
    first;
    while not eof do Begin
      if (DataMod.ADOTable_Taloes_ChequesChq_Liberado.Value) and
        (not DataMod.ADOTable_Taloes_ChequesChq_Encerrado.Value)
        then begin
        SeqINI := DataMod.ADOTable_Taloes_ChequesChq_Seq_Ini.Asinteger;
        SeqFIN := DataMod.ADOTable_Taloes_ChequesChq_Seq_Fin.Asinteger;
        For I := SeqINI to SeqFIN do
          DBComboBox2.Items.Add(FormatCurr(´0000000000´, I));
      end;
    end;
  end;
end;

Bom, se você preferir evitar ficar recriando o conteúdo do combobox, pode testar se o Items do combobox já tem alguma coisa:
if DBComboBox2.Items.Count = 0 then begin
  // lista vazia
end
else begin
  // lista contem alguma coisa
end;



Responder

Gostei + 0

12/02/2005

Alexsandro

Sua idéia é Ótima Massuda...Pura burrice minha criar umas lista desnecessariamente. Fazia 5 anos que eu não trabalhava com o Delphi e estou me relembrando das proprioedades e métodos os objetos..

Valeu...


Responder

Gostei + 0

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

Aceitar