Вверх ↑
Этот топик читают: Гость
Ответов: 316
Рейтинг: 21
#1: 2011-04-23 02:27:04 ЛС | профиль | цитата
Нужно чтоб как в стенку упиралось.
+ вопрос работа с битами (сдвиг в право сдвиг влево, И, ИЛИ, АБО) есть такое?
карма: 1

0
Ответов: 5446
Рейтинг: 323
#2: 2011-04-23 02:31:27 ЛС | профиль | цитата
LastLeader, работа с битами - в Math. Ограничение длины: только ручками вроде.
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#3: 2011-04-23 02:32:11 ЛС | профиль | цитата
LastLeader писал(а):
Нужно чтоб как в стенку упиралось

Вот так можно

code_23468.txt
------------ Дoбавленo в 02.32:
iarspider писал(а):
Ограничение длины: только ручками вроде

Автомата нет, но схемно вполне можно
карма: 22

0
файлы: 1code_23468.txt [362B] [187]
Ответов: 16884
Рейтинг: 1239
#4: 2011-04-23 12:07:25 ЛС | профиль | цитата
nesco писал(а):
Автомата нет, но схемно вполне можно
LastLeader писал(а):
Нужно чтоб как в стенку упиралось.
и чтобы ClearAfterEnter работало.
------------ Дoбавленo в 12.07:
Я бы исправил
procedure THIEdit._OnKeyDown;
var dt:TData;
begin
if Assigned(_event_onEnter.Event) and( Key = 13) then
begin
if _prop_DataType(dt) then begin
Fchange := true;
_hi_onEvent(_event_onEnter,dt);
if Fchange then begin
ChangeEvent := false; // Установка Control.Text вызывает _OnChange !!!
if _prop_ClearAfterEnter then Control.Text := ';
end;
end;
Key := 0;
end
else inherited;
end;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#5: 2011-04-23 12:12:38 ЛС | профиль | цитата
Tad писал(а):
и чтобы ClearAfterEnter работало

А он что, не работает
------------ Дoбавленo в 12.12:
Tad писал(а):
Я бы исправил

А в чем разница
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#6: 2011-04-23 12:31:07 ЛС | профиль | цитата
nesco писал(а):
А он что, не работает
Попробуй свою схему code_23468.txt У меня в этой схеме не работало.
nesco писал(а):
А в чем разница
Не в том месте и не в то время.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#7: 2011-04-23 13:14:34 ЛС | профиль | цитата
Tad писал(а):
У меня в этой схеме не работало

Да и не будет работать, точка-то onEnter не подключена, условие же стоит


  if Assigned(_event_onEnter.Event) and( Key = 13) then

------------ Дoбавленo в 12.35:
Tad писал(а):
Не в том месте и не в то время

А если серьезно, подробности можно сего решения
------------ Дoбавленo в 13.14:
Исправил. Согласен, что оказалось не в том месте и не в то время
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#8: 2011-04-23 13:59:02 ЛС | профиль | цитата
А если серьёзно, то оптимально помоему так:
procedure THIEdit._OnKeyDown;
var dt:TData;
begin
if Assigned(_event_onEnter.Event) and( Key = 13) then // Проверка на использование точки
begin
if _prop_DataType(dt) then // Что здесь проверяем и зачем ???????????
begin
_hi_onEvent(_event_onEnter,dt); // Данные на выход
if _prop_ClearAfterEnter then // Если чистить
begin
ChangeEvent := false; // Установка Control.Text вызывает _OnChange !!!
Control.Text := ';
end;
end;
Key := 0;
end
else inherited;
end;
------------ Дoбавленo в 13.59:
И зачем танцы с бубном вокруг Fchange ????
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#9: 2011-04-23 15:35:46 ЛС | профиль | цитата
Tad писал(а):
И зачем танцы с бубном вокруг Fchange ????

Ну и что ты сделал, где теперь анализируется изменение, это единственное место, где оно производилось
------------ Дoбавленo в 15.27:
Tad писал(а):
Что здесь проверяем и зачем

Надо полагать, то ту проверяется успешность ввода числовых значений
------------ Дoбавленo в 15.35:
Tad, а вообще, зачем там, во всей схеме, Fchange ????
карма: 22

0
Ответов: 1926
Рейтинг: 172
#10: 2011-04-23 16:08:31 ЛС | профиль | цитата
Для этого есть системное сообщение (реализовано мной через IC):

code_23478.txt
карма: 9
1
файлы: 1code_23478.txt [1KB] [251]
Голосовали:Tad
Ответов: 16884
Рейтинг: 1239
#11: 2011-04-23 16:19:04 ЛС | профиль | цитата
nesco писал(а):
Ну и что ты сделал, где теперь анализируется изменение, это единственное место, где оно производилось
Это ты насчет Fchange или "анализируется изменение" - ЧЕГО ?
А зачем его анализировать ? В эту процедуру мы попадаем только при задействованию точки и нажатии Enter.
Значит выводим данные по событию и потом смотрим чистить или нет. Вот и вся песня.

nesco писал(а):
а вообще, зачем там, во всей схеме, Fchange
Незнаю, пока не вникал.

------------ Дoбавленo в 16.14:
3042, тоже верно. nesco, вводить в компонент надо - очень часто требуется ограничение.
------------ Дoбавленo в 16.19:
nesco писал(а):
зачем там, во всей схеме, Fchange ????
Посмотрел. Апендицит. Вырезать. ИМХО
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#12: 2011-04-23 16:24:49 ЛС | профиль | цитата
Tad писал(а):
Незнаю, пока не вникал

Ты же ответил на вопрос
Tad писал(а):
А зачем его анализировать ? В эту процедуру мы попадаем только при задействованию точки и нажатии Enter

И тут же Fchange меняется на true. Хотя, если выполнять цепь событий по _event_onEnter, то в нем можно умудриться сделать Fchange=false, и вот тогда событие onChange наступить не должно. Вывод -- его нельзя убирать
------------ Дoбавленo в 16.21:
Tad писал(а):
Посмотрел. Апендицит. Вырезать. ИМХО

Я уже ответил, что нельзя. Оставим "как есть"
------------ Дoбавленo в 16.22:
Чему должно быть равно em_LimitText, чтобы вернуть на место неограниченный ввод
------------ Дoбавленo в 16.24:
Сам нашел
MSDN писал(а):
Edit controls on Windows NT/2000/XP: If this parameter is zero, the text length is set to 0x7FFFFFFE characters for single-line edit controls or -1 for multiline edit controls


В данном случае, у нас Edit не Memo, значит, надо установить в ноль
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#13: 2011-04-23 16:40:01 ЛС | профиль | цитата
nesco писал(а):
И тут же Fchange меняется на true.
Где меняется? Как ? В последем коде я его выбросил вообще. А больше он нигде и не переключается.
procedure THIEdit._OnKeyDown;
var dt:TData;
begin
if Assigned(_event_onEnter.Event) and( Key = 13) then // Проверка на использование точки
begin
if _prop_DataType(dt) then // Что здесь проверяем и зачем
begin
_hi_onEvent(_event_onEnter,dt); // Данные на выход
if _prop_ClearAfterEnter then // Если чистить
begin
ChangeEvent := false; // Установка Control.Text вызывает _OnChange !!!
Control.Text := ';
end;
end;
Key := 0;
end
else inherited;
end;
И где ты его (Fchange ) увидел.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#14: 2011-04-23 16:43:51 ЛС | профиль | цитата
Tad писал(а):
Где меняется? Как ?

Я рассматриваю исходный код, а не твой. И объяснил, почему он может меняться, если ты не понял, то это твои проблему. У себя можешь оставить и без него, я не против
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#15: 2011-04-23 16:47:04 ЛС | профиль | цитата
nesco, не надо лапши. Четко скажи : Где оно может измениться ? Я просмотрел весь код Edit. И не увидел
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)