Como verificar se uma Lista está vazia (TStringList)?
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;
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
Curtidas 0
Respostas
Alexsandro
12/02/2005
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
Alex
GOSTEI 0
Massuda
12/02/2005
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.
Bom, se você preferir evitar ficar recriando o conteúdo do combobox, pode testar se o Items do combobox já tem alguma coisa:
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;
GOSTEI 0
Alexsandro
12/02/2005
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...
Valeu...
GOSTEI 0