Problemas com o comando case of
Eu desenvolvendo um sistema onde de acordo com o valor na tabela vai ou não habilitar um item no CheckListBox. Exemplo:
case StrToInt(dm.ADOTblProvacod_comp_curric.AsVariant) of
1 : begin
frmCadDtProva.CheckListBoxCompCurric.Checked[0] := True;
end;
end;
Só que eu quero que o valor para entrar em uma condição do case seja dinâmico, para não ficar muito extenso pois de iníco serão 30 condições para verificação no case of. Exemplo:
case StrToInt(dm.ADOTblProvacod_comp_curric.AsVariant) of
[b:046e406601]valorCampoTabela[/b:046e406601] : begin
frmCadDtProva.CheckListBoxCompCurric.Checked[0] := True;
end;
end;
Senão tiver jeito aceito sugestões!!!
case StrToInt(dm.ADOTblProvacod_comp_curric.AsVariant) of
1 : begin
frmCadDtProva.CheckListBoxCompCurric.Checked[0] := True;
end;
end;
Só que eu quero que o valor para entrar em uma condição do case seja dinâmico, para não ficar muito extenso pois de iníco serão 30 condições para verificação no case of. Exemplo:
case StrToInt(dm.ADOTblProvacod_comp_curric.AsVariant) of
[b:046e406601]valorCampoTabela[/b:046e406601] : begin
frmCadDtProva.CheckListBoxCompCurric.Checked[0] := True;
end;
end;
Senão tiver jeito aceito sugestões!!!
Chucky21
Curtidas 0
Respostas
Aroldo Zanela
05/05/2004
Colega,
Fiz um teste aqui e não apresentou nenhum problema, veja:
Fiz um teste aqui e não apresentou nenhum problema, veja:
procedure TForm1.Button1Click(Sender: TObject); var i: variant; begin i := 0; Case i of 0: begin rxCheckListBox1.Checked[0] := true; end; 1: begin end; 2: begin end; end; end;
GOSTEI 0
Beppe
05/05/2004
A expressão, sim, é dinâmica. Já em cada braço do case deve constar uma expressão ordinal, e constante, conhecida em tempo de compilação. Se gostaria diferente, o método genérico para isso é transformar o case em if´s encadeados.
GOSTEI 0
Fabio.hc
05/05/2004
case StrToInt(dm.ADOTblProvacod_comp_curric.AsVariant) of 1 : begin frmCadDtProva.CheckListBoxCompCurric.Checked[0] := True; end; end;
Tente assim:
var indice:integer; begin indice:=dm.ADOTblProvacod_comp_curric.Asinteger - 1; frmCadDtProva.CheckListBoxCompCurric.Checked[indice] := True; end;
GOSTEI 0
Chucky21
05/05/2004
Valeu galera com a ajuda de vocês pude montar a seguinte solução do meu problema:
Valeu a todos!!!
procedure TForm1.BitBtn1Click(Sender: TObject); var indice, I:integer; begin indice:=ADOTable1cod_comp_curric.Asinteger - 1; for i := 0 to CheckListBox1.Count-1 do begin CheckListBox1.Checked[I] := False; CheckListBox1.Checked[indice] := True; end;
Valeu a todos!!!
GOSTEI 0
Emerson Nascimento
05/05/2004
melhore um pouquinho seu código, pois não é necessário atribuir o valor True ao indice selecionado em cada iteração do laço. faça algo como:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i: integer;
begin
    for i := 0 to CheckListBox1.Count-1 do
        CheckListBox1.Checked[I] := False;
    CheckListBox1.Checked[ ADOTable1cod_comp_curric.Asinteger - 1 ] := True; // faz isso uma única vez
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var i: integer;
begin
    for i := 0 to CheckListBox1.Count-1 do
        CheckListBox1.Checked[I] := False;
    CheckListBox1.Checked[ ADOTable1cod_comp_curric.Asinteger - 1 ] := True; // faz isso uma única vez
end;
GOSTEI 0