![]() |
|
|
#1
|
|||
|
|||
|
Доброго времени суток.
Нужна ваша помощь есть на форме компонент 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. Спасибо за совет всё работает!!!
|