Вверх ↑
Этот топик читают: Гость
Ответов: 1886
Рейтинг: 164
#16: 2020-11-03 16:12:50 ЛС | профиль | цитата
Друзья, человек ведь просит пример - так дайте ему пример!

Joiner, вот, попробуй. Суть та же, как в моём ответе выше, только для _hi_OnEvent используется отдельная процедура.
Add(MainForm,2953706,490,273)
{
Position=1
link(onCreate,4856348:a,[])
}
Add(InlineCode,4856348,553,287)
{
@Hint=#56:Здесь записываем в глобальную переменную адрес процедуры|
WorkPoints=#1:a|
EventPoints=#8:OurEvent|9:OurEvent1|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|33:uses kol,Share,Debug,hiGlobalVar;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|9: public|23: OurEvent:THI_Event;|24: OurEvent1:THI_Event;|42: procedure a(var dt:TData; index:word);|5: end;|21:var thic:THiAsmClass;|0:|22://procedure globEvent;|0:|14:implementation|0:|82:procedure globEvent; //Наша глобальная процедура - специально для события OurEvent|5:begin|28: _hi_OnEvent(thic.OurEvent);|4:end;|0:|83:procedure globEvent1; //Наша глобальная процедура - специально для события OurEvent|5:begin|29: _hi_OnEvent(thic.OurEvent1);|4:end;|0:|24:procedure THiAsmClass.a;|5:begin|14: thic := self;|74: dtInteger( ForceGVar('any_global_var_name_proc')^, integer(@globEvent) );|90: //А в эту глоб. переменную (any_global_var_name_proc) записываем адрес процедуры/функции,|46: //которая нужна для глобального использования|76: dtInteger( ForceGVar('any_global_var_name_proc1')^, integer(@globEvent1) );|4:end;|0:|4:end.|
link(OurEvent,11179310:doMessage,[])
link(OurEvent1,13721235:doMessage,[(593,300)(593,335)])
AddHint(-79,-65,188,26,@Hint)
}
Add(InlineCode,12655881,553,371)
{
@Hint=#44:Здесь вызываем из глоб. переменной процедуру|
WorkPoints=#1:a|1:b|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|33:uses kol,Share,Debug,hiGlobalVar;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|9: public|42: procedure a(var dt:TData; index:word);|42: procedure b(var dt:TData; index:word);|5: end;|0:|14:implementation|0:|24:procedure THiAsmClass.a;|91:var gpname:procedure; //объявляем процедурную переменную такого же типа, как наша globEvent|5:begin|37: //Исполнение глоб. процедуры/функции|88: //Получаем указатель из глоб. переменной и записываем его в нашу процедурную переменную|72: gpname := pointer( ToInteger(ForceGVar('any_global_var_name_proc')^) );|0:|47: //Проверяем, что указатель не пуст, и вызываем|31: if @gpname <> nil then gpname;|4:end;|0:|24:procedure THiAsmClass.b;|21:var gpname:procedure;|5:begin|73: gpname := pointer( ToInteger(ForceGVar('any_global_var_name_proc1')^) );|31: if @gpname <> nil then gpname;|4:end;|0:|4:end.|
AddHint(46,1,150,26,@Hint)
}
Add(Button,7510949,490,371)
{
Left=100
Top=95
Width=140
Caption="исполнить процедуру"
link(onClick,12655881:a,[])
}
Add(Message,11179310,602,287)
{
Message="Событие OurEvent"
}
Add(Message,13721235,602,329)
{
Message="OurEvent1"
}
Add(Button,15182043,490,413)
{
Left=100
Top=120
Width=140
Caption="исполнить процедуру1"
link(onClick,12655881:b,[(538,419)(538,384)])
}

Редактировалось 1 раз(а), последний 2020-11-03 16:28:59
карма: 7
1
Голосовали:Joiner
Ответов: 142
Рейтинг: 7
#17: 2020-11-03 17:22:35 ЛС | профиль | цитата
Спасибо всем за помощь.

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

0
Ответов: 4637
Рейтинг: 511
#18: 2020-11-03 18:18:42 ЛС | профиль | цитата
3042, если бы мне давали все примеры то я уже давно был в задн... Но теперь что из KOL->VCL что из VCL->KOL, разница только во времени
карма: 6

1
Голосовали:flint2
Ответов: 1700
Рейтинг: 120
#19: 2020-11-03 23:47:24 ЛС | профиль | цитата
andrestudio, мудрёно плетёшь.
карма: 5

0
Ответов: 4637
Рейтинг: 511
#20: 2020-11-04 08:06:08 ЛС | профиль | цитата
flint2, а то, после второй 0,5
Мне больше нравится универсальное средство.
К примеру вот такой простой модуль делает порт в KOL куда проще (и его можно подпиливать и подпиливать)

unit VCLType;

interface

uses
Kol, Windows;

type
TBitmap = Kol.PBitmap;
TCanvas = Kol.PCanvas;
TFont = Kol.PGraphicTool;
TPen = Kol.PGraphicTool;
TBrush = Kol.PGraphicTool;
TStringList = Kol.PStrListEx;
TList = Kol.PListEx;
TImageList = Kol.PImageList;

TNotifyEvent = Kol.TOnEvent;

const
IntToStr: function (Value: Integer): string = Kol.Int2Str;
StrToInt: function (const Value: String): Integer = Kol.Str2Int;
ColorToRGB: function(Color: TColor): TColor = Kol.Color2RGB;
Point: function(X,Y: Integer): TPoint = Kol.MakePoint;
Rect: function(Left,Top,Right,Bottom: Integer): TRect; stdcall = Kol.MakeRect;
IntToHex: function (Value: DWord; Digits: Integer): string = Kol.Int2Hex;

implementation

initialization

finalization

end.

карма: 6

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