MICHELI_MARTINS Posted August 29, 2011 Report Share Posted August 29, 2011 boa tarde pessoal. estou precisando colocar uma mascara de placa de automovel no combobox e enquanto o usuario não digitar corretamente segure o foco no combo.alguém sabe como fazer isso?tentei assim: dbplaca.Text:=FormatMaskText('LLL-9999', dbplaca.Text).ate aparece a mascara, mas quando começo a digitar a formatação desaparece e me permite digitar o que eu quizer. Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted August 30, 2011 Report Share Posted August 30, 2011 sugestão:use um componente MaskEdit por cima do Comboboxabraço Quote Link to comment Share on other sites More sharing options...
0 MICHELI_MARTINS Posted August 30, 2011 Author Report Share Posted August 30, 2011 como faço ? nunca tentei antes. Quote Link to comment Share on other sites More sharing options...
0 MICHELI_MARTINS Posted August 30, 2011 Author Report Share Posted August 30, 2011 jhonas eu ate tentei aqui ta quase, ms o restante não sei como fazer.no primeiro instante eu foco no combo; no evendo change dele passo o valor para o maskedit.no exit do maskedit eu travo para o usuario não colocar vazio assim: if maskedit1.text = ' - ' then begin showmessage('PLACA não PODE SER VAZIA'); maskedit1.setfocus; end else dbhorainicial.setfocus;o problema agora é que ele tem que dar a liberdade para o usuario abrir o combo novamente, e ai se o usuario não selecionar nada, continuar na rotina de travar ate que ele escolha um item do combo ou digite uma placa manualmente no maskedit.so que com esta rotina que te passei acima, ele não deixa nem clicar no combo novamente.alguma sugestao? Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted August 30, 2011 Report Share Posted August 30, 2011 tente assimprocedure TForm1.MaskEdit1Exit(Sender: TObject); begin if maskedit1.Text = ' - ' then begin showmessage('PLACA NÃO PODE SER VAZIA'); ComboBox1.setfocus; end else ComboBox1.setfocus; end; procedure TForm1.ComboBox1Click(Sender: TObject); begin MaskEdit1.EditText := ComboBox1.Items.Strings[ComboBox1.ItemIndex]; end;abraço Quote Link to comment Share on other sites More sharing options...
0 MICHELI_MARTINS Posted August 31, 2011 Author Report Share Posted August 31, 2011 tudo bem eu posso ate trocar o foco para o combobox, mas e se o usuario não clicar?acaba saindo do campo e não trava mais, esse é o problema. Ai no caso teria que ter um evento no combobox repassando para o maskedit novamente se o usuario não clicar.so que não sei como fazer. Quote Link to comment Share on other sites More sharing options...
0 MICHELI_MARTINS Posted August 31, 2011 Author Report Share Posted August 31, 2011 jhonas, fiz assim no evento onexit do combobox:if dbcombobox.text = '' then maskedit1.setfocus;ai volta o foco para a mascara deu certo.agora, quando eu pressionar o botao cancelar ele tem que suspender essa operação, ou seja cancelar o foco e o form volta ao seu estado normal.como eu tiro esse foco clicando no botao cancelar?tentei:maskedit1.clear;mas não resolveu. Quote Link to comment Share on other sites More sharing options...
0 Jhonas Posted August 31, 2011 Report Share Posted August 31, 2011 existem algumas maneiras... uma delas seriaprocedure TForm1.MaskEdit1Exit(Sender: TObject); begin if maskedit1.Text = ' - ' then begin showmessage('PLACA NÃO PODE SER VAZIA'); ComboBox1.setfocus; end else ComboBox1.setfocus; end; procedure TForm1.ComboBox1Click(Sender: TObject); begin MaskEdit1.EditText := ComboBox1.Items.Strings[ComboBox1.ItemIndex]; end; procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char); begin if key = #27 then BitBtn1.SetFocus; end; procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin if key = #27 then BitBtn1.SetFocus; end;abraço Quote Link to comment Share on other sites More sharing options...
0 MICHELI_MARTINS Posted August 31, 2011 Author Report Share Posted August 31, 2011 ok obrigada. Quote Link to comment Share on other sites More sharing options...
Question
MICHELI_MARTINS
boa tarde pessoal.
estou precisando colocar uma mascara de placa de automovel no combobox e enquanto o usuario não digitar corretamente segure o foco no combo.
alguém sabe como fazer isso?
tentei assim:
dbplaca.Text:=FormatMaskText('LLL-9999', dbplaca.Text).
ate aparece a mascara, mas quando começo a digitar a formatação desaparece e me permite digitar o que eu quizer.
Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.