Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#31: 2012-12-05 00:15:35 правка | ЛС | профиль | цитата


Редактировалось 9 раз(а), последний 2024-03-29 01:22:54
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#32: 2012-12-05 00:22:05 ЛС | профиль | цитата
37.45.163.171 писал(а):
Вылетать перестанет, вот только можно ли так?

Зато появляется косяки с выбором первой строки.

В принципе, так можно делать.
Проверить можно, поставив

_debug(sControl.LVCurItem);

Он покажет 0, те выбранный пункт. А лучше потестируй, если ничего не выплывет, то запатчим
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#33: 2012-12-05 00:30:47 правка | ЛС | профиль | цитата


Редактировалось 9 раз(а), последний 2024-03-29 01:22:54
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#34: 2012-12-05 00:48:12 правка | ЛС | профиль | цитата


Редактировалось 9 раз(а), последний 2024-03-29 01:22:54
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#35: 2012-12-05 01:28:14 ЛС | профиль | цитата
Давай попробуем исправить, если что, то откатим назад. По идее, для мультвыбора надо исправлять

------------ Дoбавленo в 01.28:
Запатчил, можно проверять
карма: 22

0
Ответов: 2193
Рейтинг: 673
#36: 2015-05-12 00:58:44 ЛС | профиль | цитата
nesco, почему после выхода из редактирования строки (двойной клик по строке), пропадает флажек?
MTStrTbl:
Redaction = True
CheckBoxes = True
Тестовая схема:
Add(MainForm,3208517,266,203)
{
Width=385
Height=276
Position=1
link(onCreate,4746729:doEnum,[(306,223)(306,209)])
}
Add(MTStrTbl,3627423,455,189)
{
Left=10
Top=15
Width=350
Height=220
Name="MyTable"
Columns=#8:Материал|3:Вес|
Redaction=0
CheckBoxes=0
Grid=0
Point(onBeforeLineChange)
}
Add(StrList,12112024,301,147)
{
Strings=#8:Кокс;111|10:Стр-ка;202|7:FeSi;57|7:FeMn;88|0:|
}
Add(ArrayEnum,4746729,315,203)
{
link(onItem,6413393:doMT,[])
link(Array,12112024:Array,[])
}
Add(MST_RowAction,4441281,399,196)
{
MSTControl="MyTable"
}
Add(MT_String,6413393,357,196)
{
link(onResult,4441281:doRowAction,[])
}
Покопался в коде (не глубоко) намеков не нашел. Предположил что это "фича", если так, то возможно можно внести изменения:
hiMTStrTbl.pas

Добавить в private:
#pas
CBvalue: integer;
А в процедурах вначале сохраним значение, а после восстановим.
#pas
procedure ThiMTStrTbl._OnBeforeLineChange;
var
dt: TData;
begin
if _prop_CheckBoxes then CBvalue := Control.LVItemStateImgIdx[idx]; //сохраним
dt := Get(Idx);
_hi_OnEvent_(_event_onBeforeLineChange, dt);
end;

procedure ThiMTStrTbl._OnLineChange;
var
dt: TData;
begin
if _prop_CheckBoxes then Control.LVItemStateImgIdx[idx] := CBvalue; //восстановим
dt := Get(Idx);
_hi_OnEvent_(_event_onLineChange, dt);
end;
карма: 10

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#37: 2015-05-12 07:11:15 ЛС | профиль | цитата
sla8a писал(а):
почему после выхода из редактирования строки (двойной клик по строке), пропадает флажек?

Без понятия, почему пропадает.
Копание привело к тому, что вот это место портит флажок

procedure TListEdit.LVChange;
var e: PControl;
i: integer;
//o: boolean;
//c: Char;
begin
...
if Store then
LVItems[LVCurItem, i] := e.Text;
...
end;
Нажав ESC, флажок не портится, тк этот участок кода не работает.
карма: 22

0
Ответов: 2193
Рейтинг: 673
#38: 2015-05-12 14:56:55 ЛС | профиль | цитата
А если вместо
#pas
LVItems[LVCurItem, i] := e.Text;
использовать
#pas
LVSetItem(LVCurItem, i, e.Text, LVItemImageIndex[LVCurItem], [], LVItemStateImgIdx[LVCurItem], 0, 0);

У меня не получилось
------------ Дoбавленo в 14.56:
Получилось вот так:
#pas
for i := EList.Count - 1 downto 0 do begin
e := EList.Items[i];
if Store then
LVSetItem(LVCurItem, i, e.Text, LVItemImageIndex[LVCurItem], [], LVItemStateImgIdx[LVCurItem], 0, 0);
// LVItems[LVCurItem, i] := e.Text;
if e.Focused then CurEdit := i + 1;
e.Free;
//o := False;
end;
Только остальные параметры у LVSetItem чем заполнить (нули и [])?
карма: 10

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#39: 2015-05-12 16:32:51 ЛС | профиль | цитата
А может ну его нафиг. Оставим первый вариант, а то еще чего выплывет
карма: 22

0
Ответов: 2193
Рейтинг: 673
#40: 2015-05-12 23:28:08 ЛС | профиль | цитата
Последнее слово за вами, ваш элемент. Главное чтоб работало.
карма: 10

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#41: 2015-05-12 23:43:31 ЛС | профиль | цитата
sla8a писал(а):
Главное чтоб работало

Еще вчера добавил твои рекомендации
карма: 22

0
Ответов: 672
Рейтинг: 141
#42: 2020-11-29 05:42:26 ЛС | профиль | цитата
nesco, при "растягивании" таблицы MTStrTbl по вертикали, выходные данные с точки VirtualData компонента MST_Virtual "не меняются"(т.е. [Idx] в Out: [VirtIdx][Idx][SubItem]). "Высота" виртуальной таблицы остаётся такой, какой была задана в редакторе форм. Надеюсь понятно объяснил . Но, не исключаю свою криворукость.
Add(MainForm,3063237,63,84)
{
Width=545
Height=462
link(onCreate,11085202:doWork1,[])
}
Add(StrList,4383086,245,84)
{
Point(EndIdx)
}
Add(ChildPanel,11085202,119,98)
{
link(onEvent2,9222564:doEvent1,[])
}
BEGIN_SDK
Add(EditMulti,7878121,21,21)
{
EventCount=2
WorkCount=1
Width=440
Height=270
link(doWork1,12297484:doEvent1,[(46,27)(46,97)])
}
Add(Panel,13137533,56,35)
{
Width=529
Height=30
Align=2
}
Add(Button,294400,42,126)
{
Left=15
Top=5
Caption="New"
link(onClick,12836985:doEvent1,[])
}
Add(Button,16443704,42,189)
{
Left=460
Top=5
Enabled=1
Caption="Save"
link(onClick,15140639:doEvent1,[])
}
Add(Edit,10340021,217,35)
{
Left=185
Top=5
Width=90
Text="20000"
DataType=2
}
Add(Label,13731098,168,35)
{
Left=125
Top=7
Width=61
Height=17
Caption="Кол. строк"
}
Add(Button,11871194,238,175)
{
Left=370
Top=5
Caption="View"
link(onClick,1896552:doData,[])
}
Add(LED,11063149,301,49)
{
Left=80
Top=5
Width=20
Height=20
ColorOff=65280
}
Add(Hub,12297484,91,91)
{
OutCount=4
link(onEvent1,3301899:doWork2,[(116,97)(116,83)])
link(onEvent2,3210884:doWork1,[])
link(onEvent3,3789266:doWork1,[(116,111)])
link(onEvent4,14611930:doWork2,[])
}
Add(MultiElement,3210884,217,98)
{
link(onEvent1,2339098:doAdd,[])
link(onEvent2,343437:doEvent1,[])
link(Data1,13711752:Var2,[])
}
BEGIN_SDK
Add(EditMulti,90280,28,21)
{
EventCount=2
WorkCount=2
DataCount=1
Width=440
Height=158
VOffset=7
HOffset=28
link(doWork1,15240120:doEvent1,[])
link(doWork2,15286128:doFor,[(39,41)(39,55)])
}
Add(For,15286128,49,49)
{
@Hint=#18:Количество абзацев|
IncludeEnd=1
link(onEvent,9486001:doRandom,[])
link(onStop,90280:onEvent2,[(88,62)(88,140)(455,140)(455,41)])
link(End,90280:Data1,[])
}
Add(For,11842154,154,49)
{
@Hint=#29:Количество слов в предложении|
link(onEvent,5410569:doText,[])
link(onStop,15892992:doEvent1,[(193,62)(193,97)])
link(End,9486001:Random,[(167,40)(146,40)(146,89)(111,89)])
}
Add(Random,9486001,105,49)
{
Min=7
Max=15
link(onRandom,11842154:doFor,[])
}
Add(InlineCode,5410569,203,42)
{
WorkPoints=#7:doStart|6:doText|
EventPoints=#5:onRes|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onRes : THI_Event;|5: |52: procedure doStart(var _Data:TData; Index:Word); |50: procedure doText(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.doStart;|6: begin|12: Randomize;|5: end;|0:|29:procedure THiAsmClass.doText;|15:var sss:string;|16: i,j:integer;|16: _Rnd:double;|5:BEGIN|11: sss:=' ';|24: j:=round(Random*12)+2;|19: for i:=0 to j do|9: begin|18: _Rnd:=Random;|42: if _Rnd<0.0003 then sss:=sss+'ё' else|42: if _Rnd<0.0007 then sss:=sss+'ъ' else|42: if _Rnd<0.0033 then sss:=sss+'ф' else|42: if _Rnd<0.0065 then sss:=sss+'э' else|42: if _Rnd<0.0101 then sss:=sss+'щ' else|42: if _Rnd<0.0149 then sss:=sss+'ц' else|42: if _Rnd<0.0213 then sss:=sss+'ю' else|42: if _Rnd<0.0286 then sss:=sss+'ш' else|41: if _Rnd<0.038 then sss:=sss+'ж' else|42: if _Rnd<0.0477 then sss:=sss+'х' else|42: if _Rnd<0.0598 then sss:=sss+'й' else|42: if _Rnd<0.0742 then sss:=sss+'ч' else|42: if _Rnd<0.0901 then sss:=sss+'б' else|42: if _Rnd<0.1066 then sss:=sss+'з' else|42: if _Rnd<0.1236 then sss:=sss+'г' else|41: if _Rnd<0.141 then sss:=sss+'ь' else|40: if _Rnd<0.16 then sss:=sss+'ы' else|42: if _Rnd<0.1801 then sss:=sss+'я' else|42: if _Rnd<0.2063 then sss:=sss+'у' else|42: if _Rnd<0.2344 then sss:=sss+'п' else|42: if _Rnd<0.2642 then sss:=sss+'д' else|42: if _Rnd<0.2963 then sss:=sss+'м' else|42: if _Rnd<0.3312 then sss:=sss+'к' else|42: if _Rnd<0.3752 then sss:=sss+'л' else|42: if _Rnd<0.4206 then sss:=sss+'в' else|42: if _Rnd<0.4679 then sss:=sss+'р' else|42: if _Rnd<0.5226 then sss:=sss+'с' else|42: if _Rnd<0.5852 then sss:=sss+'т' else|42: if _Rnd<0.6522 then sss:=sss+'н' else|42: if _Rnd<0.7257 then sss:=sss+'и' else|42: if _Rnd<0.8058 then sss:=sss+'а' else|42: if _Rnd<0.8903 then sss:=sss+'е' else|34: if _Rnd<1 then sss:=sss+'о'; |9: end;|25: _hi_onEvent(onRes,sss);|4:END;|0:|0:|4:end.|
link(onRes,15879034:doWork2,[])
}
Add(StrCat,13455235,308,42)
{
Point(doClear)
link(Str1,7063167:Var3,[(314,33)(328,33)(328,82)])
}
Add(Hub,15240120,70,28)
{
link(onEvent1,5410569:doStart,[(193,34)(193,48)])
link(onEvent2,9486001:doRandomize,[(95,41)(95,62)])
}
Add(DoData,7170534,308,98)
{
link(onEventData,16600547:doTrim,[])
link(Data,7063167:Var2,[])
}
Add(GetDataEx,7063167,308,77)
{
link(Data,13455235:Result,[])
}
Add(Hub,15892992,203,91)
{
OutCount=3
link(onEvent1,7526937:doData,[(242,97)(242,62)])
link(onEvent2,7170534:doData,[])
link(onEvent3,13455235:doClear,[(298,111)(298,55)])
}
Add(DoData,7526937,252,56)
{
Data=String(. )
link(onEventData,15879034:doWork3,[(291,62)])
}
Add(HubEx,15879034,287,42)
{
link(onEvent,13455235:doStrCat,[])
}
Add(StrCase,14266070,406,98)
{
Type=3
link(onModify,90280:onEvent1,[(445,104)(445,34)])
}
Add(Trim,16600547,357,98)
{
Char=" "
Mode=4
link(onTrim,14266070:doModify,[])
}
END_SDK
Add(Hub,12836985,91,126)
{
OutCount=3
link(onEvent1,3301899:doWork3,[(123,132)])
link(onEvent2,3789266:doWork2,[])
link(onEvent3,14611930:doWork3,[(130,146)])
}
Add(HubEx,3301899,119,77)
{
link(onEvent,16463242:doEvent1,[])
}
Add(StrList,2339098,301,98)
{
Point(doSave)
}
Add(DoData,1896552,301,175)
{
link(onEventData,7878121:onEvent2,[(360,181)(360,34)])
link(Data,633127:Var2,[])
}
Add(SDialog,3850500,217,133)
{
Filter="TXT|*.txt"
Point(doFileName)
link(onExecute,2339098:doSave,[])
}
Add(TimeCounter,526452,350,217)
{
link(onStop,10660108:doString,[])
}
Add(Length,4653976,294,224)
{
link(onLength,526452:doStop,[])
link(Str,633127:Var1,[(300,166)])
}
Add(FormatStr,10660108,399,224)
{
DataCount=3
Mask="Сгенерировано %1 символов в %3 строках за %2 мсек"
link(onFString,7878121:onEvent1,[(443,230)(443,27)])
link(Str1,4653976:Result,[(405,215)(391,215)(391,264)(300,264)])
link(Str3,2339098:Count,[(419,159)(314,159)])
}
Add(GetDataEx,633127,301,161)
{
link(Data,2339098:Text,[])
}
Add(HubEx,3789266,112,133)
{
Angle=1
link(onEvent,526452:doStart,[(116,223)])
}
Add(HubEx,14611930,126,112)
{
Angle=3
link(onEvent,3646847:doStart,[(130,111)])
}
Add(Hub,16463242,238,77)
{
link(onEvent1,11063149:doOn,[(291,83)(291,69)])
link(onEvent2,2339098:doClear,[(291,90)(291,111)])
}
Add(Hub,343437,259,105)
{
link(onEvent1,11063149:doOff,[(284,111)(284,62)])
link(onEvent2,4653976:doLength,[(284,118)(284,230)])
}
Add(Thread,3646847,161,105)
{
Delay=20
FastStop=0
link(onExec,3210884:doWork2,[])
}
Add(Hub,15140639,91,189)
{
link(onEvent1,7492483:doOperation,[])
link(onEvent2,3850500:doExecute,[(123,202)(123,181)(200,181)(200,139)])
}
Add(Math,7492483,133,189)
{
OpType=3
Op2=1000
ResultType=0
link(onResult,3543045:doStrCat,[])
link(Op1,13711752:Var1,[(139,75)])
}
Add(GetDataEx,13711752,217,70)
{
link(Data,10340021:Text,[])
}
Add(StrCat,3543045,175,189)
{
Str2="Кстр.txt"
link(onStrCat,3850500:doFileName,[(214,195)(214,181)(207,181)(207,146)])
}
END_SDK
Add(MST_Virtual,15555683,378,154)
{
MSTControl="MTStrTbl"
Point(doSetVirtIdx)
link(onChangeVirtIdx,4071568:doEvent1,[])
link(VirtualData,8915826:GetData,[(384,145)(419,145)(419,432)(496,432)])
}
Add(MathParse,4883725,210,182)
{
MathStr="(%2 - sign(%1) * 3) * ((%2 - sign(%1) * 3) >= 0)"
ResultType=0
link(onResult,5531226:doCompare,[])
link(X2,15555683:CurVirtIdx,[(223,173)(300,173)(300,201)(384,201)])
}
Add(If_else,5531226,259,182)
{
Type=1
link(onTrue,15555683:doSetVirtIdx,[])
link(Op2,4383086:EndIdx,[])
}
Add(EventFromData,8915826,490,392)
{
link(onEvent,83609:doSeparateMT,[])
}
Add(For,8901862,532,210)
{
link(onEvent,91022:doRead,[])
link(Start,10721694:Value,[(538,201)(496,201)])
link(End,7765738:Result,[])
}
Add(Hub,4071568,448,154)
{
OutCount=3
link(onEvent1,10721694:doValue,[])
link(onEvent2,8901862:doFor,[(480,167)(480,216)])
}
Add(Math,7765738,539,154)
{
ResultType=0
link(onResult,53467:doClear,[(620,160)(620,223)])
link(Op2,9846926:Var,[(552,145)(439,145)(439,242)(398,242)])
}
Add(StrList,53467,637,210)
{
}
Add(Hub,9222564,168,105)
{
link(onEvent1,4383086:doText,[])
link(onEvent2,8932995:In,[])
}
Add(MTStrTbl,7148080,147,154)
{
Top=30
Width=529
Height=134
Align=5
Name="MTStrTbl"
Columns=#1:1|
FlatScroll=1
ColumnWidth=500
VirtualTab=0
Point(onMouseWheel)
Point(PerPage)
link(onMouseWheel,4883725:doCalc,[])
}
Add(MT_MultiData,83609,553,392)
{
Count=3
link(onData2,10538246:doEvent,[])
}
Add(ArrayRW,15065628,651,399)
{
link(onRead,8915826:doData,[(690,405)(690,384)(480,384)(480,398)])
link(Array,53467:Array,[])
}
Add(Memory,10721694,490,154)
{
link(onData,7765738:doOperation,[])
}
Add(ArrayRW,91022,581,210)
{
link(onRead,53467:doAdd,[])
link(Array,4383086:Array,[(587,124)(265,124)])
}
Add(LineBreak,8922396,336,175)
{
link(Out,15555683:doResetPage,[])
Primary=[8932995,-140,-63]
}
Add(Debug,9846926,392,210)
{
LogCount=100
link(Data,15555683:PerPage,[])
}
Add(Debug,10538246,623,399)
{
LogCount=100
link(onEvent,15065628:doRead,[])
}


Редактировалось 4 раз(а), последний 2020-11-29 07:22:22
карма: 14

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#43: 2020-11-30 01:34:21 ЛС | профиль | цитата
Так количество строк на странице читается только один раз в схеме, если перечитать PerPage, то покажет текущее количество отображаемых строк, или я чего-то не догнал?

Схема

Add(MainForm,3063237,371,287)
{
Width=545
Height=462
link(onCreate,11085202:doWork1,[])
}
Add(StrList,4383086,553,287)
{
Point(EndIdx)
}
Add(ChildPanel,11085202,427,301)
{
link(onEvent2,9222564:doEvent1,[])
}
BEGIN_SDK
Add(EditMulti,7878121,21,21)
{
EventCount=2
WorkCount=1
Width=440
Height=270
link(doWork1,12297484:doEvent1,[(46,27)(46,97)])
}
Add(Panel,13137533,56,35)
{
Width=529
Height=30
Align=2
}
Add(Button,294400,42,126)
{
Left=15
Top=5
Caption="New"
link(onClick,12836985:doEvent1,[])
}
Add(Button,16443704,42,189)
{
Left=460
Top=5
Enabled=1
Caption="Save"
link(onClick,15140639:doEvent1,[])
}
Add(Edit,10340021,217,35)
{
Left=185
Top=5
Width=90
Text="20000"
DataType=2
}
Add(Label,13731098,168,35)
{
Left=125
Top=7
Width=61
Height=17
Caption="Кол. строк"
}
Add(Button,11871194,238,175)
{
Left=370
Top=5
Caption="View"
link(onClick,1896552:doData,[])
}
Add(LED,11063149,301,49)
{
Left=80
Top=5
Width=20
Height=20
ColorOff=65280
}
Add(Hub,12297484,91,91)
{
OutCount=4
link(onEvent1,3301899:doWork2,[(116,97)(116,83)])
link(onEvent2,3210884:doWork1,[])
link(onEvent3,3789266:doWork1,[(116,111)])
link(onEvent4,14611930:doWork2,[])
}
Add(MultiElement,3210884,217,98)
{
link(onEvent1,2339098:doAdd,[])
link(onEvent2,343437:doEvent1,[])
link(Data1,13711752:Var2,[])
}
BEGIN_SDK
Add(EditMulti,90280,28,21)
{
EventCount=2
WorkCount=2
DataCount=1
Width=440
Height=158
VOffset=7
HOffset=28
link(doWork1,15240120:doEvent1,[])
link(doWork2,15286128:doFor,[(39,41)(39,55)])
}
Add(For,15286128,49,49)
{
@Hint=#18:Количество абзацев|
IncludeEnd=1
link(onEvent,9486001:doRandom,[])
link(onStop,90280:onEvent2,[(88,62)(88,140)(455,140)(455,41)])
link(End,90280:Data1,[])
}
Add(For,11842154,154,49)
{
@Hint=#29:Количество слов в предложении|
link(onEvent,5410569:doText,[])
link(onStop,15892992:doEvent1,[(193,62)(193,97)])
link(End,9486001:Random,[(167,40)(146,40)(146,89)(111,89)])
}
Add(Random,9486001,105,49)
{
Min=7
Max=15
link(onRandom,11842154:doFor,[])
}
Add(InlineCode,5410569,203,42)
{
WorkPoints=#7:doStart|6:doText|
EventPoints=#5:onRes|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onRes : THI_Event;|5: |52: procedure doStart(var _Data:TData; Index:Word); |50: procedure doText(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.doStart;|6: begin|12: Randomize;|5: end;|0:|29:procedure THiAsmClass.doText;|15:var sss:string;|16: i,j:integer;|16: _Rnd:double;|5:BEGIN|11: sss:=' ';|24: j:=round(Random*12)+2;|19: for i:=0 to j do|9: begin|18: _Rnd:=Random;|42: if _Rnd<0.0003 then sss:=sss+'ё' else|42: if _Rnd<0.0007 then sss:=sss+'ъ' else|42: if _Rnd<0.0033 then sss:=sss+'ф' else|42: if _Rnd<0.0065 then sss:=sss+'э' else|42: if _Rnd<0.0101 then sss:=sss+'щ' else|42: if _Rnd<0.0149 then sss:=sss+'ц' else|42: if _Rnd<0.0213 then sss:=sss+'ю' else|42: if _Rnd<0.0286 then sss:=sss+'ш' else|41: if _Rnd<0.038 then sss:=sss+'ж' else|42: if _Rnd<0.0477 then sss:=sss+'х' else|42: if _Rnd<0.0598 then sss:=sss+'й' else|42: if _Rnd<0.0742 then sss:=sss+'ч' else|42: if _Rnd<0.0901 then sss:=sss+'б' else|42: if _Rnd<0.1066 then sss:=sss+'з' else|42: if _Rnd<0.1236 then sss:=sss+'г' else|41: if _Rnd<0.141 then sss:=sss+'ь' else|40: if _Rnd<0.16 then sss:=sss+'ы' else|42: if _Rnd<0.1801 then sss:=sss+'я' else|42: if _Rnd<0.2063 then sss:=sss+'у' else|42: if _Rnd<0.2344 then sss:=sss+'п' else|42: if _Rnd<0.2642 then sss:=sss+'д' else|42: if _Rnd<0.2963 then sss:=sss+'м' else|42: if _Rnd<0.3312 then sss:=sss+'к' else|42: if _Rnd<0.3752 then sss:=sss+'л' else|42: if _Rnd<0.4206 then sss:=sss+'в' else|42: if _Rnd<0.4679 then sss:=sss+'р' else|42: if _Rnd<0.5226 then sss:=sss+'с' else|42: if _Rnd<0.5852 then sss:=sss+'т' else|42: if _Rnd<0.6522 then sss:=sss+'н' else|42: if _Rnd<0.7257 then sss:=sss+'и' else|42: if _Rnd<0.8058 then sss:=sss+'а' else|42: if _Rnd<0.8903 then sss:=sss+'е' else|34: if _Rnd<1 then sss:=sss+'о'; |9: end;|25: _hi_onEvent(onRes,sss);|4:END;|0:|0:|4:end.|
link(onRes,15879034:doWork2,[])
}
Add(StrCat,13455235,308,42)
{
Point(doClear)
link(Str1,7063167:Var3,[(314,33)(328,33)(328,82)])
}
Add(Hub,15240120,70,28)
{
link(onEvent1,5410569:doStart,[(193,34)(193,48)])
link(onEvent2,9486001:doRandomize,[(95,41)(95,62)])
}
Add(DoData,7170534,308,98)
{
link(onEventData,16600547:doTrim,[])
link(Data,7063167:Var2,[])
}
Add(GetDataEx,7063167,308,77)
{
link(Data,13455235:Result,[])
}
Add(Hub,15892992,203,91)
{
OutCount=3
link(onEvent1,7526937:doData,[(242,97)(242,62)])
link(onEvent2,7170534:doData,[])
link(onEvent3,13455235:doClear,[(298,111)(298,55)])
}
Add(DoData,7526937,252,56)
{
Data=String(. )
link(onEventData,15879034:doWork3,[(291,62)])
}
Add(HubEx,15879034,287,42)
{
link(onEvent,13455235:doStrCat,[])
}
Add(StrCase,14266070,406,98)
{
Type=3
link(onModify,90280:onEvent1,[(445,104)(445,34)])
}
Add(Trim,16600547,357,98)
{
Char=" "
Mode=4
link(onTrim,14266070:doModify,[])
}
END_SDK
Add(Hub,12836985,91,126)
{
OutCount=3
link(onEvent1,3301899:doWork3,[(123,132)])
link(onEvent2,3789266:doWork2,[])
link(onEvent3,14611930:doWork3,[(130,146)])
}
Add(HubEx,3301899,119,77)
{
link(onEvent,16463242:doEvent1,[])
}
Add(StrList,2339098,301,98)
{
Point(doSave)
}
Add(DoData,1896552,301,175)
{
link(onEventData,7878121:onEvent2,[(360,181)(360,34)])
link(Data,633127:Var2,[])
}
Add(SDialog,3850500,217,133)
{
Filter="TXT|*.txt"
Point(doFileName)
link(onExecute,2339098:doSave,[])
}
Add(TimeCounter,526452,350,217)
{
link(onStop,10660108:doString,[])
}
Add(Length,4653976,294,224)
{
link(onLength,526452:doStop,[])
link(Str,633127:Var1,[(300,166)])
}
Add(FormatStr,10660108,399,224)
{
DataCount=3
Mask="Сгенерировано %1 символов в %3 строках за %2 мсек"
link(onFString,7878121:onEvent1,[(443,230)(443,27)])
link(Str1,4653976:Result,[(405,215)(391,215)(391,264)(300,264)])
link(Str3,2339098:Count,[(419,159)(314,159)])
}
Add(GetDataEx,633127,301,161)
{
link(Data,2339098:Text,[])
}
Add(HubEx,3789266,112,133)
{
Angle=1
link(onEvent,526452:doStart,[(116,223)])
}
Add(HubEx,14611930,126,112)
{
Angle=3
link(onEvent,3646847:doStart,[(130,111)])
}
Add(Hub,16463242,238,77)
{
link(onEvent1,11063149:doOn,[(291,83)(291,69)])
link(onEvent2,2339098:doClear,[(291,90)(291,111)])
}
Add(Hub,343437,259,105)
{
link(onEvent1,11063149:doOff,[(284,111)(284,62)])
link(onEvent2,4653976:doLength,[(284,118)(284,230)])
}
Add(Thread,3646847,161,105)
{
Delay=20
FastStop=0
link(onExec,3210884:doWork2,[])
}
Add(Hub,15140639,91,189)
{
link(onEvent1,7492483:doOperation,[])
link(onEvent2,3850500:doExecute,[(123,202)(123,181)(200,181)(200,139)])
}
Add(Math,7492483,133,189)
{
OpType=3
Op2=1000
ResultType=0
link(onResult,3543045:doStrCat,[])
link(Op1,13711752:Var1,[(139,75)])
}
Add(GetDataEx,13711752,217,70)
{
link(Data,10340021:Text,[])
}
Add(StrCat,3543045,175,189)
{
Str2="Кстр.txt"
link(onStrCat,3850500:doFileName,[(214,195)(214,181)(207,181)(207,146)])
}
END_SDK
Add(MST_Virtual,15555683,686,357)
{
MSTControl="MTStrTbl"
Point(doSetVirtIdx)
link(onChangeVirtIdx,4071568:doEvent1,[])
link(VirtualData,8915826:GetData,[(692,348)(727,348)(727,635)(804,635)])
}
Add(MathParse,4883725,518,385)
{
MathStr="(%2 - sign(%1) * 3) * ((%2 - sign(%1) * 3) >= 0)"
ResultType=0
link(onResult,5531226:doCompare,[])
link(X2,15555683:CurVirtIdx,[(531,376)(608,376)(608,404)(692,404)])
}
Add(If_else,5531226,567,385)
{
Type=1
link(onTrue,15555683:doSetVirtIdx,[])
link(Op2,4383086:EndIdx,[])
}
Add(EventFromData,8915826,798,595)
{
link(onEvent,83609:doSeparateMT,[])
}
Add(For,8901862,840,413)
{
link(onEvent,91022:doRead,[])
link(Start,10721694:Value,[(846,404)(804,404)])
link(End,7765738:Result,[])
}
Add(Hub,4071568,756,357)
{
OutCount=3
link(onEvent1,10721694:doValue,[])
link(onEvent2,8901862:doFor,[(788,370)(788,419)])
}
Add(Math,7765738,847,357)
{
ResultType=0
link(onResult,53467:doClear,[(928,363)(928,426)])
link(Op2,8245945:Var1,[(860,348)(747,348)])
}
Add(StrList,53467,945,413)
{
}
Add(Hub,9222564,476,308)
{
link(onEvent1,4383086:doText,[])
link(onEvent2,8932995:In,[])
}
Add(MTStrTbl,7148080,455,357)
{
Top=30
Width=529
Height=134
Align=5
Name="MTStrTbl"
Columns=#1:1|
FlatScroll=1
ColumnWidth=500
VirtualTab=0
Point(onMouseWheel)
Point(PerPage)
link(onMouseWheel,4883725:doCalc,[])
}
Add(MT_MultiData,83609,847,595)
{
Count=3
link(onData2,8944101:doEvent1,[])
}
Add(ArrayRW,15065628,959,602)
{
link(onRead,8915826:doData,[(998,608)(998,587)(788,587)(788,601)])
link(Array,53467:Array,[])
}
Add(Memory,10721694,798,357)
{
link(onData,7765738:doOperation,[])
}
Add(ArrayRW,91022,889,413)
{
link(onRead,53467:doAdd,[])
link(Array,4383086:Array,[(895,327)(573,327)])
}
Add(LineBreak,8462468,644,378)
{
link(Out,15555683:doResetPage,[])
Primary=[8932995,-140,-63]
}
Add(Debug,9846926,700,413)
{
LogCount=100
link(Data,15555683:PerPage,[])
}
Add(Debug,10538246,931,602)
{
LogCount=100
link(onEvent,15065628:doRead,[])
}
Add(Hub,8944101,896,602)
{
link(onEvent1,10538246:doEvent,[])
link(onEvent2,5631632:doData,[(921,615)(921,678)])
}
Add(DoData,5631632,959,672)
{
link(Data,8245945:Var2,[(965,663)(747,663)])
}
Add(GetDataEx,8245945,741,440)
{
Angle=3
link(Data,9846926:Var,[(706,445)])
}[/scroll]

Редактировалось 2 раз(а), последний 2020-11-30 01:35:55
карма: 22

0
Ответов: 672
Рейтинг: 141
#44: 2020-11-30 07:42:28 ЛС | профиль | цитата
nesco, я говорил про выходные данные верхней точки "VirtualData". При изменении вертикального размера таблиц "MTStrTbl", данные на точке PerPage меняются, НО максимальный индекс [Idx] в MT потоке с точки "VirtualData" остаётся прежним и получается что невозможно загрузить в таблицу все данные из списка строк и виртуальная таблица выглядит укороченной.
Если в твоём примере в свойстве "Aling" таблицы "MTStrTbl" поставить caClient и растянуть форму во время работы программы вниз, то будет тоже самое.
Add(MainForm,3055292,28,273)
{
Width=528
Height=324
Position=1
Point(onClose)
Point(onKeyDown)
link(onCreate,10039190:doEvent1,[(76,293)(76,279)])
link(onClose,15386547:doClose,[])
link(onKeyDown,9146877:doCheckMask,[(75,307)(75,384)])
}
Add(EventFromData,8915826,441,84)
{
link(onEvent,2121123:doString,[])
}
Add(MST_Virtual,12888280,441,147)
{
SubItemName=0
MSTControl="tab"
Point(doSetVirtIdx)
link(VirtualData,8915826:GetData,[])
}
Add(MST_DrawManager,7694140,238,189)
{
Name="draw"
}
Add(HubEx,2245423,420,273)
{
Angle=3
link(onEvent,12888280:doResetPage,[(424,174)])
}
Add(Hub,10039190,371,273)
{
OutCount=3
link(onEvent1,5113019:doString,[])
link(onEvent2,2245423:doWork2,[(403,286)(403,279)])
link(onEvent3,8095922:doWork1,[(396,293)])
}
Add(Registry,9358416,441,224)
{
HKey=1
Key="Software\hiasm"
Value="InstallPath"
NotEmpty=1
}
Add(FormatStr,5113019,441,273)
{
DataCount=1
Mask="%1\Elements\Delphi\Elements.db"
link(onFString,15386547:doOpen,[(481,279)(481,293)])
link(Str1,9358416:RData,[])
}
Add(DS_SQLite,15386547,490,287)
{
Name="sqlite"
WaitClose=0
link(onOpen,10325432:doQuery,[])
}
Add(DSC_Query,10325432,539,287)
{
SQL="Select * From elements"
DSManager="sqlite"
link(onQuery,3438796:doQuery,[(583,293)(583,279)])
link(onColumns,285545:doAddCols,[(583,300)(583,321)])
}
Add(MST_DB,285545,595,308)
{
MSTControl="tab"
}
Add(FormatStr,2121123,490,84)
{
DataCount=3
Mask="SELECT %3\r\nFROM elements\r\nWHERE\r\n (id = 1 + %1) AND\r\n (id <= (Select Max(id) from elements))\r\nLIMIT 1"
link(onFString,14158325:doQuery,[])
}
Add(MTStrTbl,7148080,238,147)
{
Width=512
Height=140
Align=5
Name="tab"
FlatScroll=1
VirtualTab=0
Grid=0
DrawManager="draw"
Point(onMouseWheel)
link(onMouseWheel,4883725:doCalc,[])
}
Add(DSC_Query,12276451,441,343)
{
SQL="Select Max(id) From elements"
DSManager="sqlite"
link(onQuery,7140700:doOperation,[])
}
Add(Math,7140700,490,343)
{
OpType=7
ResultType=0
link(onResult,12888280:doSetPage,[(648,349)(648,54)(424,54)(424,167)])
link(Op2,12888280:PerPage,[(503,210)(461,210)])
}
Add(MST_SelectRow,10894272,539,385)
{
MSTControl="tab"
}
Add(DoData,14280424,490,385)
{
Data=Integer(0)
link(onEventData,10894272:doSelect,[])
}
Add(Timer,15266977,441,385)
{
Interval=0
Enable=1
AutoStop=1
link(onTimer,14280424:doData,[])
}
Add(KeyMask,7768696,182,350)
{
@Hint=#9:Ctrl-Home|
Ctrl=1
Key=36
link(onFalse,2417777:doCheckMask,[(222,356)(222,342)])
link(onTrue,2245423:doWork3,[(424,363)])
}
Add(KeyMask,2417777,231,336)
{
@Hint=#8:Ctrl_End|
Ctrl=1
Key=35
link(onFalse,8511282:doCheckMask,[(271,342)(271,328)])
link(onTrue,5924517:doEvent1,[])
}
Add(KeyMask,8511282,280,322)
{
@Hint=#11:Ctrl_PageUp|
Key=33
link(onFalse,9597294:doCheckMask,[(320,328)(320,314)])
link(onTrue,12888280:doPrevPage,[(414,335)(414,160)])
}
Add(KeyMask,9597294,329,308)
{
@Hint=#13:Ctrl_PageDown|
Key=34
link(onTrue,13052868:doEvent1,[])
}
Add(Label,1909141,238,105)
{
Left=85
Top=255
Width=344
Height=17
Caption="Листание страниц -- Ctrl-Home, Ctrl-End, Ctrl-PageUp, Ctrl-PageDown"
}
Add(DSC_QueryScalar,14158325,539,84)
{
DSManager="sqlite"
link(onQuery,8915826:doData,[(578,90)(578,76)(431,76)(431,90)])
}
Add(MathParse,4883725,287,175)
{
MathStr="(%2 - sign(%1) * 3) * ((%2 - sign(%1) * 3) >= 0)"
ResultType=0
link(onResult,5531226:doCompare,[])
link(X2,10559126:Var1,[(300,159)])
}
Add(Hub,13052868,371,315)
{
link(onEvent1,12888280:doNextPage,[(404,321)(404,153)])
link(onEvent2,8095922:doWork2,[(389,328)(389,321)])
}
Add(Hub,5924517,371,343)
{
link(onEvent1,12276451:doQuery,[])
link(onEvent2,12907377:doWork2,[(389,356)(389,349)])
}
Add(HubEx,12907377,392,343)
{
Angle=1
link(onEvent,15266977:doTimer,[(396,391)])
}
Add(If_else,5531226,343,175)
{
Type=1
link(onTrue,13854401:doWork2,[])
link(Op2,271845:Var2,[])
}
Add(DSC_Query,3438796,595,273)
{
SQL="Select Max(id) From elements"
DSManager="sqlite"
link(onQuery,6730752:doOperation,[(656,279)(656,46)(334,46)(334,97)])
}
Add(Math,6730752,350,91)
{
OpType=1
Op2=1
ResultType=0
}
Add(If_else,1732159,280,455)
{
Type=2
link(onTrue,66965:doOperation,[])
}
Add(Math,66965,329,455)
{
Op2=1
ResultType=0
link(onResult,1235396:doCompare,[])
link(Op1,8186636:Var2,[])
}
Add(Math,2709587,231,455)
{
Op2=1
ResultType=0
link(onResult,1732159:doCompare,[])
link(Op1,781471:Var1,[(237,432)])
}
Add(Math,4049415,259,511)
{
OpType=1
Op2=1
ResultType=0
link(onResult,7109624:doCompare,[])
link(Op1,781471:Var2,[])
}
Add(GetDataEx,781471,259,427)
{
Angle=1
link(Data,10894272:Index,[(552,432)])
}
Add(If_else,7109624,315,511)
{
Type=1
Op2=Integer(0)
link(onTrue,15484075:doOperation,[])
}
Add(Math,15484075,364,511)
{
OpType=1
Op2=1
ResultType=0
link(onResult,3208855:doWork3,[(431,517)])
link(Op1,8186636:Var3,[(370,418)])
}
Add(GetDataEx,8186636,329,413)
{
link(Data,10559126:Var2,[])
}
Add(HubEx,3208855,427,455)
{
Angle=3
link(onEvent,13854401:doWork3,[])
}
Add(If_else,1235396,378,455)
{
Type=1
link(onTrue,3208855:doWork2,[])
link(Op2,271845:Var3,[(391,138)])
}
Add(KeyMask,9604684,133,364)
{
@Hint=#9:Ctrl-Home|
Key=40
link(onFalse,7768696:doCheckMask,[(173,370)(173,356)])
link(onTrue,2709587:doOperation,[(173,377)(173,461)])
}
Add(KeyMask,9146877,84,378)
{
@Hint=#9:Ctrl-Home|
Key=38
link(onFalse,9604684:doCheckMask,[(124,384)(124,370)])
link(onTrue,4049415:doOperation,[(124,391)(124,517)])
}
Add(GetDataEx,10559126,329,154)
{
Angle=1
link(Data,12888280:CurVirtIdx,[(399,159)(399,194)(447,194)])
}
Add(GetDataEx,271845,350,133)
{
link(Data,6730752:Result,[])
}
Add(HubEx,13854401,427,175)
{
link(onEvent,12888280:doSetVirtIdx,[])
}
Add(HubEx,8095922,392,315)
{
Angle=1
link(onEvent,12907377:doWork1,[])
}
Add(Label,6642375,286,105)
{
Left=85
Top=270
Width=262
Height=17
Caption="Перемещение по пунктам -- Up, Down, MouseWell"
}


--- Добавлено в 2020-11-30 08:32:30

nesco, возможно, так будет понятней.
MST_Virtual.PNG
Add(MainForm,3063237,182,91)
{
Width=545
Height=462
link(onCreate,11085202:doWork1,[])
}
Add(StrList,4383086,364,91)
{
Point(EndIdx)
}
Add(ChildPanel,11085202,238,105)
{
link(onEvent2,9222564:doEvent1,[])
}
BEGIN_SDK
Add(EditMulti,7878121,21,21)
{
EventCount=2
WorkCount=1
Width=440
Height=270
link(doWork1,12297484:doEvent1,[(46,27)(46,97)])
}
Add(Panel,13137533,56,35)
{
Width=529
Height=30
Align=2
}
Add(Button,294400,42,126)
{
Left=15
Top=5
Caption="New"
link(onClick,12836985:doEvent1,[])
}
Add(Button,16443704,42,189)
{
Left=460
Top=5
Enabled=1
Caption="Save"
link(onClick,15140639:doEvent1,[])
}
Add(Edit,10340021,217,35)
{
Left=185
Top=5
Width=90
Text="20000"
DataType=2
}
Add(Label,13731098,168,35)
{
Left=125
Top=7
Width=61
Height=17
Caption="Кол. строк"
}
Add(Button,11871194,238,175)
{
Left=370
Top=5
Caption="View"
link(onClick,1896552:doData,[])
}
Add(LED,11063149,301,49)
{
Left=80
Top=5
Width=20
Height=20
ColorOff=65280
}
Add(Hub,12297484,91,91)
{
OutCount=4
link(onEvent1,3301899:doWork2,[(116,97)(116,83)])
link(onEvent2,3210884:doWork1,[])
link(onEvent3,3789266:doWork1,[(116,111)])
link(onEvent4,14611930:doWork2,[])
}
Add(MultiElement,3210884,217,98)
{
link(onEvent1,2339098:doAdd,[])
link(onEvent2,343437:doEvent1,[])
link(Data1,13711752:Var2,[])
}
BEGIN_SDK
Add(EditMulti,90280,28,21)
{
EventCount=2
WorkCount=2
DataCount=1
Width=440
Height=158
VOffset=7
HOffset=28
link(doWork1,15240120:doEvent1,[])
link(doWork2,15286128:doFor,[(39,41)(39,55)])
}
Add(For,15286128,49,49)
{
@Hint=#18:Количество абзацев|
IncludeEnd=1
link(onEvent,9486001:doRandom,[])
link(onStop,90280:onEvent2,[(88,62)(88,140)(455,140)(455,41)])
link(End,90280:Data1,[])
}
Add(For,11842154,154,49)
{
@Hint=#29:Количество слов в предложении|
link(onEvent,5410569:doText,[])
link(onStop,15892992:doEvent1,[(193,62)(193,97)])
link(End,9486001:Random,[(167,40)(146,40)(146,89)(111,89)])
}
Add(Random,9486001,105,49)
{
Min=7
Max=15
link(onRandom,11842154:doFor,[])
}
Add(InlineCode,5410569,203,42)
{
WorkPoints=#7:doStart|6:doText|
EventPoints=#5:onRes|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onRes : THI_Event;|5: |52: procedure doStart(var _Data:TData; Index:Word); |50: procedure doText(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.doStart;|6: begin|12: Randomize;|5: end;|0:|29:procedure THiAsmClass.doText;|15:var sss:string;|16: i,j:integer;|16: _Rnd:double;|5:BEGIN|11: sss:=' ';|24: j:=round(Random*12)+2;|19: for i:=0 to j do|9: begin|18: _Rnd:=Random;|42: if _Rnd<0.0003 then sss:=sss+'ё' else|42: if _Rnd<0.0007 then sss:=sss+'ъ' else|42: if _Rnd<0.0033 then sss:=sss+'ф' else|42: if _Rnd<0.0065 then sss:=sss+'э' else|42: if _Rnd<0.0101 then sss:=sss+'щ' else|42: if _Rnd<0.0149 then sss:=sss+'ц' else|42: if _Rnd<0.0213 then sss:=sss+'ю' else|42: if _Rnd<0.0286 then sss:=sss+'ш' else|41: if _Rnd<0.038 then sss:=sss+'ж' else|42: if _Rnd<0.0477 then sss:=sss+'х' else|42: if _Rnd<0.0598 then sss:=sss+'й' else|42: if _Rnd<0.0742 then sss:=sss+'ч' else|42: if _Rnd<0.0901 then sss:=sss+'б' else|42: if _Rnd<0.1066 then sss:=sss+'з' else|42: if _Rnd<0.1236 then sss:=sss+'г' else|41: if _Rnd<0.141 then sss:=sss+'ь' else|40: if _Rnd<0.16 then sss:=sss+'ы' else|42: if _Rnd<0.1801 then sss:=sss+'я' else|42: if _Rnd<0.2063 then sss:=sss+'у' else|42: if _Rnd<0.2344 then sss:=sss+'п' else|42: if _Rnd<0.2642 then sss:=sss+'д' else|42: if _Rnd<0.2963 then sss:=sss+'м' else|42: if _Rnd<0.3312 then sss:=sss+'к' else|42: if _Rnd<0.3752 then sss:=sss+'л' else|42: if _Rnd<0.4206 then sss:=sss+'в' else|42: if _Rnd<0.4679 then sss:=sss+'р' else|42: if _Rnd<0.5226 then sss:=sss+'с' else|42: if _Rnd<0.5852 then sss:=sss+'т' else|42: if _Rnd<0.6522 then sss:=sss+'н' else|42: if _Rnd<0.7257 then sss:=sss+'и' else|42: if _Rnd<0.8058 then sss:=sss+'а' else|42: if _Rnd<0.8903 then sss:=sss+'е' else|34: if _Rnd<1 then sss:=sss+'о'; |9: end;|25: _hi_onEvent(onRes,sss);|4:END;|0:|0:|4:end.|
link(onRes,15879034:doWork2,[])
}
Add(StrCat,13455235,308,42)
{
Point(doClear)
link(Str1,7063167:Var3,[(314,33)(328,33)(328,82)])
}
Add(Hub,15240120,70,28)
{
link(onEvent1,5410569:doStart,[(193,34)(193,48)])
link(onEvent2,9486001:doRandomize,[(95,41)(95,62)])
}
Add(DoData,7170534,308,98)
{
link(onEventData,16600547:doTrim,[])
link(Data,7063167:Var2,[])
}
Add(GetDataEx,7063167,308,77)
{
link(Data,13455235:Result,[])
}
Add(Hub,15892992,203,91)
{
OutCount=3
link(onEvent1,7526937:doData,[(242,97)(242,62)])
link(onEvent2,7170534:doData,[])
link(onEvent3,13455235:doClear,[(298,111)(298,55)])
}
Add(DoData,7526937,252,56)
{
Data=String(. )
link(onEventData,15879034:doWork3,[(291,62)])
}
Add(HubEx,15879034,287,42)
{
link(onEvent,13455235:doStrCat,[])
}
Add(StrCase,14266070,406,98)
{
Type=3
link(onModify,90280:onEvent1,[(445,104)(445,34)])
}
Add(Trim,16600547,357,98)
{
Char=" "
Mode=4
link(onTrim,14266070:doModify,[])
}
END_SDK
Add(Hub,12836985,91,126)
{
OutCount=3
link(onEvent1,3301899:doWork3,[(123,132)])
link(onEvent2,3789266:doWork2,[])
link(onEvent3,14611930:doWork3,[(130,146)])
}
Add(HubEx,3301899,119,77)
{
link(onEvent,16463242:doEvent1,[])
}
Add(StrList,2339098,301,98)
{
Point(doSave)
}
Add(DoData,1896552,301,175)
{
link(onEventData,7878121:onEvent2,[(360,181)(360,34)])
link(Data,633127:Var2,[])
}
Add(SDialog,3850500,217,133)
{
Filter="TXT|*.txt"
Point(doFileName)
link(onExecute,2339098:doSave,[])
}
Add(TimeCounter,526452,350,217)
{
link(onStop,10660108:doString,[])
}
Add(Length,4653976,294,224)
{
link(onLength,526452:doStop,[])
link(Str,633127:Var1,[(300,166)])
}
Add(FormatStr,10660108,399,224)
{
DataCount=3
Mask="Сгенерировано %1 символов в %3 строках за %2 мсек"
link(onFString,7878121:onEvent1,[(443,230)(443,27)])
link(Str1,4653976:Result,[(405,215)(391,215)(391,264)(300,264)])
link(Str3,2339098:Count,[(419,159)(314,159)])
}
Add(GetDataEx,633127,301,161)
{
link(Data,2339098:Text,[])
}
Add(HubEx,3789266,112,133)
{
Angle=1
link(onEvent,526452:doStart,[(116,223)])
}
Add(HubEx,14611930,126,112)
{
Angle=3
link(onEvent,3646847:doStart,[(130,111)])
}
Add(Hub,16463242,238,77)
{
link(onEvent1,11063149:doOn,[(291,83)(291,69)])
link(onEvent2,2339098:doClear,[(291,90)(291,111)])
}
Add(Hub,343437,259,105)
{
link(onEvent1,11063149:doOff,[(284,111)(284,62)])
link(onEvent2,4653976:doLength,[(284,118)(284,230)])
}
Add(Thread,3646847,161,105)
{
Delay=20
FastStop=0
link(onExec,3210884:doWork2,[])
}
Add(Hub,15140639,91,189)
{
link(onEvent1,7492483:doOperation,[])
link(onEvent2,3850500:doExecute,[(123,202)(123,181)(200,181)(200,139)])
}
Add(Math,7492483,133,189)
{
OpType=3
Op2=1000
ResultType=0
link(onResult,3543045:doStrCat,[])
link(Op1,13711752:Var1,[(139,75)])
}
Add(GetDataEx,13711752,217,70)
{
link(Data,10340021:Text,[])
}
Add(StrCat,3543045,175,189)
{
Str2="Кстр.txt"
link(onStrCat,3850500:doFileName,[(214,195)(214,181)(207,181)(207,146)])
}
END_SDK
Add(MST_Virtual,15555683,497,161)
{
MSTControl="MTStrTbl"
Point(doSetVirtIdx)
link(onChangeVirtIdx,4071568:doEvent1,[])
link(VirtualData,8915826:GetData,[(503,152)(538,152)(538,439)(615,439)])
}
Add(MathParse,4883725,329,189)
{
MathStr="(%2 - sign(%1) * 3) * ((%2 - sign(%1) * 3) >= 0)"
ResultType=0
link(onResult,5531226:doCompare,[])
link(X2,15555683:CurVirtIdx,[(342,180)(419,180)(419,208)(503,208)])
}
Add(If_else,5531226,378,189)
{
Type=1
link(onTrue,15555683:doSetVirtIdx,[])
link(Op2,4383086:EndIdx,[])
}
Add(EventFromData,8915826,609,399)
{
link(onEvent,83609:doSeparateMT,[])
}
Add(For,8901862,651,217)
{
link(onEvent,91022:doRead,[])
link(Start,10721694:Value,[(657,208)(615,208)])
link(End,7765738:Result,[])
}
Add(Hub,4071568,567,161)
{
OutCount=3
link(onEvent1,10721694:doValue,[])
link(onEvent2,8901862:doFor,[(599,174)(599,223)])
}
Add(Math,7765738,658,161)
{
ResultType=0
link(onResult,53467:doClear,[(739,167)(739,230)])
link(Op2,9846926:Var,[(671,152)(558,152)(558,249)(517,249)])
}
Add(StrList,53467,756,217)
{
}
Add(Hub,9222564,287,112)
{
link(onEvent1,4383086:doText,[])
link(onEvent2,8932995:In,[])
}
Add(MTStrTbl,7148080,266,161)
{
Top=30
Width=529
Height=208
Align=5
Name="MTStrTbl"
Columns=#1:1|
FlatScroll=1
ColumnWidth=500
VirtualTab=0
Point(onMouseWheel)
Point(PerPage)
link(onMouseWheel,4883725:doCalc,[])
}
Add(MT_MultiData,83609,658,399)
{
Count=3
link(onData2,13460754:doEvent1,[])
}
Add(ArrayRW,15065628,770,406)
{
link(onRead,8915826:doData,[(809,412)(809,391)(599,391)(599,405)])
link(Array,53467:Array,[])
}
Add(Memory,10721694,609,161)
{
link(onData,7765738:doOperation,[])
}
Add(ArrayRW,91022,700,217)
{
link(onRead,53467:doAdd,[])
link(Array,4383086:Array,[(706,131)(384,131)])
}
Add(LineBreak,10263262,455,182)
{
link(Out,15555683:doResetPage,[])
Primary=[8932995,-140,-63]
}
Add(Debug,9846926,511,217)
{
WEName=""
VDName="PerPage"
LogCount=100
link(Data,15555683:PerPage,[])
}
Add(Debug,10538246,742,406)
{
WEName="Index с верхней точки"
VDName=""
LogCount=100
link(onEvent,15065628:doRead,[])
}
Add(Hub,13460754,707,406)
{
link(onEvent1,10538246:doEvent,[])
link(onEvent2,6933369:doData,[(732,419)(732,300)])
}
Add(DoData,6933369,756,294)
{
link(onEventData,6397038:doEvent,[])
link(Data,53467:Count,[(762,257)(769,257)])
}
Add(Debug,6397038,819,294)
{
WEName="Количество строк"
VDName=""
LogCount=100
}


Редактировалось 2 раз(а), последний 2020-11-30 09:32:29
карма: 14

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#45: 2020-11-30 12:58:34 ЛС | профиль | цитата
Gunta писал(а):
НО максимальный индекс [Idx] в MT потоке с точки "VirtualData" остаётся прежним

А ты не пробовал перечитывать страницы при изменении высоты таблицы? Изменение высоты никак не связано с количеством загруженных в текущий момент данных, и данные автоматически не перечитываются при изменении высоты. Как было загружено на страницу idx количество строк, так они там и останутся до следующей перечитки.

Редактировалось 1 раз(а), последний 2020-11-30 13:01:31
карма: 22

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