Вверх ↑
Ответов: 2305
Рейтинг: 679
#1: 2025-02-20 08:46:46 ЛС | профиль | цитата
Gunta, достаточно отключить столбец с номером по порядку и остальные столбцы теряют возможность сортировки. Понятно что можно отловить этот момент и соорудить другую строку запроса, но осадок что это приходиться делать через одно место для такой простой задачи остается.
Для работы элемента MST_HDHints

Достаточно изменить 64 строку (процедура _work_doHDHints) на:
    procedure _work_doHDHints(var _Data: TData; Index: word);
nesco в курсе, внесет изменения на svn.

Себе что-то вроде такого изврата сооружу:
Add(MainForm,2363590,168,273)
{
Width=910
Height=440
Caption="Тест с нумерацией"
Position=1
link(onCreate,6127294:doEvent1,[])
}
Add(DS_SQLite,11171972,343,91)
{
Name="bd"
FileName=":memory:"
link(onOpen,7933638:doExec,[])
}
Add(DSC_Exec,7933638,392,91)
{
SQL="CREATE TABLE TableOne(\r\n id integer,\r\n name text, \r\n city text,\r\n age integer);\r\n\r\nINSERT OR IGNORE INTO TableOne VALUES (0,'Петров','Москва',24);\r\nINSERT OR IGNORE INTO TableOne VALUES (1,'Иванов','Минск',43);\r\nINSERT OR IGNORE INTO TableOne VALUES (2,'Сидоров','Киев',28);\r\nINSERT OR IGNORE INTO TableOne VALUES (3,'Смирнов','Киров',19);\r\nINSERT OR IGNORE INTO TableOne VALUES (4,'Малевич','Сидне',53);\r\n\r\nCREATE TABLE TableColumn(\r\n id integer,\r\n name text,\r\n width integer,\r\n align integer, \r\n visible integer,\r\n position integer,\r\n sql_text text,\r\n hint text);\r\n \r\nINSERT OR IGNORE INTO TableColumn VALUES (0,'№ п\п',60,2,1,0,'t1.id','Номер по порядку');\r\nINSERT OR IGNORE INTO TableColumn VALUES (1,'Фамилия',100,0,1,1,'t1.name','Фамилия пользователя');\r\nINSERT OR IGNORE INTO TableColumn VALUES (2,'Город',100,0,1,2,'t1.city','Город регистрации');\r\nINSERT OR IGNORE INTO TableColumn VALUES (3,'Возраст',60,2,1,3,'t1.age','Возраст пользователя');\r\n\r\n "
DSManager="bd"
}
Add(MTStrTbl,9589444,448,427)
{
Left=5
Top=50
Width=880
Height=185
Font=[MS Sans Serif,12,0,0,1]
Name="MainTable"
ColumnClick=1
Grid=0
link(onColumnClick,12387400:doValue,[])
}
Add(Hub,6127294,224,287)
{
OutCount=3
link(onEvent1,11171972:doOpen,[(269,293)(269,97)])
link(onEvent2,12312804:doEvent1,[])
link(onEvent3,11316354:doQuery,[(259,307)(259,790)])
}
Add(MST_HDHints,1864349,651,315)
{
MSTControl="MainTable"
HintManager="hint_1"
Point(doHDHints)
}
Add(MST_ColAction,3345400,504,259)
{
MSTControl="MainTable"
}
Add(DSC_Query,7961655,371,203)
{
SQL="SELECT name,width,align,hint,sql_text FROM TableColumn WHERE visible = 1 ORDER BY position"
DSManager="bd"
link(onQuery,11858022:doEvent1,[])
}
Add(StrList,16145845,546,203)
{
@Hint=#9:Подсказки|
AddHint(-25,-39,71,13,@Hint)
}
Add(DoData,15517015,546,315)
{
link(onEventData,5742612:doEvent1,[])
link(Data,16145845:Text,[])
}
Add(Hub,5742612,588,315)
{
link(onEvent1,1864349:doHDHints,[])
link(onEvent2,16145845:doClear,[(608,328)(608,192)(534,192)(534,216)])
}
Add(FormatStr,8952363,455,259)
{
DataCount=3
Mask="%1=%2==%3"
link(onFString,3345400:doColAction,[])
}
Add(MT_MultiData,12338463,455,203)
{
From=3
link(onData1,16145845:doAdd,[])
link(onData2,8664963:doAdd,[(529,216)(529,244)])
}
Add(Hub,11858022,420,203)
{
link(onEvent1,12338463:doSeparateMT,[])
link(onEvent2,8952363:doString,[(444,216)(444,265)])
}
Add(MST_Clear,2976861,644,434)
{
MSTControl="MainTable"
}
Add(StrList,8664963,679,238)
{
@Hint=#10:sql строка|
AddHint(-19,-27,66,13,@Hint)
}
Add(Replace,7910426,679,497)
{
SubStr="\r\n"
DestStr=","
link(onReplace,5531245:doTrim,[])
link(Str,8664963:Text,[])
}
Add(StrList,16350257,539,448)
{
Strings=#3:ASC|4:DESC|0:|
AddHint(-8,-57,36,39,Strings)
}
Add(ArrayRW,5014116,490,497)
{
link(onRead,1521343:doRead,[])
link(Array,8664963:Array,[(496,362)(699,362)])
link(Index,12387400:Value,[])
}
Add(ArrayRW,1521343,553,497)
{
link(onRead,15278921:doEvent1,[])
link(Array,16350257:Array,[])
link(Index,16068425:Count,[(566,487)(580,487)])
}
Add(CounterEx,16068425,574,434)
{
Max=1
Point(doReset)
link(onNext,15785294:doEvent1,[])
}
Add(LineBreakEx,16767817,490,539)
{
Caption="col"
Type=3
link(_Data,5014116:Item,[])
}
Add(LineBreakEx,4272821,553,539)
{
Caption="order"
Type=3
link(_Data,1521343:Item,[])
}
Add(Memory,12387400,497,434)
{
Default=Integer(0)
link(onData,16068425:doNext,[])
AddHint(0,-19,21,13,Default)
}
Add(HubEx,3716662,439,497)
{
link(onEvent,5014116:doRead,[])
}
Add(HintManager,15662105,616,273)
{
Name="hint_1"
Font=[MS Sans Serif,12,0,0,1]
HintWidth=150
}
Add(MTStrTbl,8976226,329,693)
{
Left=5
Top=245
Width=880
Height=140
Font=[MS Sans Serif,12,0,0,1]
Name="SettingTable"
Columns=#12:Название=100|10:Ширина=100|4:id=0|
ColumnClick=1
CheckBoxes=0
Grid=0
link(onCheck,4325680:doEvent1,[])
}
Add(DSC_Query,11316354,329,784)
{
SQL="SELECT name,width,id,visible FROM TableColumn ORDER BY position"
DSManager="bd"
link(onQuery,13973037:doSplit,[])
}
Add(MST_RowAction,9077761,434,826)
{
MSTControl="SettingTable"
}
Add(MST_CheckBoxes,987231,434,784)
{
MSTControl="SettingTable"
link(IndexRow,9077761:EndIdx,[(440,771)(485,771)(485,879)(447,879)])
}
Add(MT_Part,13973037,378,784)
{
After=2
link(onSplit,987231:doCheckBox,[])
link(onPart,9077761:doRowAction,[(418,797)(418,832)])
}
Add(DSC_Query,8389131,539,714)
{
DSManager="bd"
}
Add(FormatStr,5628721,497,714)
{
Mask="UPDATE TableColumn SET visible = %2 WHERE id=%1"
link(onFString,8389131:doQuery,[])
link(Str2,4723385:Value2,[])
}
Add(Hub,4325680,378,707)
{
OutCount=3
link(onEvent1,4723385:doValue,[(400,713)(400,671)])
link(onEvent2,12391129:doRead,[])
link(onEvent3,12312804:doEvent2,[(398,727)(398,749)(271,749)(271,307)])
}
Add(MT_MultiMem,4723385,497,665)
{
}
Add(MST_ArrayRows,13277145,406,665)
{
MSTControl="SettingTable"
}
Add(MT_MTArrayRW,12391129,406,714)
{
link(onRead,12839256:doSeparateMT,[])
link(Array,13277145:Strings,[])
}
Add(MT_MultiData,12839256,448,714)
{
From=2
Count=1
link(onData1,5628721:doString,[])
}
Add(Hub,12312804,315,294)
{
InCount=2
OutCount=5
link(onEvent1,3614531:doClear,[(343,300)(343,160)])
link(onEvent2,8664963:doClear,[(667,307)(667,251)])
link(onEvent3,7961655:doQuery,[(350,314)(350,209)])
link(onEvent4,15517015:doData,[])
link(onEvent5,3716662:doWork2,[(402,328)(402,503)])
}
Add(Hub,15785294,616,434)
{
link(onEvent1,2976861:doClear,[])
link(onEvent2,3716662:doWork3,[(639,447)(639,567)(443,567)])
}
Add(MST_Clear,3614531,371,154)
{
ClearAll=0
MSTControl="MainTable"
}
Add(InfoTip,582471,301,140)
{
Info=#16:Основная таблица|
Width=848
Height=494
}
Add(InfoTip,11398193,301,644)
{
Info=#16:Таблица настроек|
Width=316
Height=242
}
Add(Hub,15278921,644,497)
{
link(onEvent1,7910426:doReplace,[])
}
Add(DSC_Query,9807701,1057,504)
{
DSManager="bd"
link(onQuery,15038004:doAddRow,[])
}
Add(MST_DB,15038004,1099,504)
{
MSTControl="MainTable"
}
Add(FormatStr,8918789,987,504)
{
DataCount=3
Mask="SELECT\r\n %3\r\nFROM TableOne t1 \r\nORDER BY %1 %2;"
link(onFString,9949893:doEvent1,[])
link(Str1,8471684:getVar,[])
link(Str2,2686934:getVar,[])
AddHint(-52,53,96,52,Mask)
}
Add(LineBreakEx,8471684,987,462)
{
Caption="col"
Type=2
}
Add(LineBreakEx,2686934,994,476)
{
Caption="order"
Type=2
}
Add(Trim,5531245,721,497)
{
Char=","
Mode=2
link(onTrim,10597090:doReplace,[])
}
Add(Replace,10597090,763,497)
{
SubStr="t1.id,"
DestStr="(SELECT COUNT(*) FROM TableOne AS t2 WHERE t2.%1 %2 t1.%1),"
link(onReplace,4477783:doEvent1,[])
AddHint(-5,-25,38,13,SubStr)
AddHint(-83,84,197,26,DestStr)
}
Add(FormatStr,5798790,945,504)
{
Mask=""
Point(FString)
Point(doMask)
link(onFString,8918789:doString,[])
link(Str1,14537526:Part1,[])
link(Str2,15163606:Value,[])
}
Add(LineBreakEx,2078271,945,357)
{
Caption="col"
Type=2
}
Add(Hub,4477783,805,497)
{
OutCount=4
link(onEvent1,14537526:doSplit,[(840,503)(840,391)])
link(onEvent2,3220986:doCompare,[(848,510)(848,454)])
link(onEvent3,5798790:doMask,[])
link(onEvent4,5798790:doString,[(893,524)(893,510)])
}
Add(MultiStrPart,14537526,945,385)
{
Char="."
From=1
Count=1
link(Str,2078271:getVar,[])
}
Add(LineBreakEx,522462,854,413)
{
Caption="order"
Type=2
}
Add(Memory,15163606,952,448)
{
Default=String(>=)
AddHint(-5,-21,37,13,Default)
}
Add(If_else,3220986,854,448)
{
Op2=String(ASC)
link(onTrue,15328363:doData,[])
link(onFalse,15163606:doClear,[])
link(Op1,522462:getVar,[])
AddHint(1,34,46,13,Op2)
}
Add(DoData,15328363,903,448)
{
Data=String(<=)
link(onEventData,15163606:doValue,[])
AddHint(-6,-23,37,13,Data)
}
Add(Edit,9203527,1057,546)
{
Left=5
Top=15
Width=880
Height=25
Font=[MS Sans Serif,10,0,0,1]
ReadOnly=0
}
Add(Hub,9949893,1029,504)
{
link(onEvent1,9807701:doQuery,[])
link(onEvent2,9203527:doText,[(1047,517)(1047,552)])
}
Повторюсь, это какая-то дикость чтоб так изворачиваться чтоб получить такую простую вещь.
карма: 11

0
Редактировалось 3 раз(а), последний 2025-02-20 10:47:44