Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
#1: 2010-08-31 16:52:53 ЛС | профиль | цитата
В параллельной теме "Остановка счетчика" было предложено решение задачи:
Evgen818 писал(а):
Можно ли добиться что бы счетчик останавливался по достижению максимума.
Тоесть например, я нажал на кнопку 10 раз, после десятого раза счетчик начинает считать заново, а мне нужно что бы счетчик не реагировал на последующие нажатие кнопки.

на одном стандартном элементе палитры:

Add(Button,11486341,161,105)
{
Left=115
Top=35
Caption="next"
link(onClick,1289255:doCalc,[])
}
Add(Label,14401749,245,105)
{
Left=115
Top=10
Caption="0"
}
Add(MathParse,1289255,203,105)
{
DataCount=0
MathStr="min(%0 + 1, 10)"
link(onResult,14401749:doText,[])
}

всем, кто предложит схему с аналогичным функционалом и количеством элементов будет добавлено 100ћ капитала (как минимум существует еще одно решение).

PS: использование элементов из группы "Языки" недопустимо

[block]Небольшое уточнение задачи: две схемы с одним и тем же набором элементов считаются одинаковыми (их выкладывание допустимо только интереса ради). Любая схема, которая при последовательном многократном нажатии кнопки выдает в элементе отображения(это не обязательно Label) ряд чисел от 1 до 10 считается удовлетворяющей условиям задачи. В качестве элемента отображения нельзя использовать заголовок формы или надпись на кнопке. MathParse и FastMathParse принимаются равными[/block]
[block]использование элементов, позволяющих подключать внешние библиотеки и запускать приложения так же не допускается[/block]

Решений с учетом уточнений как минимум два.

Список предложенных и одобренных решений
Автор sla8a, элементы Button+Position+Label


Add(Button,11486341,70,105)
{
Left=115
Top=35
Caption="next"
Data=String(..........)
link(onClick,4392029:doSearch,[])
}
Add(Label,14401749,168,105)
{
Left=115
Top=10
Caption="0"
}
Add(Position,4392029,119,105)
{
Target="."
StartPos=0
link(onSearch,14401749:doText,[])
link(StartPos,14401749:Caption,[(139,93)(157,93)(157,149)(174,149)])
}
Автор Ivann, элементы Button+Counter+Edit


Add(Button,11486341,168,238)
{
Left=115
Top=35
Caption="next"
Data=String(0123456789)
link(onClick,8239983:doNext,[])
}
Add(Edit,11298274,280,238)
{
Left=200
Top=35
link(onChange,8239983:doMin,[(331,244)(331,294)(212,294)(212,265)])
}
Add(Counter,8239983,224,238)
{
Max=10
Point(doMin)
link(onNext,11298274:doText,[])
}
Автор Ivann, элементы Button+Math+ProgressBarRush


Add(ProgressBarRush,2507503,343,126)
{
Left=120
Top=115
Width=15
Max=10
Caption=""
}
Add(Button,4588211,231,126)
{
Left=65
Top=115
link(onClick,637464:doOperation,[])
}
Add(Math,637464,287,126)
{
Op2=1
link(onResult,2507503:doPosition,[])
link(Op1,637464:Result,[(293,114)(281,114)(281,170)(293,170)])
}
Автор Nic, элементы WebBrowser+DoData+Timer


Add(WebBrowser,12367157,175,77)
{
Left=70
Top=10
Width=580
Height=500
Align=5
Point(doFromText)
}
Add(DoData,7137533,126,105)
{
Data=String(<SCRIPT TYPE="text/javascript">
<!--
function Counter(Form){var Count = Form.Edit.value;if (Count < 10) { Count++; Form.Edit.value = Count; }}
//-->
</SCRIPT>
<FORM>
<INPUT TYPE=BUTTON OnClick="Counter(this.form);" VALUE="Push">
<INPUT NAME="Edit">
</FORM>)
link(onEventData,12367157:doFromText,[])
}
Add(Timer,15867566,77,105)
{
Interval=100
AutoStop=1
link(onTimer,7137533:doData,[])
}
Автор Assasin, элементы Button+StrList+Label


Add(Button,10852794,273,161)
{
Left=70
Top=10
link(onClick,7110116:doGetString,[])
}
Add(StrList,7110116,322,119)
{
Strings=#1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|2:10|2:10|
Point(String)
Point(doGetString)
Point(IdxToSelect)
Point(onGetString)
link(IdxToSelect,7110116:String,[(342,107)(358,107)(358,180)(349,180)])
link(onGetString,1605527:doText,[])
}
Add(Label,1605527,371,126)
{
Left=135
Top=15
}
Автор olDjeka, элементы Button+Replace+Label


Add(Button,11499601,385,126)
{
Left=139
Top=121
Data=String(0123456789)
link(onClick,7320165:doReplace,[])
}
Add(Label,11892274,504,126)
{
Left=142
Top=82
Caption="0"
AutoSize=1
Alignment=2
link(Text,7320165:CurentPos,[(510,117)(482,117)(482,165)(454,165)])
}
Add(Replace,7320165,441,126)
{
Point(CurentStr)
Point(CurentPos)
link(onReplace,11892274:doText,[])
link(Sub_str,11892274:Caption,[(454,110)(495,110)(495,165)(510,165)])
}
карма: 27
0
Разработчик
Ответов: 26148
Рейтинг: 2126
#2: 2010-08-31 17:02:04 ЛС | профиль | цитата
Есть то же решение, но с другой формулой



Add(MainForm,2953706,301,147)
{
}
Add(Button,11486341,301,189)
{
Left=115
Top=35
Caption="next"
link(onClick,1289255:doCalc,[])
}
Add(Label,14401749,385,189)
{
Left=115
Top=10
Caption="0"
}
Add(MathParse,1289255,343,189)
{
DataCount=0
MathStr="%0 + sign(10 - %0)"
link(onResult,14401749:doText,[])
}

карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2010-08-31 17:03:47 ЛС | профиль | цитата
nesco, изменение формулы вариантом не считается по очевидной причине: возможных формул существует бесконечное множество

min(%0 + 1, 20/2)
10 + min(%0 + 1, 10) - 10
и т.д.
карма: 27
0
Разработчик
Ответов: 26148
Рейтинг: 2126
#4: 2010-08-31 17:06:31 ЛС | профиль | цитата
Dilma, у тебя все формулы с разновидностью min, у меня формула без min -- немного другой принцип.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#5: 2010-08-31 17:13:10 ЛС | профиль | цитата
[flood]Evgen818, Можно ли добиться что бы счетчик останавливался ?

Add(MathParse,1289255,203,105)
{
DataCount=0
MathStr="min(%0 + 1, 10)"
link(onResult,14401749:doText,[])
}
Предложенный вариант с MathParse - это не остановка счётчика, а кажущееся прекращение вывода (MathParse будет продолжать считать до бесконечности)
Evgen818, а мне нужно что бы счетчик не реагировал на последующие нажатие кнопки. Счетчик, а не Label.

Треп >> Между делом >> Разыгрываем 100ћ за решение задачи "Остановка счетчика"
Dilma писал(а):
не относится к теме
[/flood]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 397
Рейтинг: 34
#6: 2010-08-31 17:20:05 ЛС | профиль | цитата
Вот, только если Hub не считать
Add(Button,11486341,287,266){
Left=115
Top=35
Caption="next"
link(onClick,12912620:doNext,[])
}
Add(Label,14401749,413,266)
{
Left=115
Top=10
Caption="0"
}
Add(Counter,12912620,336,266)
{
Max=10
Point(doMin)
link(onNext,16131035:doEvent1,[])
}
Add(Hub,16131035,378,266)
{
link(onEvent1,14401749:doText,[])
link(onEvent2,12912620:doMin,[(404,279)(404,286)(324,286)(324,293)])
}
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2010-08-31 17:23:02 ЛС | профиль | цитата
закрыть глаза на HubEx еще можно бы было, но Hub является полноценным элементом
карма: 27
0
Ответов: 2265
Рейтинг: 676
#8: 2010-08-31 17:25:06 ЛС | профиль | цитата
Можно и так code_20331.txt
карма: 11

4
файлы: 1code_20331.txt [417B] [792]
Голосовали:Genius, Administrator, nesco, Ivann
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2010-08-31 17:33:41 ЛС | профиль | цитата
пока удалось найти еще три решения отличных от двух уже представленных
карма: 27
0
Ответов: 397
Рейтинг: 34
#10: 2010-08-31 18:06:03 ЛС | профиль | цитата
Переделка варианта sla8a:
Add(Button,11486341,364,196)
{
Left=115
Top=35
Caption="next"
Data=String(0123456789)
link(onClick,441731:doSearch,[])
}
Add(Label,14401749,462,196)
{
Left=115
Top=10
Caption="0"
}
Add(Position,441731,406,196)
{
Target="1"
StartPos=0
link(onSearch,14401749:doText,[])
link(Target,14401749:Caption,[(419,184)(443,184)(443,240)(468,240)])
}

карма: 0

1
Голосовали:olDjeka
Ответов: 3349
Рейтинг: 233
#11: 2010-08-31 18:16:14 ЛС | профиль | цитата
Можно вот так
------------ Дoбавленo в 18.16:

Add(Button,11486341,168,238)
{
Left=115
Top=35
Caption="next"
Data=String(0123456789)
link(onClick,8239983:doNext,[])
}
Add(Edit,11298274,280,238)
{
Left=200
Top=35
link(onChange,8239983:doMin,[(331,244)(331,294)(212,294)(212,265)])
}
Add(Counter,8239983,224,238)
{
Max=10
Point(doMin)
link(onNext,11298274:doText,[])
}

карма: 1

0
Ответов: 875
Рейтинг: 322
#12: 2010-08-31 18:26:37 ЛС | профиль | цитата
Во всех приведенных схемах счетчик останавливается достигнув 10, но при последующих нажатиях события продолжают происходить, что в свою очередь может сбить с толку последующую логику. Вот так наверное будет более правильным... останавливается счет и события. code_20332.txt
карма: 1

1
файлы: 1code_20332.txt [714B] [788]
Голосовали:Tad
Ответов: 3349
Рейтинг: 233
#13: 2010-08-31 18:28:26 ЛС | профиль | цитата
Еще так
------------ Дoбавленo в 18.28:
Add(ProgressBarRush,2507503,343,126)
{
Left=120
Top=115
Width=15
Max=10
Caption=""
}
Add(Button,4588211,231,126)
{
Left=65
Top=115
link(onClick,637464:doOperation,[])
}
Add(Math,637464,287,126)
{
Op2=1
link(onResult,2507503:doPosition,[])
link(Op1,637464:Result,[(293,114)(281,114)(281,170)(293,170)])
}


карма: 1

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#14: 2010-08-31 18:41:35 ЛС | профиль | цитата
code


Add(Label,14401749,231,140)
{
Left=115
Top=10
Caption="0"
}
Add(UpDown,2111402,189,140)
{
Left=115
Top=60
link(onPosition,14401749:doText,[])
}

карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 16884
Рейтинг: 1239
#15: 2010-08-31 18:55:04 ЛС | профиль | цитата
[flood]
kamakama писал(а):
Во всех приведенных схемах счетчик останавливается достигнув 10, но при последующих нажатиях события продолжают происходить, что в свою очередь может сбить с толку последующую логику.

Наконец нашелся трезво думающий человек.
Правда меня за такие мысли обложили трёхэтажным предупреждением (читай - матом) (смотри первую страницу) и удалили все схемы. [/flood]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)