|
#1
|
|||
|
|||
Работа с MaskEdit
Доброго времени суток.
Нужна ваша помощь есть на форме компонент MaskEdit с маской в вида 00-00,0N(географическая координата). Как вывести её в Memo? Код:
Memo1.Lines.Add:=FloatToStr(MaskEdit1.Text) Последний раз редактировалось Zames, 17.09.2013 в 16:41. |
#2
|
||||
|
||||
Да уж
Код:
Memo1.Lines.Add(MaskEdit1.Text); Помогаю платно. Помогаю иногда бесплатно. |
#3
|
|||
|
|||
Как сделать ограничение ввода, допустим чтобы пользователь не мог ввести больше 90-0,00
|
#4
|
||||
|
||||
Для примера
Код:
procedure TForm1.MaskEdit1Change(Sender: TObject); var s: string; begin s:= MaskEdit1.Text; if s[1] = ' ' then s[1]:= '0'; if s[1] = '9' then s[2]:= '0'; ... MaskEdit1.Text:= s; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
Спасибо за помощь.
Как сделать так чтобы можно было ввести только два символа "N" и "S" в конце поля? |
#6
|
||||
|
||||
Цитата:
Цитата:
Код:
procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char); begin case Key of '0'..'9', 'N', 'n', 'S', 's': exit; else Key:= #0; end;{case} end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 22.09.2013 в 16:49. Причина: дополнение |
#7
|
|||
|
|||
Код:
procedure TForm1.Lat1Change(Sender: TObject); var a: string; begin a:= Lat1.Text; if a[1] = ' ' then a[1]:= '0'; if a[1] = '9' then a[2]:= '0'; if a[4] > '6' then a[4]:= '6'; if a[4] = '6' then a[5]:= '0'; if a[4] = '6' then a[7]:= '0'; end; Как сделать проверку последнего символа, он должен принимать всего два значения либо 'N' либо 'S' Код:
Case a[9] of 'N','S':exit; else Showmessage('Error'); |
#8
|
||||
|
||||
А что, маска не помогает?
Добавлено позже: Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 24.09.2013 в 18:12. |
#9
|
|||
|
|||
Маска не помогает.
потому как мне нужно чтобы было ограничение по вводу. Так например широта не может быть больше 90-00.0 N(S) с этой проблемой разобрался, а вот с полушариями ни как не могу, чтобы можно было водить только N или S. |
#10
|
||||
|
||||
Весь код не от балды, я проверял и у меня работает - кроме цифр и знаков N и S в поле ввода забить ничего нельзя, так что, пожалуйста, попробуйте ещё разок
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#11
|
|||
|
|||
Твой код работает! Но опять же я могу ввести больше чем 89-59.9N(S) как с этим справиться? За советы отдельное спасибо. очень помогают
|
#12
|
|||
|
|||
Код:
procedure TForm1.Lat1Change(Sender: TObject); var a: string; begin a:= Lat1.Text; if a[1] = ' ' then a[1]:= '0'; if a[1] = '9' then a[2]:= '0'; if a[4] > '6' then a[4]:= '6'; if a[4] = '6' then a[5]:= '0'; if a[4] = '6' then a[7]:= '0'; Lat1.Text:= a; end; procedure TForm1.Lat1KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9', 'N', 'n', 'S', 's': exit; else key:=#0; end; end; В такой связке всё работает как надо. |
#13
|
|||
|
|||
Код:
procedure TForm1.Lat1Change(Sender: TObject); var a: string; begin a:= Lat1.Text; if a[1] = ' ' then a[1]:= '0'; if a[1] = '9' then a[2]:= '0'; if a[1] = '9' then a[4]:= '0'; if a[1] = '9' then a[5]:= '0'; if a[1] = '9' then a[7]:= '0'; if a[4] > '5' then a[4]:= '5'; Lat1.Text:= a; end; {Проверяем правелньность ввода Полушария, только N или S} procedure TForm1.Lat1KeyPress(Sender: TObject; var Key: Char); begin case key of '0'..'9', 'N', 'n', 'S', 's': exit; else key:=#0; end; end; |
#14
|
||||
|
||||
Возник вопрос - Lat1 это точно MaskEdit?
(собираю вместе всю инфу из постов) Если оно, то попробуйте так - установите свойство CharCase в UpperCase, затем задайте свойство EditMask как !90-00.0>L;1;_ (в диалоге в поле Input Mask забейте !90-00.0>L, там же сразу можно и проверить ввод в поле Test input) дальше, задайте Lat1KeyPress как из 5й мессаги, уже должно быть следующее - в эдит кроме цифр и двух знаков ничего больше не вводится. Ну а в конце подключайте вашу процедуру чейнджа, с проверками на соответствие вводимых данных, и ... должно заработать правильно Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#15
|
|||
|
|||
да Lat1 это и есть MaskEdit. Спасибо за совет всё работает!!!
|