CheckListBox (recuperando itens)
13/06/2008
0
campos da tabela: dia_0, dia_1, dia_2, dia_3, dia_4, dia_5, dia_6 = Char
Nessa tabela só tem (e só pode ter) um Unico registro, sendo assim eu dou um First nela para posicionar no primeiro registro e recuperar as informaçoes no CheckListBox da seguinte maneira:
for I := 0 to clbSemana.Items.Count - 1 do begin //showmessage(DM.cdsAgenda.FieldByName(´DIA_´ + inttostr(i)).AsString); if DM.cdsAgenda.FieldByName(´DIA_´ + inttostr(i)).AsString = ´S´ then begin clbSemana.Checked[i] := true; end else begin clbSemana.Checked[i] := false; end; end;
o Showmessage ali no código recupera exatamente as informaçoes que estao na tabela(algumas tem a letra ´S´), porém meu chekLisBox nao checa os itens...
Ps: CheckListBox tem apenas 7 itens
alguem poderia me dar uma mão?
Valeu!
Mahdak
Posts
13/06/2008
Emerson Nascimento
var i: byte; begin for I := 0 to clbSemana.Items.Count - 1 do clbSemana.Checked[i] := (DM.cdsAgenda.FieldByName(´DIA_´ + inttostr(i)).AsString = ´S´); end;
veja se não há alguma outra rotina que desmarca os itens.
13/06/2008
Mahdak
vou colocar o código completo aqui... se voce ou alguem mais puder me dar uma luz....
valeu!!!
segue o código abaixo:
var i:byte; begin DM.Conexao.Open; try with DM.cdsAgenda do begin Close; Params[1].AsString := ´¬´; Open; First; end; if DM.cdsAgendaLOCAL_BKP.AsString = ´CD´ then begin rg.ItemIndex := 0; edtBkp.Enabled := false; btnBkp.Enabled := false; end else if DM.cdsAgendaLOCAL_BKP.AsString = ´HD´ then begin rg.ItemIndex := 1; edtBkp.Enabled := true; btnBkp.Enabled := true; end; //todo: nao está checando os itens for I := 0 to clbSemana.Items.Count - 1 do begin clbSemana.Checked[i] := (DM.cdsAgenda.FieldByName(´DIA_´ + inttostr(i)).AsString = ´S´); end; for I := 0 to clbHorarios.Items.Count - 1 do begin if DM.cdsAgenda.FieldByName(inttostr(i) +´:00´).AsString = ´S´ then begin clbHorarios.Checked[i] := true; end else begin clbHorarios.Checked[i] := false; end; end; finally DM.Conexao.Close; end; end;
14/06/2008
Emerson Nascimento
var i:byte; begin DM.Conexao.Open; try with DM.cdsAgenda do begin Close; Params[1].AsString := ´¬´; Open; end; edtBkp.Enabled := DM.cdsAgendaLOCAL_BKP.AsString = ´HD´; btnBkp.Enabled := edtBkp.Enabled; rg.ItemIndex := btnBkp.Enabled; //todo: nao está checando os itens for I := 0 to clbSemana.Items.Count - 1 do clbSemana.Checked[i] := (DM.cdsAgenda.FieldByName(´DIA_´ + inttostr(i)).AsString = ´S´); for I := 0 to clbHorarios.Items.Count - 1 do clbHorarios.Checked[i] := (DM.cdsAgenda.FieldByName(inttostr(i) +´:00´).AsString = ´S´); finally DM.Conexao.Close; end; end;
mas os valores estão gravados corretamente nos campos Dia_[i:7909c7ff08]X[/i:7909c7ff08]?
é possível você fornecer um programa reduzido e com os dados? assim poderemos testar de forma mais eficiente.
(o código que eu te passei acima é exatamente o mesmo que você publicou. somente foi simplificado, então não deve fazer diferença na execução, visto que você afirma que não funcionou)
30/06/2008
Mahdak
tudo resolvido agora
valeu pela força!
Clique aqui para fazer login e interagir na Comunidade :)