Fórum Como bloquear duplicações de textos no aplicativo #330441
30/09/2006
0
Estou desenvolvendo um pequeno sistema que tem a finalidade de simular lógica de programação, onde o usário irá marcar em cada edit apenas uma letra. Só que preciso criar uma codificação impedindo que a mesma letra seja inserida em outro campo caso já exista. Seria efetuado um bloqueio através de uma caixa de mensagem informando que a letra estaria já sendo utilizada no formulário.
Preciso concluir este projeto e falta apenas de imediato esta função. Os colegas que puderem ajudar-me, agradeceria muito.
Abraços a todos!
Tekmicro
Curtir tópico
+ 0Posts
01/10/2006
Paullsoftware
Gostei + 0
01/10/2006
Tekmicro
Veja como é a lógica que preciso aqui:
Num determinado formulário, tenho 6 Edits, e cada Edit irá receber uma letra apenas, correspondente com o que o usuário achar necessário baseando queestou desenvolvendo um Simulador para Lógica de Programação, compreendeu?
Portanto, vamos supor que no primeiro Edit irá receber a letra [b:0dc9910698]A[/b:0dc9910698] neste caso os demais Edits não poderá duplicar esta letra já que existe, devendo emitir um bloqueio e um aviso de que a letra inserida já existe!
Não encontrei ainda uma forma correta para fazer isto. Estou pesquisando, e agradeceria aos demais colegas Delphianos e Delphianas, se tiverem como implementar isto no meu formulário, agradeceria imensamente. :wink:
Abraços a todos!
Gostei + 0
01/10/2006
Marco Salles
coloque uma lista
var Lista : TStringList;
crie
procedure TForm1.FormShow(Sender: TObject); begin lista:=TstringList.Create; end;
Destrua
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin lista.Free; end;
Coloque todos os edits compartilhando o mesmo manipulador de eventos
procedure TForm1.KeyPressParaTodosOsEdits(Sender: TObject; var Key: Char); begin if (Key <> #8)and(lista.IndexOf(key) < 0) Then lista.Add(key) else if Key = 8 Then begin if (Tedit(sender).text) <> ´´ then lista.Delete( lista.IndexOf(Tedit(sender).text)); end else Key:=#0; end;
é só...
P:s ... este método considera maiscula = minuscula ... Isto não é coisa ´minha´ é devido as caracteristicas do StringList
Mas pode-se estender a idéia facilmente caso isto seje um impencilho
Gostei + 0
01/10/2006
Tekmicro
Obrigado!
Gostei + 0
02/10/2006
Marco Salles
???????... Antes de postar eu tenho como regra efetuar um teste ????
Voce fez isto :
[b:945da44999]Coloque todos os edits compartilhando o mesmo manipulador de eventos[/b:945da44999]
Gostei + 0
02/10/2006
Tekmicro
Veja a imagem do formulário para que possa ter uma idéia do que necessito.
[img:e3a3a4a955]http://www.tekmicro.info/exemplo.gif[/img:e3a3a4a955]
Um grande abraço e obirgado!
Gostei + 0
02/10/2006
Marco Salles
to vendo...To vendo tb que o primeiro edit parece que tem um vazio + o caracter ´a´ ..
´ a´ <> ´a´
[b:b9cf9056a8]voce colocou o maxlength dos edit = 1 ?????[/b:b9cf9056a8]
esqueça um pouco o seu projeto incial... Talves eu não tenha entendido direito..
post o resultado...
Gostei + 0
02/10/2006
Tekmicro
Obrigado mais uma vez pela atenção!
Gostei + 0
02/10/2006
Tekmicro
Obrigado!
Gostei + 0
02/10/2006
Marco Salles
o que quero dizer com compartilhados é com relação ao evento KeyPressParaTodosOsEdits... [b:b6fe6852e6]que todos os edits compartilhem o mesmo evento...[/b:b6fe6852e6] e so no objeto inspector desses edits escolher este evento com sendo o evento que sera executado ao pressionar uma tecla sobre o Edit
[b:b6fe6852e6]isto é um dado que pode influenciar completamente a logica empregada...[/b:b6fe6852e6]
sugiro que antes de voce dizer que[b:b6fe6852e6] não esta funcionando [/b:b6fe6852e6]<pois acredito que [b:b6fe6852e6][color=darkred:b6fe6852e6]esta[/color:b6fe6852e6][/b:b6fe6852e6] , pois como disse antes [b:b6fe6852e6][color=darkred:b6fe6852e6]testei[/color:b6fe6852e6][/b:b6fe6852e6]> voce[b:b6fe6852e6] teste com edits ´normais´ [/b:b6fe6852e6], da maneira como eu sugeri no meu post[b:b6fe6852e6] anterior[/b:b6fe6852e6]
Gostei + 0
02/10/2006
Tekmicro
Fiz os testes utilizando Edits simples e deu certo, só que neste caso, necessito utilizar deste componente para centralizar, tratando o mesmo ser recomendações da faculdade (desafios). :idea:
Muito obrigado!
Gostei + 0
02/10/2006
Tekmicro
Obrigado!
Gostei + 0
02/10/2006
Macario
Bom se no Edit convencional funcionou, temos agora que tentar a solucao a este seu componente.
Teste no manipulador do evento, passar [b:11815cea45]trim[/b:11815cea45] para a propriedade [b:11815cea45]text[/b:11815cea45].
8)
Gostei + 0
02/10/2006
Marco Salles
não sei como este componente implementa este alinhamento ...mas tente usar o onchange
assim
var texto:String; Lista:TstringList;
[b:6ff4449757]Ligue todos o Edits ao mesmo manipulador de evento[/b:6ff4449757]
procedure TForm1.EditChangeGeral(Sender: TObject); begin if length(Tedit(sender).text) > 0 Then begin if lista.IndexOf(Tedit(sender).text) < 0 Then lista.Add(Tedit(sender).text) else begin Tedit(sender).OnChange:=nil; Tedit(sender).text:=´´; Tedit(sender).OnChange:=EditChangeGeral; end; end else lista.Delete( lista.IndexOf(texto)); end;
[b:6ff4449757]Ligue todos os edits ao mesmo manipulador de evento OnEnter[/b:6ff4449757]
procedure TForm1.EditEnterGeral(Sender: TObject); begin texto:=Tedit(sender).text; end;
procedure TForm1.FormShow(Sender: TObject); begin lista:=TstringList.Create; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin lista.Free; end;
Gostei + 0
02/10/2006
Tekmicro
procedure TForm1.Edit[b:c980ee1dfb]ChangeGeral[/b:c980ee1dfb](Sender: TObject);
Não é reconhecido!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)