Fórum Desabilitar alguns itens de um combobox no delphi 10 #552481

27/04/2016

0

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.
Josean

Josean

Responder

Post mais votado

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:
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

Araujo Junior.

Araujo Junior.
Responder

Gostei + 2

Mais Posts

22/05/2016

Josean

Araujo Junior, realmente ficou muito bom carregar a lista no ComboBox em tempo de execução.

Muito obrigado pela sugestão, problema resolvido.
Responder

Gostei + 0

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

Aceitar