Fórum Esconder ItemIndex. #291029
07/08/2005
0
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
Curtir tópico
+ 0Posts
07/08/2005
Marco Salles
Acredito que na VCL não...
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
07/08/2005
Lynx
Mas não tem como fugir é assim mesmo
Muito Obrigado Marco Salles! :lol:
Gostei + 0
07/08/2005
Marco Salles
Não sei.. Pode ter sim jeito mais fácil
Não entendi.. 30 o que ????
Gostei + 0
07/08/2005
Lynx
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
07/08/2005
Marco Salles
[b:33480b45ca]30 opções que voce se refere é a quantidade de Items de cada Combobox [/b:33480b45ca]:?: :?: :?:
[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
07/08/2005
Lynx
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
07/08/2005
Lynx
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
07/08/2005
Marco Salles
cmbAtalhoPesquisa.ItemIndex:= -1;
Apenas o esconde , mas se o usuári oclacar na lista ele esta lá....
Gostei + 0
08/08/2005
Lynx
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
08/08/2005
Marco Salles
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
Gostei + 0
08/08/2005
Lynx
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
08/08/2005
Marco Salles
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)