Desabilitar alguns itens de um combobox no delphi 10
Bom dia!
Eu tenho um groupbox com 8 button, e tenho um combobox com vários itens.
O que eu gostaria de fazer é que quando selecionasse um button do groupbox so ficasse ativo ou selecionável apenas alguns dos itens do combobox. Isso é para diminuir a quantidade de itens a ser analisado quando eu selecionar um dos buttons.
Desde já agradeço.
Eu tenho um groupbox com 8 button, e tenho um combobox com vários itens.
O que eu gostaria de fazer é que quando selecionasse um button do groupbox so ficasse ativo ou selecionável apenas alguns dos itens do combobox. Isso é para diminuir a quantidade de itens a ser analisado quando eu selecionar um dos buttons.
Desde já agradeço.
Josean
Curtidas 0
Melhor post
Araujo Junior.
27/04/2016
Ao invés de ficarem inativos de acordo com o botão que seu usuário clicar não seria melhor alimentar as opções do combobox em tempo de execução? Ficaria até melhor para seu usuario identificar as opções disponiveis. Com o código abaixo voce pode Adicionar as informações em runtime:
Caso queira realmente desabilitar voce precisa do seguinte:
No botão:
No OnChange do ComboBox1
Sds
begin
ComboBox1.Text := '';
ComboBox1.Items.Clear;
ComboBox1.Items.Add('Opção 1');
ComboBox1.Items.Add('Opção 2');
ComboBox1.Items.Add('Opção 3');
end;
Caso queira realmente desabilitar voce precisa do seguinte:
procedure SetDisabledItem(AComboBox: TComboBox; AIndex: Integer; AValue: Boolean);
begin
if not Assigned(AComboBox) then Exit;
if AIndex < AComboBox.Items.Count then begin
if AValue then begin
if Integer(AComboBox.Items.Objects[AIndex]) = 0 then begin
if AIndex = AComboBox.ItemIndex then
AComboBox.Tag := -1;
AComboBox.Items.Objects[AIndex] := Pointer(1);
AComboBox.Items[AIndex] := '['+AComboBox.Items[AIndex]+']';
end;
end else begin
if Integer(AComboBox.Items.Objects[AIndex]) <> 0 then begin
AComboBox.Items.Objects[AIndex] := nil;
AComboBox.Items[AIndex] := Copy(AComboBox.Items[AIndex], 2, Length(AComboBox.Items[AIndex])-2);
end;
end;
end;
end;No botão:
SetDisabledItem(ComboBox1, 2, True);
No OnChange do ComboBox1
with TComboBox(Sender) do begin
if Integer(Items.Objects[ItemIndex]) <> 0 then begin
ItemIndex := Tag;
end else begin
Tag := ItemIndex;
end;
end;Sds
GOSTEI 2
Mais Respostas
Josean
27/04/2016
Araujo Junior, realmente ficou muito bom carregar a lista no ComboBox em tempo de execução.
Muito obrigado pela sugestão, problema resolvido.
Muito obrigado pela sugestão, problema resolvido.
GOSTEI 0