Esconder ItemIndex.
Boa Noite, tenho 3 combobox...
Os 3 tem os mesmos valores.
Mas eu precisava de algo assim.
Quando selecionar o 1 itemindex, nos outros 2 combobox não pode aparecer o o ItemIndex 1.
Porque o 1 já está selecionado este item.
Na verdade eu não queria comparar e mandar uma showmessage, gostaria de fazer desse modo, sem digitar muita coisa também.
Existe alguma propriedade nesse sentido ?
Obrigado
Os 3 tem os mesmos valores.
Mas eu precisava de algo assim.
Quando selecionar o 1 itemindex, nos outros 2 combobox não pode aparecer o o ItemIndex 1.
Porque o 1 já está selecionado este item.
Na verdade eu não queria comparar e mandar uma showmessage, gostaria de fazer desse modo, sem digitar muita coisa também.
Existe alguma propriedade nesse sentido ?
Obrigado
Lynx
Curtidas 0
Respostas
Marco Salles
07/08/2005
Existe alguma propriedade nesse sentido ?
Acredito que na VCL não...
gostaria de fazer desse modo, sem digitar muita coisa também.
e colar teria algum problema :?: :?: :?:
então faça o seguinte
1)[b:c893bdf6e1]Coloque todos os combobox com a propriedade Sorted como True[/b:c893bdf6e1].. Isto é fundamental
2) Declare tres variáveis do tipo String
var TextoCombobox1:String; TextoCombobox2:String; TextoComboBox3:String;
Logo apos a declaração dessas variáveis escreva os procedimentos abaixo
procedure Acrecestar(Texto:String;var AlterarCombobox1:TCombobox;var AlterarCombobox2:TCombobox); begin AlterarCombobox1.Items.Add(Texto); AlterarCombobox2.Items.Add(Texto); end;
procedure Eliminar(texto:String;var AlterarCombobox1:TCombobox;var AlterarCombobox2:TCombobox); begin AlterarCombobox1.Items.Delete(AlterarCombobox1.Items.IndexOf(Texto)); AlterarCombobox2.Items.Delete(AlterarCombobox2.Items.IndexOf(Texto)); end;
4)No evento onshow copie o código abaixo
procedure TForm1.FormShow(Sender: TObject); begin Combobox1.ItemIndex:=0; Combobox2.ItemIndex:=1; Combobox3.ItemIndex:=2; Combobox1.Items.Delete(Combobox1.Items.IndexOf(Combobox2.Text)); Combobox1.Items.Delete(Combobox1.Items.IndexOf(Combobox3.Text)); Combobox2.Items.Delete(Combobox2.Items.IndexOf(Combobox1.Text)); Combobox2.Items.Delete(Combobox2.Items.IndexOf(Combobox3.Text)); Combobox3.Items.Delete(Combobox3.Items.IndexOf(Combobox1.Text)); Combobox3.Items.Delete(Combobox3.Items.IndexOf(Combobox2.Text)); TextoCombobox1:=Combobox1.Text; TextoCombobox2:=Combobox2.Text; TextoComboBox3:=Combobox3.Text; end;
5)No eventos OnClic de cada combobox Escreva os respectivamente os Métodos para cada OnClick Dos combo..
procedure TForm1.ComboBox1Click(Sender: TObject); begin Acrecestar(TextoCombobox1,Combobox2,Combobox3); TextoCombobox1:=Combobox1.Text; Eliminar(TextoCombobox1,Combobox2,Combobox3); end;
procedure TForm1.ComboBox2Click(Sender: TObject); begin Acrecestar(TextoCombobox2,Combobox1,Combobox3); TextoCombobox2:=Combobox2.Text; Eliminar(TextoCombobox2,Combobox1,Combobox3); end;
procedure TForm1.ComboBox3Click(Sender: TObject); begin Acrecestar(TextoCombobox3,Combobox1,Combobox2); TextoCombobox3:=Combobox3.Text; Eliminar(TextoCombobox3,Combobox1,Combobox2); end;
Acho que estas etapas devem resolver...
GOSTEI 0
Lynx
07/08/2005
Realmente assim funciona, mas imagina umas 30 opções desse modo :lol:
Mas não tem como fugir é assim mesmo
Muito Obrigado Marco Salles! :lol:
Mas não tem como fugir é assim mesmo
Muito Obrigado Marco Salles! :lol:
GOSTEI 0
Marco Salles
07/08/2005
Realmente assim funciona,
Mas não tem como fugir é assim mesmo
Não sei.. Pode ter sim jeito mais fácil
mas imagina umas 30 opções desse modo
Não entendi.. 30 o que ????
GOSTEI 0
Lynx
07/08/2005
Desculpe não expliquei direito...
Tem 30 opcões dessas...
Não 30 edits..
Sao 30 opções , cada uma delas com 3 combobox diferentes...
Mas para não complicar isso vou fazer de uma maneira mais prática.
Quando selecionar algo igual vou apagar o outro combobox (itemindex-1).
Fica mais prático para fazer.
Mesmo assim Muito Obrigado Marco Salles.
Tem 30 opcões dessas...
Não 30 edits..
Sao 30 opções , cada uma delas com 3 combobox diferentes...
Mas para não complicar isso vou fazer de uma maneira mais prática.
Quando selecionar algo igual vou apagar o outro combobox (itemindex-1).
Fica mais prático para fazer.
Mesmo assim Muito Obrigado Marco Salles.
GOSTEI 0
Marco Salles
07/08/2005
Desculpe não expliquei direito...
Tem 30 opcões dessas...
[b:33480b45ca]30 opções que voce se refere é a quantidade de Items de cada Combobox [/b:33480b45ca]:?: :?: :?:
Mas para não complicar isso vou fazer de uma maneira mais prática.
Quando selecionar algo igual vou apagar o outro combobox (itemindex-1).
[color=darkblue:33480b45ca][b:33480b45ca]coloque esta maneira detalhada para gente amigo é bom que a gente aprende ,
é sempre bom ver outras idéias... [/b:33480b45ca][/color:33480b45ca]
GOSTEI 0
Lynx
07/08/2005
ini:= TIniFile.Create(ExtractFilePath(Application.ExeName)+´config.ini´);
if cmbAtalhoCadastro.ItemIndex = cmbAtalhoPesquisa.ItemIndex then
begin
cmbAtalhoPesquisa.ItemIndex:= -1;
Try
ini.WriteInteger(´Atalhos´,´cadastro´,cmbAtalhoCadastro.ItemIndex);
ini.WriteString(´Atalhos´, ´pesquisa´, ´´);
Finally
ini.Free;
end;
end
else
begin
Try
ini.WriteInteger(´Atalhos´, ´cadastro´, cmbAtalhoCadastro.ItemIndex);
Finally
ini.Free;
end;
end;
Quando seleciono o combobox, eu coloco o ItemIndex em um arquivo .ini. Mas quando selecionar um que já existe, o combobox que já existe eu deixo o itemindex -1, e gravo uma string vazia no arquivo .ini A Mesma lógica vou fazer com o resto. Valeu
GOSTEI 0
Lynx
07/08/2005
Desculpe postei troquei as bolas no post acima.
Quando seleciono o combobox, eu coloco o ItemIndex em um arquivo .ini.
Mas quando selecionar um que já existe, o combobox que já existe eu deixo o itemindex -1, e gravo uma string vazia no arquivo .ini
A Mesma lógica vou fazer com o resto.
Valeu
Quando seleciono o combobox, eu coloco o ItemIndex em um arquivo .ini.
Mas quando selecionar um que já existe, o combobox que já existe eu deixo o itemindex -1, e gravo uma string vazia no arquivo .ini
A Mesma lógica vou fazer com o resto.
Valeu
ini:= TIniFile.Create(ExtractFilePath(Application.ExeName)+´config.ini´); if cmbAtalhoCadastro.ItemIndex = cmbAtalhoPesquisa.ItemIndex then begin cmbAtalhoPesquisa.ItemIndex:= -1; Try ini.WriteInteger(´Atalhos´,´cadastro´,cmbAtalhoCadastro.ItemIndex); ini.WriteString(´Atalhos´, ´pesquisa´, ´´); Finally ini.Free; end; end else begin Try ini.WriteInteger(´Atalhos´, ´cadastro´, cmbAtalhoCadastro.ItemIndex); Finally ini.Free; end; end;
GOSTEI 0
Marco Salles
07/08/2005
Mas isto somente não o faz sumrir da lista suspensa do comboBox :cry: :cry:
Apenas o esconde , mas se o usuári oclacar na lista ele esta lá....
cmbAtalhoPesquisa.ItemIndex:= -1;
Apenas o esconde , mas se o usuári oclacar na lista ele esta lá....
GOSTEI 0
Lynx
07/08/2005
realmente ele vai estar, mas quando o usuário escolher o mesmo valor, em outro combobox novamente vai sumir.
Ou seja nunca vai conseguir selecionar os 2, porque eu coloco esse código no outro combobox também.
Fica assim:
cmbatalhocadastro
cmbpesquisa
Ou seja nunca vai conseguir selecionar os 2, porque eu coloco esse código no outro combobox também.
Fica assim:
cmbatalhocadastro
ini:= TIniFile.Create(ExtractFilePath(Application.ExeName)+´config.ini´); if cmbAtalhoCadastro.ItemIndex = cmbAtalhoPesquisa.ItemIndex then begin cmbAtalhoPesquisa.ItemIndex:= -1; Try ini.WriteInteger(´Atalhos´,´cadastro´,cmbAtalhoCadastro.ItemIndex); ini.WriteString(´Atalhos´, ´pesquisa´, ´´); Finally ini.Free; end; end else begin Try ini.WriteInteger(´Atalhos´, ´cadastro´, cmbAtalhoCadastro.ItemIndex); Finally ini.Free; end; end;
cmbpesquisa
ini:= TIniFile.Create(ExtractFilePath(Application.ExeName)+´config.ini´); if cmbAtalhoPesquisa.ItemIndex = cmbAtalhoCadastro.ItemIndex then begin cmbAtalhoCadastro.ItemIndex:= -1; Try ini.WriteInteger(´Atalhos´,´pesquisa´,cmbAtalhoPesquisa.ItemIndex); ini.WriteString(´Atalhos´, ´cadastro´, ´´); Finally ini.Free; end; end else begin Try ini.WriteInteger(´Atalhos´, ´pesquisa´, cmbAtalhoPesquisa.ItemIndex); Finally ini.Free; end; end;
GOSTEI 0
Marco Salles
07/08/2005
Veja , parece que são duas coisas.. Voce iniciou o tópico com um pedido
e se deu por satisfeito simplesmente como isto
Veja que são duas coisas [b:77b43e1fa5]distintas[/b:77b43e1fa5] , apesar que a segunda opção resolve o seu problema...
É claro que se voce inicialmente coloca-se que o item poderia estar nos outros combobox , e o problema fosse so seleção , eu não lhe sugeria o codigo inicial.. No mais é isto ai
Quando selecionar o 1 itemindex, nos outros 2 combobox não pode aparecer o o ItemIndex 1.
e se deu por satisfeito simplesmente como isto
realmente ele (´o Item ´) vai estar mas nunca vou conseguir seleciona-lo
Veja que são duas coisas [b:77b43e1fa5]distintas[/b:77b43e1fa5] , apesar que a segunda opção resolve o seu problema...
É claro que se voce inicialmente coloca-se que o item poderia estar nos outros combobox , e o problema fosse so seleção , eu não lhe sugeria o codigo inicial.. No mais é isto ai
GOSTEI 0
Lynx
07/08/2005
realmente eu comecei o tópico com uma coisa, e terminei com outra.
Mas veja bem, o meu objetivo é não conseguir selecionar 2 combobox, com os mesmos valores.
A Sua resposta no primeiro post, foi totalmente certa, porém no decorrer do caminho, eu percebi que fazendo, simplesme isso eu já consegueria chegar no meu objetivo final (De 2 combobox não ter os mesmos valores).
E da primeira maneira eu também precisaria adaptar para gravar em um arquivo .ini.
Ficaria muito bonito o visual, porém vai dar um pouco mais de trabalho.
Como é díficil se expressar por um fórum o que realmente eu precisaria (Achei que tinha alguma propriedade) fica aqui o meu pedido de desculpas, e meu muito Obrigado, porque resolvi o que precisava, e com certeza você me ajudou.
Valeu
Mas veja bem, o meu objetivo é não conseguir selecionar 2 combobox, com os mesmos valores.
A Sua resposta no primeiro post, foi totalmente certa, porém no decorrer do caminho, eu percebi que fazendo, simplesme isso eu já consegueria chegar no meu objetivo final (De 2 combobox não ter os mesmos valores).
E da primeira maneira eu também precisaria adaptar para gravar em um arquivo .ini.
Ficaria muito bonito o visual, porém vai dar um pouco mais de trabalho.
Como é díficil se expressar por um fórum o que realmente eu precisaria (Achei que tinha alguma propriedade) fica aqui o meu pedido de desculpas, e meu muito Obrigado, porque resolvi o que precisava, e com certeza você me ajudou.
Valeu
GOSTEI 0
Marco Salles
07/08/2005
Show de bola.. Sigamos adiante...
GOSTEI 0