Вверх ↑
Этот топик читают: Гость
Ответов: 167
Рейтинг: 7
#1: 2020-06-30 17:12:32 ЛС | профиль | цитата
Я уже давно имел маленькую проблемку в понимании динамических контейнеров (да и вообще всех динамических и полиморфных элементов)
Вот простейшая схема :

Add(MainForm,2953706,21,105)
{
}
Add(MultiElementEx,8238370,189,126)
{
Mode=1
link(onTimer,4108184:doData,[])
}
BEGIN_SDK
Add(EditMultiEx,12009789,21,21)
{
WorkCount=#5:##add|8:##delete|
EventCount=#7:onTimer|
VarCount=#7:##index|7:##count|
Point(##add)
Point(##delete)
Point(##index)
Point(##count)
link(##add,3389666:doTimer,[])
}
Add(Timer,3389666,91,21)
{
Enable=1
AutoStop=1
link(onTimer,12009789:onTimer,[])
}
END_SDK
Add(Button,13602014,133,126)
{
Left=100
Top=60
link(onClick,8238370:##add,[])
}
Add(DoData,4108184,238,126)
{
link(onEventData,8238370:##delete,[(298,132)(298,170)(177,170)(177,139)])
link(Data,8238370:##index,[(244,118)(229,118)(229,166)(195,166)])
}
Add(Timer,12621400,154,182)
{
Interval=10
link(onTimer,5263902:doText,[])
}
Add(Label,5263902,196,182)
{
Left=270
Top=195
link(Text,8238370:##count,[])
}

её суть - создать контейнер, который пропадёт через секунду но... В ответ нам вылетит отладочное окно о недопустимости самоуничтожения... (если вы кликаете не быстро, в ином случае ничего не будет) От слова ничего - абсолютно! Схема останется-то! (с.м текст который отображает количество копий контейнера). Вопрос - как же нам провести самоуничтожение, если оно так нужно? Да и вообще почему динамических и полиморфных контейнеров копию нельзя уничтожить событием из этой же копии контейнера?
карма: 0
c, c++, lua
0
Ответов: 2236
Рейтинг: 676
#2: 2020-06-30 17:14:45 ЛС | профиль | цитата
Add(MainForm,9811188,245,105)
{
}
Add(MultiElementEx,8238370,413,126)
{
Mode=1
link(onTimer,11904149:doDeferredEvent,[])
}
BEGIN_SDK
Add(EditMultiEx,12009789,21,21)
{
WorkCount=#5:##add|8:##delete|
EventCount=#7:onTimer|
VarCount=#7:##index|7:##count|
Point(##add)
Point(##delete)
Point(##index)
Point(##count)
link(##add,3389666:doTimer,[])
}
Add(Timer,3389666,91,21)
{
Enable=1
AutoStop=1
link(onTimer,12009789:onTimer,[])
}
END_SDK
Add(Button,13602014,357,126)
{
Left=100
Top=60
link(onClick,8238370:##add,[])
}
Add(Timer,12621400,378,182)
{
Interval=10
link(onTimer,5263902:doText,[])
}
Add(Label,5263902,420,182)
{
Left=270
Top=195
link(Text,8238370:##count,[])
}
Add(DeferredEvent,11904149,462,126)
{
Point(Data)
link(onDeferredEvent,8238370:##delete,[(502,132)(502,173)(401,173)(401,139)])
link(Data,8238370:##index,[(468,114)(455,114)(455,169)(419,169)])
}

Редактировалось 1 раз(а), последний 2020-06-30 17:16:37
карма: 11

0
Ответов: 167
Рейтинг: 7
#3: 2020-06-30 17:17:56 ЛС | профиль | цитата
Sla8a, БОЛЬШОЕ ВАМ СПАСИБО! Я сам почему-то не додумался... Адские костыли помнится делал чтобы избежать это... Вспоминать страшно...

Редактировалось 1 раз(а), последний 2020-06-30 17:19:32
карма: 0
c, c++, lua
0
Ответов: 2236
Рейтинг: 676
#4: 2020-06-30 17:23:13 ЛС | профиль | цитата
UtoECat, не мне нужно сказать спасибо, а автору данного элемента: nesco.

Редактировалось 1 раз(а), последний 2020-06-30 17:23:33
карма: 11

0
Ответов: 167
Рейтинг: 7
#5: 2020-06-30 17:36:20 ЛС | профиль | цитата
sla8a писал(а):
не мне нужно сказать спасибо, а автору данного элемента: nesco.

nesco, тебе тоже спасибо
карма: 0
c, c++, lua
0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)