Вверх ↑
Этот топик читают: Гость
Ответов: 254
Рейтинг: 6
#1: 2019-04-23 04:53:31 ЛС | профиль | цитата
Доброе раннее утро ) Подскажите как выполнить проверку того, что было введено в Edit?
Например если введен только текст
если только введены дробные числа (с учетом разделителя в виде точки, но при этом число может быть от 2 и более знаков до дробной части)
если введены целые числа
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8888
Рейтинг: 823
#2: 2019-04-23 11:01:24 ЛС | профиль | цитата
Medvedoc, смысл-то в такой проверке
Проверка


Add(MainForm,1686861,434,49)
{
Height=103
Position=1
}
Add(Edit,775967,301,49)
{
Left=10
Top=20
Width=365
link(onChange,9782296:doTest,[])
}
Add(InlineCode,9782296,371,49)
{
WorkPoints=#6:doTest|
EventPoints=#5:onRes|
Code=#15:unit HiAsmUnit;|13:// Author Tad|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|4: |24: onRes : THI_Event;|51: PROCEDURE doTest(var _Data:TData; Index:Word);|0:|5: end;|0:|14:implementation|0:|29:PROCEDURE THiAsmClass.doTest;|21:var s,ss,_Res:string;|14: i:integer;|5:BEGIN|9: ss:='';|17: _Res:='Number';|23: s:=toString(_Data); |59: for i:=1 to Length(s) do if s[i] in ['0'..'9','.'] then|9: begin|43: if s[i]='.' then _Res:='FloatNumber';|17: ss:=ss+s[i];|8: end;|46: if Length(ss)<>Length(s) then _Res:='Text';|4: |26: _hi_onEvent(onRes,_Res);|4:END;|0:|0:|4:end.|
link(onRes,1686861:doCaption,[])
}

карма: 19

0
Ответов: 254
Рейтинг: 6
#3: 2019-04-23 11:58:57 ЛС | профиль | цитата
Леонид, все дело в том, что у меня разные edit. Текстовые и дробные числа. Но если неправильно вводить данные, то происходит сброс поля ввода и не даёт снова его выделить. Код сейчас не под рукой, в самолете )
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#4: 2019-04-23 14:41:14 ЛС | профиль | цитата
Леонид,
leonid_7.jpg
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8888
Рейтинг: 823
#5: 2019-04-23 14:50:11 ЛС | профиль | цитата
Tad,
Author_Tad.jpg
карма: 19

0
Ответов: 254
Рейтинг: 6
#6: 2019-04-23 16:28:45 ЛС | профиль | цитата

Add(Edit,5561736,168,350)
{
Left=230
Top=20
Width=200
Name="name"
Text="введите..."
MaxLenField=150
ClearAfterEnter=1
Point(doSetFocus)
Point(doSelectAll)
Point(onSetFocus)
link(onEnter,14824129:doEvent1,[])
link(Str,4763178:Value,[])
link(onSetFocus,5561736:doSelectAll,[(209,370)(209,414)(156,414)(156,377)])
}
Add(Edit,4731645,336,343)
{
Left=230
Top=50
Width=200
Hint="только числа"
HintManager="status"
Text="введите..."
DataType=4
MaxLenField=10
ClearAfterEnter=1
Point(doSetFocus)
Point(onSetFocus)
Point(doSelectAll)
link(onEnter,2189017:doEvent1,[])
link(Str,12943861:Value,[])
link(onSetFocus,4731645:doSelectAll,[(374,363)(374,406)(330,406)(330,370)])
}
Add(LineBreak,6284871,168,396)
{
Caption="004"
Type=1
link(Data,5561736:Text,[])
Primary=[5194253,140,864]
}
Add(LineBreak,6790127,335,385)
{
Caption="005"
Type=1
link(Data,4731645:Text,[(341,380)(342,380)])
Primary=[11212979,-27,896]
}
Add(Label,8126914,126,322)
{
Left=20
Top=20
Width=200
Height=20
Caption="Наименование"
}
Add(Label,16582756,294,319)
{
Left=20
Top=50
Width=54
Height=17
Caption="Длина (м)"
}
Add(Memory,4763178,168,301)
{
Default=String()
}
Add(Hub,14824129,217,357)
{
link(onEvent1,4731645:doSetFocus,[])
link(onEvent2,4763178:doValue,[(238,370)(238,419)(115,419)(115,307)])
}
Add(LineBreak,7129757,119,364)
{
Caption="name"
Color=15780518
link(Out,5561736:doSetFocus,[])
Primary=[5947877,49,-252]
}
Add(Memory,12943861,336,301)
{
Default=Real(0)
}
Add(Hub,2189017,379,350)
{
link(onEvent2,12943861:doValue,[(399,363)(399,412)(286,412)(286,307)])
}
Add(PointHint,3956789,105,280)
{
Info=#4:name|
Transparent=0
VAlign=0
Width=148
Height=158
}
Add(PointHint,2412335,273,280)
{
Info=#6:length|
Transparent=0
VAlign=0
Width=141
Height=158
}
Add(MainForm,13167479,98,70)
{
Width=925
Height=628
link(onCreate,5947877:In,[(149,90)(149,118)])
}


Вот примерный код. В одном edit текстовые значения, в другом дробные числа.

--- Добавлено в 2019-04-23 16:33:13

а необходимо мне это было для того, что когда пользователь неправильно вводит в поле данные, например вместо текста дробное исло или наоборот, то определять что он ввел и в зависимости от этого выдавать сообщение о том, что необходимо ввести. Ну и для проверки всех полей на заполнение.

--- Добавлено в 2019-04-23 16:35:46

а может кто подскажет как правильнее все это организовать. По сути когда неправильно вводится формат, то выделение пропадает и каретка в поле падает а нулевое значение. А вот как снова выделение вернуть у меня так и не получилось.

Редактировалось 2 раз(а), последний 2019-04-23 16:35:46
карма: 0

0
Ответов: 8888
Рейтинг: 823
#7: 2019-04-23 17:24:18 ЛС | профиль | цитата
Medvedoc,


Add(Edit,5561736,182,63)
{
Left=230
Top=20
Width=200
Name="name"
Text=""
MaxLenField=150
ClearAfterEnter=1
Point(doSetFocus)
Point(doSelectAll)
Point(onSetFocus)
link(onChange,9782296:doTest,[])
link(onEnter,14824129:doEvent1,[(228,76)(228,104)])
link(onSetFocus,5561736:doSelectAll,[(223,83)(223,127)(170,127)(170,90)])
}
Add(Edit,4731645,399,84)
{
Left=230
Top=50
Width=200
Hint="только числа"
HintManager="status"
Text=""
MaxLenField=10
ClearAfterEnter=1
Point(doSetFocus)
Point(onSetFocus)
Point(doSelectAll)
link(onChange,16538169:doTest,[])
link(onEnter,2189017:doEvent1,[(445,97)(445,125)])
link(onSetFocus,4731645:doSelectAll,[(437,104)(437,147)(393,147)(393,111)])
}
Add(LineBreak,16744812,182,105)
{
Caption="004"
Type=1
link(Data,5561736:Text,[])
Primary=[5194253,0,70]
}
Add(LineBreak,4018416,399,126)
{
Caption="005"
Type=1
link(Data,4731645:Text,[])
Primary=[11212979,0,49]
}
Add(Label,8126914,112,35)
{
Left=20
Top=20
Width=200
Height=20
Caption="Наименование (Только БУКВЫ)"
}
Add(Label,16582756,343,35)
{
Left=20
Top=50
Width=54
Height=17
Caption="Длина (м) (Только цифры) "
}
Add(Hub,14824129,245,98)
{
link(onEvent1,4731645:doSetFocus,[])
}
Add(Hub,2189017,469,119)
{
}
Add(PointHint,3956789,98,21)
{
Info=#4:name|
Transparent=0
VAlign=0
Width=197
Height=137
}
Add(PointHint,2412335,336,21)
{
Info=#6:length|
Transparent=0
VAlign=0
Width=197
Height=137
}
Add(MainForm,13167479,42,63)
{
Width=462
Height=220
link(onCreate,5561736:doSetFocus,[])
}
Add(InlineCode,16538169,462,84)
{
WorkPoints=#6:doTest|
EventPoints=#5:onRes|
VarPoints=#
DataPoints=#13:DecimalPlaces|
Code=#15:unit HiAsmUnit;|13:// Author Tad|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|31: DecimalPlaces : THI_Event;|24: onRes : THI_Event;|51: PROCEDURE doTest(var _Data:TData; Index:Word);|0:|5: end;|0:|14:implementation|0:|29:PROCEDURE THiAsmClass.doTest;|16:var s,ss:string;|18: i,j,k:integer;|5:BEGIN|9: ss:='';|21: s:=toString(_Data);|40: k:=ReadInteger(_Data,DecimalPlaces,2);|15: j:=Length(s);|100: for i:=1 to j do if s[i] in ['0'..'9','.',','] then if s[i]=',' then ss:=ss+'.' else ss:=ss+s[i];|22: s:=Parse( ss, '.' );|37: while Length(ss)<k do ss:=ss +'0';|36: ss:=s + '.' + copy(ss,1,k); |24: _hi_onEvent(onRes,ss);|4:END;|0:|0:|4:end.|
link(onRes,4731645:doText2,[(500,90)(500,71)(390,71)(390,97)])
link(DecimalPlaces,2068374:Value,[])
}
Add(Memory,2068374,462,28)
{
Default=Integer(2)
}
Add(InlineCode,9782296,238,63)
{
WorkPoints=#6:doTest|
EventPoints=#5:onRes|
VarPoints=#
DataPoints=#
Code=#15:unit HiAsmUnit;|13:// Author Tad|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|4: |24: onRes : THI_Event;|51: PROCEDURE doTest(var _Data:TData; Index:Word);|0:|5: end;|0:|14:implementation|0:|29:PROCEDURE THiAsmClass.doTest;|16:var s,ss:string;|14: i:integer;|5:BEGIN|9: ss:='';|21: s:=toString(_Data);|2: |26: for i:=1 to Length(s) do|80: if s[i] in ['A'..'Z','a'..'z','А'..'Я','а'..'я','Ё','ё',' '] then ss:=ss+s[i];|24: _hi_onEvent(onRes,ss);|4:END;|0:|0:|4:end.|
link(onRes,5561736:doText2,[(283,69)(283,52)(169,52)(169,76)])
}

карма: 19

0
Ответов: 16884
Рейтинг: 1239
#8: 2019-04-23 18:51:52 ЛС | профиль | цитата
Опять ?
Леонид писал(а):
unit HiAsmUnit;
// Author Tad

Не ожидал.

Редактировалось 1 раз(а), последний 2019-04-23 19:01:31
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 254
Рейтинг: 6
#9: 2019-04-24 17:57:53 ЛС | профиль | цитата
Леонид, работает ))) проверка проходит успешно. А как можно сделать так, чтобы в поле по умолчанию стояла надпись введите... и при неправильном вводе снова выводила ее, но уже выделенную?
карма: 0

0
Ответов: 8888
Рейтинг: 823
#10: 2019-04-24 20:15:05 ЛС | профиль | цитата
Tad, но это же ваши IC, я их и не трогал, копипаст и всё
OnlyTad.jpg
Medvedoc, неправильно ввести нельзя, могут быть НЕ те цифры или слова, но откуда компьютер догадается, что они не те
карма: 19

0
Ответов: 254
Рейтинг: 6
#11: 2019-04-24 21:27:39 ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2019-04-24 22:32:12
карма: 0

0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)