Вверх ↑
Разработчик
Ответов: 26300
Рейтинг: 2146
#1: 2025-03-02 15:40:04 ЛС | профиль | цитата
Решил немного продолжить тему и перевел схему на БД. База создается в памяти, но если заменить :memory: на имя файла, то БД будет создаваться в файле. Схема получилась даже проще, чем предыдущая

Схема


Add(MainForm,2953706,189,161)
{
Width=715
Height=506
MarginLeft=3
MarginTop=3
MarginRight=3
MarginBottom=3
Border=3
BorderStyle=1
Position=1
Point(onClose)
link(onCreate,12035853:doTimer,[])
link(onClose,5269537:doClose,[(235,188)(235,216)(333,216)(333,188)])
}
Add(ChildScrollBox,8844261,357,133)
{
}
BEGIN_SDK
Add(EditMulti,4271376,21,21)
{
WorkCount=1
Width=377
Height=228
link(doWork1,879511:doEvent1,[(53,27)(53,69)])
}
Add(ScrollBox,964248,322,77)
{
Width=709
Height=477
Align=5
WinStyle=2
Name="scrl_001"
BorderStyle=1
Point(Width)
}
Add(ChildPanelEx,2261261,266,147)
{
@Hint=#19:Динамические группы|
Mode=1
link(onVShift,8595977:doOperation,[(305,153)(305,62)(249,62)(249,83)])
link(onResult,4141012:doMessage,[])
link(vOffset,15893030:Var2,[])
link(pWidth,964248:Width,[(279,138)(342,138)])
AddHint(-21,69,130,13,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,3885935,21,21)
{
WorkCount=#5:##add|8:##select|
EventCount=#8:onVShift|8:onResult|
VarCount=#7:##count|0:|
DataCount=#7:vOffset|6:pWidth|
Width=650
Height=522
Point(##add)
Point(##select)
Point(##count)
link(##add,11635148:doSeparateMT,[(39,27)(39,146)])
link(##select,13247899:doWork2,[(46,34)(46,503)])
}
Add(Panel,15904931,602,49)
{
Width=369
Height=86
Font=[MS Sans Serif,12,0,0,1]
Visible=1
Name="panel_001"
Point(doWidth)
Point(Height)
Point(doTop)
Point(doHeight)
Point(doVisible)
}
Add(Button,11087212,266,147)
{
Width=135
Height=85
Align=1
Font=[MS Sans Serif,12,0,0,1]
TabOrder=-1
Caption=""
Point(doCaption)
Point(doFont)
link(onClick,16401184:doEvent1,[])
}
Add(MTStrTbl,11520425,343,357)
{
Left=87
Width=280
Height=82
Align=5
Font=[MS Sans Serif,11,0,0,1]
WinStyle=3
Name="mtbl_001"
Columns=#9:name1=150|9:name2=100|9:name3=100|8:name4=50|
Style=4
Grid=0
Point(doAlign)
}
Add(Hub,4250363,196,140)
{
link(onEvent1,6740804:doOperation,[(221,146)(221,62)])
link(onEvent2,11087212:doCaption,[])
}
Add(Math,6740804,392,56)
{
OpType=1
Op2=18
ResultType=0
link(onResult,15904931:doWidth,[])
link(Op1,3885935:pWidth,[(398,47)(34,47)])
}
Add(Math,7577038,287,462)
{
OpType=2
ResultType=0
link(onResult,8700013:doEvent1,[])
link(Op1,14478038:Result,[])
link(Op2,11520425:Count,[(300,446)(363,446)])
}
Add(Hub,8700013,448,462)
{
OutCount=3
link(onEvent1,2608456:doData,[(473,468)(473,433)])
link(onEvent2,15904931:doHeight,[(578,475)(578,76)])
link(onEvent3,11458420:doOperation,[])
}
Add(DoData,2608456,532,427)
{
link(onEventData,15904931:doTop,[(571,433)(571,69)])
link(Data,3885935:vOffset,[(538,292)(27,292)])
}
Add(Math,11458420,602,476)
{
OpType=1
Op2=1
link(onResult,3885935:onVShift,[(648,482)(648,27)])
link(Op1,15904931:Height,[])
}
Add(ChanelToIndex,13247899,532,490)
{
link(onIndex,15904931:doVisible,[(585,496)(585,83)])
}
Add(FontManager,7461808,140,301)
{
ControlManager="mtbl_001"
Point(FontCharset)
}
Add(Font,6371043,140,357)
{
Point(CharSet)
link(onFont,4843448:doEvent1,[])
link(Size,7461808:FontSize,[])
link(Color,7461808:FontColor,[])
link(Name,7461808:FontName,[])
link(Style,7461808:FontStyle,[])
link(CharSet,7461808:FontCharset,[])
}
Add(Img_Text,3115299,280,357)
{
Text="W"
Point(doFont)
}
Add(Hub,4843448,196,357)
{
OutCount=3
link(onEvent1,11087212:doFont,[(249,363)(249,160)])
link(onEvent2,3115299:doFont,[])
link(onEvent3,14478038:doOperation,[(221,377)(221,412)])
}
Add(Math,14478038,287,406)
{
Op2=4
ResultType=0
link(Op1,3115299:TextHeight,[])
}
Add(InfoTip,6154573,112,294)
{
Info=#25:Определение высоты группы|
VAlign=2
Width=274
Height=235
Margin=10
}
Add(DSC_Query,14267734,343,245)
{
@Color=5614250
DSManager="parent.parent.sqlite_1"
link(onQuery,2337115:doAddRow,[])
}
Add(FormatStr,11075861,196,245)
{
DataCount=1
Mask="SELECT surname,city,age,reg FROM elements WHERE parent=%1"
link(onFString,14267734:doQuery,[])
link(Str1,8637286:Value,[])
}
Add(MT_MultiData,11635148,77,140)
{
link(onData1,4250363:doEvent1,[])
link(onData2,8637286:doValue,[(130,153)(130,188)])
}
Add(Memory,8637286,196,182)
{
link(onData,15029490:doEvent1,[(235,188)(235,223)(67,223)(67,356)])
}
Add(MST_ArrayRows,15673897,343,98)
{
MSTControl="mtbl_001"
}
Add(MT_MTArrayEnum,9756254,343,154)
{
link(onItem,10915627:doStr,[])
link(Array,15673897:Strings,[])
}
Add(MT_String,10915627,392,154)
{
link(onResult,2224873:doTrim,[])
}
Add(StrList,10031208,497,154)
{
}
Add(DoData,3602060,497,203)
{
link(onEventData,3885935:onResult,[(536,209)(536,34)])
link(Data,10031208:Text,[])
}
Add(Hub,16401184,308,147)
{
OutCount=3
link(onEvent1,10031208:doClear,[(333,153)(333,146)(480,146)(480,167)])
link(onEvent2,9756254:doEnum,[])
link(onEvent3,3602060:doData,[(333,167)(333,209)])
}
Add(Hub,15029490,77,350)
{
OutCount=3
link(onEvent1,7859062:doClear,[(102,356)(102,251)])
link(onEvent2,6371043:doFont,[])
link(onEvent3,7577038:doOperation,[(130,370)(130,468)])
}
Add(MST_DB,2337115,392,245)
{
MSTControl="mtbl_001"
}
Add(MST_Clear,7859062,140,245)
{
MSTControl="mtbl_001"
link(onChange,11075861:doString,[])
}
Add(Trim,2224873,441,154)
{
Char=";"
link(onTrim,10031208:doAdd,[])
}
END_SDK
Add(Hub,879511,63,63)
{
OutCount=4
link(onEvent1,8345200:doQuery,[(88,69)(88,55)])
link(onEvent2,8595977:doClear,[(113,76)(113,90)])
link(onEvent3,3963701:doBeginUpdate,[(88,83)(88,209)])
link(onEvent4,1686440:doFor,[(102,90)(102,160)])
}
Add(Math,8595977,266,77)
{
ResultType=0
Point(doClear)
link(Op2,15893030:Var1,[(279,68)(258,68)(258,124)])
}
Add(GetDataEx,15893030,266,119)
{
link(Data,8595977:Result,[])
}
Add(RedrawManager,3963701,182,189)
{
ControlManager="scrl_001"
Point(doEndUpdate)
Point(doBeginUpdate)
}
Add(Message,4141012,322,154)
{
}
Add(For,1686440,126,154)
{
IncludeEnd=1
link(onEvent,2261261:##select,[])
link(onStop,3963701:doEndUpdate,[(172,167)(172,202)])
link(End,2261261:##count,[(139,145)(223,145)(223,208)(272,208)])
}
Add(DSC_Query,8345200,126,49)
{
@Color=5614250
SQL="SELECT name,idx FROM groups"
DSManager="parent.sqlite_1"
link(onQuery,2261261:##add,[(228,55)(228,153)])
}
END_SDK
Add(Timer,12035853,245,175)
{
Interval=0
Enable=1
AutoStop=1
link(onTimer,3931479:doEvent1,[])
}
Add(DSC_Exec,9529671,413,175)
{
@Color=5614250
SQL="BEGIN TRANSACTION;\r\nCREATE TABLE groups(id INTEGER PRIMARY KEY AUTOINCREMENT,name text,idx int,parent int);\r\nINSERT INTO "groups" VALUES(Null,'Администрация',1,-1);\r\nINSERT INTO "groups" VALUES(Null,'Пользователи',2,-1);\r\nINSERT INTO "groups" VALUES(Null,'Гости',3,-1);\r\nINSERT INTO "groups" VALUES(Null,'Администрация',4,-1);\r\nINSERT INTO "groups" VALUES(Null,'Пользователи',5,-1);\r\nINSERT INTO "groups" VALUES(Null,'Гости',6,-1);\r\nINSERT INTO "groups" VALUES(Null,'Администрация',7,-1);\r\nINSERT INTO "groups" VALUES(Null,'Пользователи',8,-1);\r\nINSERT INTO "groups" VALUES(Null,'Гости',9,-1);\r\nCREATE TABLE elements(id INTEGER PRIMARY KEY AUTOINCREMENT,surname text,city text,age text,reg text,idx int,parent int);\r\nINSERT INTO "elements" VALUES(Null,'Петров','Москва','56','777',1001,1);\r\nINSERT INTO "elements" VALUES(Null,'Иванов','Минск','49','',1002,1);\r\nINSERT INTO "elements" VALUES(Null,'Сидоров','Киев','26','',1003,2);\r\nINSERT INTO "elements" VALUES(Null,'Смирнов','Киров','36','',1004,2);\r\nINSERT INTO "elements" VALUES(Null,'Малевич','Сидней','27','',1005,2);\r\nINSERT INTO "elements" VALUES(Null,'Гзбыштнев','Варшава','34','',1006,3);\r\nINSERT INTO "elements" VALUES(Null,'Волайтос','Вильнус','53','',1007,3);\r\nINSERT INTO "elements" VALUES(Null,'Портос','Мадрид','62','',1008,3);\r\nINSERT INTO "elements" VALUES(Null,'Арамис','Париж','63','',1009,3);\r\nINSERT INTO "elements" VALUES(Null,'Петров','Москва','56','777',1010,4);\r\nINSERT INTO "elements" VALUES(Null,'Иванов','Минск','49','',1011,4);\r\nINSERT INTO "elements" VALUES(Null,'Сидоров','Киев','26','',1012,5);\r\nINSERT INTO "elements" VALUES(Null,'Смирнов','Киров','36','',1013,5);\r\nINSERT INTO "elements" VALUES(Null,'Малевич','Сидней','27','',1014,5);\r\nINSERT INTO "elements" VALUES(Null,'Гзбыштнев','Варшава','34','',1015,6);\r\nINSERT INTO "elements" VALUES(Null,'Волайтос','Вильнус','53','',1016,6);\r\nINSERT INTO "elements" VALUES(Null,'Портос','Мадрид','62','',1017,6);\r\nINSERT INTO "elements" VALUES(Null,'Арамис','Париж','63','',1018,6);\r\nINSERT INTO "elements" VALUES(Null,'Петров','Москва','56','777',1019,7);\r\nINSERT INTO "elements" VALUES(Null,'Иванов','Минск','49','',1020,7);\r\nINSERT INTO "elements" VALUES(Null,'Сидоров','Киев','26','',1021,8);\r\nINSERT INTO "elements" VALUES(Null,'Смирнов','Киров','36','',1022,8);\r\nINSERT INTO "elements" VALUES(Null,'Малевич','Сидней','27','',1023,8);\r\nINSERT INTO "elements" VALUES(Null,'Гзбыштнев','Варшава','34','',1024,9);\r\nINSERT INTO "elements" VALUES(Null,'Волайтос','Вильнус','53','',1025,9);\r\nINSERT INTO "elements" VALUES(Null,'Портос','Мадрид','62','',1026,9);\r\nINSERT INTO "elements" VALUES(Null,'Арамис','Париж','63','',1027,9);\r\nCOMMIT;\r\n"
DSManager="sqlite_1"
}
Add(DS_SQLite,5269537,357,175)
{
@Color=5614250
Name="sqlite_1"
FileName=":memory:"
WaitClose=0
link(onOpen,9529671:doExec,[])
}
Add(Hub,3931479,301,175)
{
link(onEvent1,5269537:doOpen,[])
link(onEvent2,8844261:doWork1,[(326,188)(326,139)])
}

карма: 22

0