<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Передать instance (this) родительского класса из дочернего.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=17356</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17356&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Передать instance (this) родительского класса из дочернего.».]]></description>
		<lastBuildDate>Fri, 02 Sep 2022 20:57:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154623#p154623</link>
			<description><![CDATA[<p>А почему нет?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 02 Sep 2022 20:57:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154623#p154623</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154622#p154622</link>
			<description><![CDATA[<p>Получается я внутри testFunc могу обратиться к instance и вызвать допустим instance.stop(), правильно?</p>]]></description>
			<author><![CDATA[null@example.com (Phoenixxx_Czar)]]></author>
			<pubDate>Fri, 02 Sep 2022 20:29:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154622#p154622</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154621#p154621</link>
			<description><![CDATA[<p>В данном случае можно передать указатель на this:<br /></p><div class="codebox"><pre><code>#Persistent
#SingleInstance FORCE

class Test1
{
   __new(callback)
   {
      this.Test2.callback := callback
   }

   __delete()
   {
      this.stop()
      tooltip, % &quot;Удалено&quot;
   }

   start()
   {
      timerObj := this.timerObj := ObjBindMethod(this.Test2, &quot;method&quot;, &amp;this)
      setTimer, % timerObj, 500
   }

   stop()
   {
      timerObj := this.timerObj
      setTimer, % timerObj, delete
   }

   class Test2
   {
      method(pInstance)
      {
         this.callback.call(Object(pInstance), &quot;one&quot;)
      }
   }
}

test := new Test1(func(&quot;testFunc&quot;))
test.start()
sleep, 1700
test := &quot;&quot;


testFunc(instance, param)
{
   toolTip, % instance.__class &quot;`n&quot; param
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 02 Sep 2022 20:03:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154621#p154621</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154620#p154620</link>
			<description><![CDATA[<p>Думаю что-то такое, но я не знаю как получить this от Test1:<br /></p><div class="codebox"><pre><code>#Persistent
#SingleInstance FORCE

class Test1
{
	__new(callback)
	{
		this.Test2.callback := callback
	}

	__delete()
	{
		this.stop()
		tooltip, % &quot;Удалено&quot;
	}

	start()
	{
		timerObj := this.timerObj := ObjBindMethod(this.Test2, &quot;method&quot;)
		setTimer, % timerObj, 500
	}

	stop()
	{
		timerObj := this.timerObj
		setTimer, % timerObj, delete
	}

	class Test2
	{
		method()
		{
			this.callback.call(this, &quot;one&quot;)
		}
	}
}

test := new Test1(func(&quot;testFunc&quot;))
test.start()
sleep, 1700
test := &quot;&quot;


testFunc(instance, param)
{

	toolTip, % instance.__class &quot;`n&quot; param
}</code></pre></div><p>Это если я пытаюсь передать this в objBindMethod:<br /></p><div class="codebox"><pre><code>#Persistent
#SingleInstance FORCE

class Test1
{
	__new(callback)
	{
		this.Test2.callback := callback
	}

	__delete()
	{
		this.stop()
		tooltip, % &quot;Удалено&quot;
	}

	start()
	{
		timerObj := this.timerObj := ObjBindMethod(this.Test2, &quot;method&quot;, this)
		setTimer, % timerObj, 500
	}

	stop()
	{
		timerObj := this.timerObj
		setTimer, % timerObj, delete
	}

	class Test2
	{
		method(instance)
		{
			this.callback.call(instance, &quot;one&quot;)
		}
	}
}

test := new Test1(func(&quot;testFunc&quot;))
test.start()
sleep, 1700
test := &quot;&quot;


testFunc(instance, param)
{

	toolTip, % instance.__class &quot;`n&quot; param
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Phoenixxx_Czar)]]></author>
			<pubDate>Fri, 02 Sep 2022 19:53:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154620#p154620</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154619#p154619</link>
			<description><![CDATA[<p>Но этот код невозможно запустить.<br /> <br /> <span class="postimg"><img src="https://i.imgur.com/HMcZlLb.png" alt="https://i.imgur.com/HMcZlLb.png" /></span><br /> <br />Приведите просто минимально возможный код, наподобие того, что в первом посте, только чтобы продемонстрировать проблему.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 02 Sep 2022 19:43:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154619#p154619</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154618#p154618</link>
			<description><![CDATA[<p>Удалено.</p>]]></description>
			<author><![CDATA[null@example.com (Phoenixxx_Czar)]]></author>
			<pubDate>Fri, 02 Sep 2022 19:37:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154618#p154618</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154617#p154617</link>
			<description><![CDATA[<p>А зачем представлять, просто напишите сразу полный код.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 02 Sep 2022 19:14:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154617#p154617</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154616#p154616</link>
			<description><![CDATA[<p>Представьте, что там он есть, со вторым кодом же не вызовет метод __delete.</p>]]></description>
			<author><![CDATA[null@example.com (Phoenixxx_Czar)]]></author>
			<pubDate>Fri, 02 Sep 2022 19:10:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154616#p154616</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154615#p154615</link>
			<description><![CDATA[<div class="quotebox"><cite>Phoenixxx_Czar пишет:</cite><blockquote><p>мне нужно не потерять работоспособность метода `__delete()`</p></blockquote></div><p>А где там метод __delete() ?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 02 Sep 2022 18:34:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154615#p154615</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Передать instance (this) родительского класса из дочернего.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154614#p154614</link>
			<description><![CDATA[<p>Приведу абстрактный код:<br /></p><div class="codebox"><pre><code>
class Test1
{
	__new(callback)
	{
		this.Test2.callback := callback
	}

	method()
	{
		ObjBindMethod(this.Test2, &quot;method&quot;).call()
	}

	class Test2
	{
		method()
		{
			this.callback.call(this) ; как мне передать this указывающий на Test1?
		}
	}
}

test := new Test1(func(&quot;testFunc&quot;))
test.method()


testFunc(classInstance)
{
	msgbox, % classInstance.__class ; Хочу тут получить Test1
}
</code></pre></div><p>Мне необходимо вызвать callback функцию во вложенном классе, и при этом передать instance родительского класса (Test1). При этом мне нужно не потерять работоспособность метода `__delete()`, то есть у нас не получится сделать так:<br /></p><div class="codebox"><pre><code>
class Test1
{
	__new(callback)
	{
		this.Test2.callback := callback
	}

	method()
	{
		ObjBindMethod(this.Test2, &quot;method&quot;, this).call()
	}

	class Test2
	{
		method(instance)
		{
			this.callback.call(instance)
		}
	}
}

test := new Test1(func(&quot;testFunc&quot;))
test.method()


testFunc(classInstance)
{
	msgbox, % classInstance.__class
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Phoenixxx_Czar)]]></author>
			<pubDate>Fri, 02 Sep 2022 18:16:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154614#p154614</guid>
		</item>
	</channel>
</rss>
