Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Combobox


Eder

Pergunta

8 respostass a esta questão

Posts Recomendados

  • 0

Oi Eder ... vai ai o codigo

procedure TForm1.Button1Click(Sender: TObject);
begin
   ComboBox1.Items.Append('aaaaaaaaa');  // para adicionar um texto
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   ComboBox1.Items.Delete[ComboBox1.ItemIndex];  // para deletar o texto selecionado
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Ola..Jonas...seguinte....

eu não expliquei direito...

o que eu queria era o seguinte......

fazer um if

procedure TFormRelCidades.ComboLayOutChange(Sender: TObject);
begin
IF COMBOLAYOUT.TEXT = 'LAYOUT-1' THEN
BEGIN
ComboOrdem.Items.Append('CIDADES/PRAÇAS/ESTADOS');
end
else
begin
ComboOrdem.Items.Delete('CIDADES/PRAÇAS/ESTADOS'); 
end;
end;
Caso eu escolha no ComboLayOut = LAYOUT-1 ele adicionada no combo 'CIDADES/PRAÇAS/ESTADOS' senão limpa ou adiciona. Neste caso acima...o codigo:
ComboOrdem.Items.Append('CIDADES/PRAÇAS/ESTADOS');

ele fica duplicando cada vez que o usuario selecionar no ComboLayOut

eu precisaria de algo que não duplicasse....e sim colocasse 'CIDADES/PRAÇAS/ESTADOS' ou não dependendo do IF

não sei se fui claro.

Link para o comentário
Compartilhar em outros sites

  • 0
ele fica duplicando cada vez que o usuario selecionar no ComboLayOut

eu precisaria de algo que não duplicasse....e sim colocasse 'CIDADES/PRAÇAS/ESTADOS' ou não dependendo do IF

voce pode fazer assim para não duplicar

procedure TFormRelCidades.ComboLayOutChange(Sender: TObject);
begin
    IF COMBOLAYOUT.TEXT = 'LAYOUT-1' THEN
       BEGIN
           ComboOrdem.Clear;
           ComboOrdem.Items.Append('CIDADES/PRAÇAS/ESTADOS');
       end
    else
       begin
           ComboOrdem.Items.Delete('CIDADES/PRAÇAS/ESTADOS'); 
       end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Oba..Jonas

Carinha...eu já havia tentado este comando:

ComboOrdem.Clear;
mas ai eu acabo limpando tudo ....e ai não posso tenho outras linhas....que não podem ser apagadas, no caso quero teria que apagar somente a linha que tem: 'CIDADES/PRAÇAS/ESTADOS' em duplicidade. este comando aqui eu também já havia tentando.....não funca:
ComboOrdem.Items.Delete('CIDADES/PRAÇAS/ESTADOS');

erro:

[Error] Unit1.pas(36): Incompatible types: 'Integer' and 'String'

:blush:

Link para o comentário
Compartilhar em outros sites

  • 0

tenta desta maneira

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ComboOrdem: TComboBox;
    Button1: TButton;
    COMBOLAYOUT: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var i , achou : integer;
begin
    achou := 0;
    IF COMBOLAYOUT.TEXT = 'LAYOUT-1' THEN
       begin
           for i := 0 to ComboOrdem.Items.Count-1 do
              begin
                 if ComboOrdem.Items.Strings[i] = 'CIDADES/PRAÇAS/ESTADOS' then
                    achou := achou + 1;
              end;

           if achou = 0 then
              ComboOrdem.Items.Append('CIDADES/PRAÇAS/ESTADOS')
           else
              begin
                 ComboOrdem.Items.Delete(i-1);
                 achou := 0;
              end;
       end;
     ComboOrdem.Text := '';
     ComboOrdem.Refresh;
end;

end.

Modifique se for necessario.. Explicação: se encontrar a palavra 'LAYOUT-1' no edit1, ele faz uma varredura nos itens do combobox... se não existir ele acrescenta ... e se existir ele deleta

abraço

Editado por Jhonas
Link para o comentário
Compartilhar em outros sites

  • 0

Oba...Jonas...

Testei seu código e dava alguns buguezinhos....ele as vezes acaba limpando no comboOrdem items que não deveria....

Então tive uma idéia...até muito simples que deu certo.

Limpei as STrings do ComBoOrdem..e ai coloquei em Run-Time....e deu certinho..

veja como ficou:

procedure TFormRelCidades.ComboLayOutChange(Sender: TObject);
begin
IF COMBOLAYOUT.TEXT = 'LAYOUT-1' THEN
BEGIN
LInforma.Caption:='SEM Separação de Praças e Estados';
ComBoOrdem.Clear;
ComboOrdem.Items[0]:='ESTADOS/PRAÇAS/CIDADES';
ComboOrdem.Items[1]:='PRAÇAS/CIDADES';
end
else
begin
LInforma.Caption:='COM Separação de Praças e Estados';
ComboOrdem.Items[0]:='CIDADES/PRAÇAS/ESTADOS';
ComboOrdem.Items[1]:='ESTADOS/PRAÇAS/CIDADES';
ComboOrdem.Items[2]:='PRAÇAS/CIDADES';
end;
end;

Beleza...carinha valeu...a força.

muito Grato..

t+ :D

Link para o comentário
Compartilhar em outros sites

  • 0

Eder, se a idéia é eliminar o texto com é inserido, experimente:

procedure TFormRelCidades.ComboLayOutChange(Sender: TObject);
begin
  IF COMBOLAYOUT.TEXT = 'LAYOUT-1' THEN
    ComboOrdem.Items.Append('CIDADES/PRAÇAS/ESTADOS');
  else
    ComboOrdem.Items.Delete(ComboOrdem.Items.IndexOf('CIDADES/PRAÇAS/ESTADOS'));
end;

IndexOf, retorna o índice na lista onde está o texto. Caso ele não exista, será retornado -1. Se não me engano, quando é passado um índice meno que zero, não qualquer erro relacionado a "ranger", tipo: "Index out of ranger"

Assim, o exemplo deve funcionar sem problemas... Teste.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Oba...Micheus

testei mas infelizmente...não funca direito...

cada vez que o usuario seleciona no ComboLayout ele insere a linha

ComboOrdem.Items.Append('CIDADES/PRAÇAS/ESTADOS');
ai fica duplicando a mesma linha... a solução melhor que funciona legal é esta que postei......
procedure TFormRelCidades.ComboLayOutChange(Sender: TObject);
begin
IF COMBOLAYOUT.TEXT = 'LAYOUT-1' THEN
BEGIN
LInforma.Caption:='SEM Separação de Praças e Estados';
ComBoOrdem.Clear;
ComboOrdem.Items[0]:='ESTADOS/PRAÇAS/CIDADES';
ComboOrdem.Items[1]:='PRAÇAS/CIDADES';
end
else
begin
LInforma.Caption:='COM Separação de Praças e Estados';
ComboOrdem.Items[0]:='CIDADES/PRAÇAS/ESTADOS';
ComboOrdem.Items[1]:='ESTADOS/PRAÇAS/CIDADES';
ComboOrdem.Items[2]:='PRAÇAS/CIDADES';
end;
end;

mas valeu a dica....

Abraços

:D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...