Вверх ↑
Этот топик читают: Гость
Ответов: 2467
Рейтинг: 698
#136: 2025-06-18 09:16:22 ЛС | профиль | цитата
Gunta писал(а):
Случайно не знаешь почему перестал отображаться список проектов в публикторе HiAsm?
Не знаю, но у меня такое же безобразие отображается, как и у тебя.
Gunta писал(а):
Наверное, что-то такое можно сделать.
Так на самом HiAsm сделать простенькую схему на базе SQlite с таблицей:
-название
-описание
-теги
-схема
карма: 11

0
Ответов: 994
Рейтинг: 207
#137: 2025-06-29 18:30:53 ЛС | профиль | цитата
Вызвать Экранную клавиатуру (OSK.exe) из своей программы можно несколькими способами
1.

Add(MainForm,2953706,63,105)
{
}
Add(InlineCode,13824145,182,112)
{
WorkPoints=#9:doShowOSK|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|42:uses Windows, ShellApi, Kol, Share, Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|0:|0:|47:Procedure doShowOSK (var dt:TData; Index:word);|0:|5: end;|0:|99:Function Wow64DisableWow64FsRedirection(Var Wow64FsEnableRedirection: LongBool): LongBool; StdCall;|64: External 'Kernel32.dll' Name 'Wow64DisableWow64FsRedirection';|0:|14:implementation|0:|60:Procedure THiAsmClass.doShowOSK (var dt:TData; Index:word);|3:Var|37: Wow64FsEnableRedirection: LongBool;|5:begin|117: if Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection) then ShellExecute(0,nil, 'osk.exe', nil, nil, SW_show);|4:end;|0:|4:end.|
}
Add(Memo,5628052,126,105)
{
Left=75
Top=45
Width=280
Height=200
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
Point(Handle)
Point(doSetFocus)
Point(onMouseUp)
link(onMouseUp,13824145:doShowOSK,[])
}

2.

Add(KeyEvent,9798208,322,63)
{
Code=91
}
Add(KeyEvent,11056287,322,105)
{
Code=79
Ctrl=1
}
Add(Hub,2282427,259,70)
{
OutCount=3
link(onEvent1,9798208:doPressDown,[])
link(onEvent2,11056287:doPress,[(298,83)(298,111)])
link(onEvent3,9798208:doPressUp,[(305,90)(305,83)])
}
Add(Memo,8902251,210,63)
{
Left=10
Top=10
Width=265
Height=120
Align=5
ScrollBars=3
Point(onMouseUp)
link(onMouseUp,2282427:doEvent1,[])
}
Add(MainForm,2953706,147,56)
{
}



Схема для вызова Сенсорной клавиатуры (TabTip.exe)

Add(MainForm,5275989,56,56)
{
Point(Handle)
link(onCreate,14943120:doWrite,[])
}
Add(WinExec,4233445,112,112)
{
FileName="TabTip.exe"
WorkingDir="C:\\Program Files\\Common Files\\microsoft shared\\ink"
Point(onErrorExec)
}
Add(Memo,5628052,56,112)
{
Left=75
Top=45
Width=280
Height=200
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
Point(Handle)
Point(doSetFocus)
Point(onMouseUp)
link(onMouseUp,4233445:doShellExec,[])
}
Add(Registry,14943120,112,63)
{
HKey=2
Key="SOFTWARE\Microsoft\TabletTip\1.7"
Value="EnableDesktopModeAutoInvoke"
DataType=0
Data="1"
}


Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi) rev - 2429
Не уверен, что будет работать на других версиях Windows

--- Добавлено в 2025-06-29 18:54:30

Несколько вариантов узнать разрядность операционной системы

Add(MainForm,2953706,21,77)
{
Width=693
Height=319
Caption="Как проверить разрядность операционной системы?"
}
Add(WinExec,7527029,294,238)
{
FileName="powershell"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,9798899:doGetString,[])
}
Add(FormatStr,6888314,238,252)
{
Mask="[Runtime.InteropServices.Marshal]::ReadInt16([IntPtr]0x7FFE026A)"
link(onFString,7527029:doConsoleExec,[])
}
Add(Memo,7378392,455,84)
{
Width=677
Height=280
Align=5
Font=[Consolas,18,0,0,204]
ScrollBars=3
}
Add(StrList,9798899,350,224)
{
FileName="x86\r\nMIPS\r\nAlpha\r\nPowerPC\r\n\r\n\r\nia64\r\n\r\n\r\nx64"
Strings=#3:x86|0:|0:|0:|0:|0:|0:|0:|0:|3:x64|
Point(doGetString)
Point(onGetString)
link(onGetString,16329106:doWork2,[])
}
Add(WinExec,12079174,294,175)
{
FileName="powershell"
Param="-Command [string]$arch = 'x64';if ($env:PROCESSOR_ARCHITECTURE -eq 'x86') {if (!$env:PROCESSOR_ARCHITEW6432) {$arch = 'x86'}};$arch"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,15892264:doWork2,[])
link(onConsoleError,15892264:doWork3,[(347,202)])
}
Add(DoData,590103,294,84)
{
link(onEventData,5428858:doWork2,[])
link(Data,15787741:WinInfo,[])
}
Add(InlineCode,4653664,294,287)
{
@Hint=#14:Версия Windows|16:32-разрядная - 0|16:64-разрядная - 1|
VarPoints=#10:GetBitness|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses Kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|3: |9: public|50: procedure GetBitness(var dt:TData; idx:word);|5: end;|0:|14:implementation|0:|33:procedure THiAsmClass.GetBitness;|4:var |20: bitness:integer; |5:begin|15: bitness := 0;|5: asm|16: xor eax, eax|14: mov ax, cs|14: shr eax, 5|20: mov bitness, eax|6: end;|24: dtInteger(dt,bitness);|6:end; |4:end.|
}
Add(ComputerInfo,15787741,273,28)
{
Mask=""
WinInfoMask="x%x"
}
Add(MultiSetParam,2570055,287,336)
{
Parameters=#12:32-разрядная|12:64-разрядная|0:|
Count=1
OutType=1
Point(Index)
link(onSet1,16329106:doWork3,[(417,342)])
link(Index,4653664:GetBitness,[])
}
Add(Menu,11705523,105,77)
{
Menu=#12:ComputerInfo|4:Wmic|12:Powershell 1|12:Powershell 2|10:InlineCode|0:|
Point(onSelectNum)
link(onSelectNum,1131609:doEvent,[])
}
Add(IndexToChanel,1131609,161,84)
{
Count=5
link(onEvent1,590103:doData,[])
link(onEvent2,3484488:doConsoleExec,[(284,97)(284,146)])
link(onEvent3,12079174:doConsoleExec,[(277,104)(277,195)])
link(onEvent4,6888314:doString,[(228,111)(228,258)])
link(onEvent5,2570055:doSet,[(221,118)(221,342)])
}
Add(HubEx,5428858,413,84)
{
link(onEvent,7378392:doAdd,[])
}
Add(HubEx,16329106,413,231)
{
Angle=3
link(onEvent,11495910:doWork3,[])
}
Add(WinExec,3484488,294,126)
{
FileName="wmic"
Param="os get osarchitecture"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,8749782:doWork2,[])
link(onConsoleError,8749782:doWork3,[(347,153)])
}
Add(HubEx,5925386,413,140)
{
Angle=3
link(onEvent,5428858:doWork3,[])
}
Add(HubEx,8749782,343,140)
{
link(onEvent,5925386:doWork2,[])
}
Add(HubEx,11495910,413,189)
{
Angle=3
link(onEvent,5925386:doWork3,[])
}
Add(HubEx,15892264,343,189)
{
link(onEvent,11495910:doWork2,[])
}


--- Добавлено в 2025-06-29 18:55:54

Узнать разрядность программы или библиотеки(dll)

Add(MainForm,7480964,63,63)
{
Width=530
Caption="Узнать разрядность программы или библиотеки(dll)"
link(onCreate,5181247:doExecute,[])
}
Add(ODialog,5181247,119,77)
{
Filter="EXE|*.exe|DLL|*.dll"
link(onExecute,1554397:doEvent1,[])
}
Add(FileStream,11840039,301,77)
{
Point(doPosition)
}
Add(DataToFileEx,7328370,238,147)
{
DataSize=4
link(onGet,13839180:doWork3,[(284,153)])
link(Stream,3206632:Var1,[(244,131)])
}
Add(Memo,15599193,497,161)
{
Width=514
Height=261
Align=5
Font=[Lucida Console,12,0,0,204]
ScrollBars=3
}
Add(MultiSetParam,2570055,441,161)
{
Parameters=#12:32-разрядная|12:64-разрядная|0:|
Count=1
OutType=1
Point(Index)
link(onSet1,15599193:doAdd,[])
}
Add(DoData,6684174,231,91)
{
Data=Integer(60)
link(onEventData,13839180:doWork2,[])
}
Add(Hub,1554397,168,77)
{
OutCount=5
link(onEvent1,11840039:doOpen,[])
link(onEvent2,6684174:doData,[(221,90)(221,97)])
link(onEvent3,7328370:doGet,[(200,97)(200,153)])
link(onEvent4,8374205:doCopy,[(193,104)(193,188)])
link(onEvent5,11840039:doClose,[(277,111)(277,90)])
}
Add(StreamConvertor,16709241,343,182)
{
Point(Data)
link(onResult,11272624:doGetIndex,[])
link(Data,14642201:Var2,[])
}
Add(StreamCopy,8374205,294,182)
{
Count=6
link(onCopy,16709241:doConvert,[])
link(Dest,14642201:Var1,[(300,159)])
link(Source,3206632:Var2,[])
}
Add(MemoryStream,16421182,343,112)
{
}
Add(GetDataEx,14642201,343,154)
{
link(Data,16421182:Stream,[])
}
Add(HubEx,13839180,280,91)
{
link(onEvent,11840039:doPosition,[])
}
Add(GetDataEx,3206632,301,126)
{
link(Data,11840039:Stream,[])
}
Add(StrList,11272624,392,154)
{
Strings=#12:504500004C01|12:504500006486|
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,2570055:doSet,[])
}


Редактировалось 2 раз(а), последний 2025-06-29 18:55:54
карма: 20

2
Голосовали:strannik_nebes, Pavel
Ответов: 994
Рейтинг: 207
#138: 2025-07-05 07:25:22 ЛС | профиль | цитата
Небольшая схема для создания ISO образа из любой папки
https://forum.hiasm.com/getfile/40594
карма: 20

1
файлы: 1Creating ISO Files.zip [1.8KB] [259]
Голосовали:strannik_nebes
Ответов: 994
Рейтинг: 207
#139: 2025-08-07 17:54:27 ЛС | профиль | цитата
Простой способ добавления своей программы в меню Пуск.

https://forum.hiasm.com/getfile/40599

Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi) rev - 2429

--- Добавлено в 2025-08-07 18:10:35

Редактировалось 2 раз(а), последний 2025-08-07 18:11:29
карма: 20

1
файлы: 1Добавить свою программу в меню Пуск Windows 2.zip [1.4KB] [225]
Голосовали:FMKstudio
Ответов: 994
Рейтинг: 207
#140: 2025-09-28 06:05:43 ЛС | профиль | цитата
Определение кодировки текстовых файлов по BOM - маркер последовательности байтов.
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2#%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8_%D0%BF%D0%BE_%D0%BC%D0%B0%D1%80%D0%BA%D0%B5%D1%80%D1%83_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2

Не все текстовые файлы содержат данный маркер.
В архиве две схемы и файлы примеров. https://forum.hiasm.com/getfile/40607
карма: 20

0
файлы: 1Text File Encoding.zip [4KB] [76]
Ответов: 994
Рейтинг: 207
#141: 2025-09-30 07:20:35 ЛС | профиль | цитата
Выкладываю SQLite базу по краткому описанию файлов, их тип в зависимости от расширения.
Более девяти тысяч уникальных описаний (9406), Размер – 832,0 кб.

В архиве также две схемы:
‘File Type Identification.sha’ – для работы положите рядом файл sqlite3.dll
‘File Type Identification PS.sha’ – работает без библиотеки sqlite3.dll

В базе все расширения начинаются с точки поэтому в фильтре также начинайте с точки.

Боюсь, что форум опять отвалится на несколько дней если я выложу архив, поэтому пока на yandex disk - https://disk.yandex.ru/d/PawMcIUMpFMTOg

Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi) rev - 2429

Редактировалось 1 раз(а), последний 2025-09-30 07:25:31
карма: 20

0
Ответов: 994
Рейтинг: 207
#142: 2025-10-02 07:10:45 ЛС | профиль | цитата
Немного поэкспериментировал с точкой ExtNames в MathParse
Add(MainForm,2953706,154,189)
{
Width=322
Height=149
link(onCreate,9564645:doWork2,[])
}
Add(Memo,8019329,224,133)
{
Left=10
Top=15
Width=175
Height=75
Font=[Lucida Console,12,0,0,204]
Antialiased=1
Strings=#10:Высота=2.5|8:Ширина=6|9:Длина=4.2|
ScrollBars=3
}
Add(Type_CreateFromList,1492609,224,203)
{
link(onCreate,2465620:doCalc,[])
link(VarsList,881987:Var2,[])
}
Add(Type_RW,15733965,343,140)
{
link(GType,1492609:FType,[(349,131)(335,131)(335,243)(230,243)])
link(onRead,1889459:doData,[(382,146)(382,125)(270,125)(270,146)])
}
Add(MathParse,2465620,280,203)
{
DataCount=1
MathStr="Высота * Ширина * Длина"
ExtNames=1
link(onResult,11107536:doString,[])
link(X1,1889459:GetData,[])
AddHint(-14,107,145,13,MathStr)
}
Add(EventFromData,1889459,280,140)
{
link(onEvent,15733965:doRead,[])
}
Add(Message,13764671,399,203)
{
}
Add(FormatStr,11107536,350,203)
{
Mask="Формулв:\r\nВысота * Ширина * Длина\r\n\r\nПараметры:\r\n%1\r\n\r\nРезультат: \r\nОбъём - %2"
link(onFString,13764671:doMessage,[])
link(Str1,881987:Var3,[(356,187)])
}
Add(GetDataEx,881987,224,182)
{
link(Data,8019329:Text,[])
}
Add(Button,12425178,154,238)
{
Left=220
Top=35
Height=40
Caption="Calc"
link(onClick,9564645:doWork3,[(200,244)])
}
Add(HubEx,9564645,196,203)
{
link(onEvent,1492609:doCreate,[])
}


Редактировалось 1 раз(а), последний 2025-10-02 13:44:03
карма: 20

0
Ответов: 994
Рейтинг: 207
#143: 2025-12-07 14:15:11 ЛС | профиль | цитата
Небольшие эксперименты со вставкой кода в VisualInline в FTCG_Tools.
В некоторых случаях это проще чем вставка кода в InlineCode
Add(MainForm,152061,161,210)
{
Width=860
link(onCreate,4222993:doWork,[])
}
Add(FTCG_Tools,10286678,336,224)
{
}
BEGIN_SDK
Add(EditMultiEx,10355014,91,35)
{
WorkCount=#14:doWriteConsole|
Width=902
Height=466
link(doWriteConsole,5722965:doPrint,[(151,41)(151,83)])
}
Add(VisualInline,5722965,161,77)
{
Lines=#3:var|13: C: _COORD;|18: R : SMALL_RECT;|21: Hnd, Wr: Cardinal;|15: Buf: String;|5:begin|16: AllocConsole;|15: R.Left := 0;|14: R.Top := 0;|18: R.Right := 100;|18: R.Bottom := 24;|14: C.X := 135;|15: C.y := 8000;|22: SetConsoleCP(1251);|28: SetConsoleOutputCP(1251);|33: //SetConsoleOutputCP(CP_UTF8);|50: SetConsoleTitle( PChar( 'Separate console' ) );|0:|40: Hnd:=GetStdHandle(STD_OUTPUT_HANDLE);|38: SetConsoleScreenBufferSize(Hnd, C);|38: SetConsoleWindowInfo(Hnd, True, R);|10: C.X:=0;|10: C.Y:=0;|23: Buf:=ToString(Data);|35: SetConsoleCursorPosition(Hnd,C);|58: WriteConsole(Hnd,PChar(Buf),StrLen(PChar(Buf)),Wr,nil);|3: |3: |4:end;|
Width=607
Height=316
}
END_SDK
Add(StrList,9188971,231,133)
{
Strings=#42:Item;Description;Quantity;Unit;Price;Value|63:13930;Double-action Quickstart II rem. L=740mm;1;PC;98,66;98,66|53:13100201;Spray gun for udder washer;20;PC;17,77;355,4|49:13246007;COMBI-cock ш51 mm cpl.;10;PC;63,43;634,3|51:25643301;Milk hose ш 24/14 x 2750;32;PC;9,76;312,32|56:14291;Service no.1 RDS MAX double box;1;PC;250,51;250,51|54:24144638;Spiral spring for tube filter;3;PC;43,2;129,6|40:22121763;V-belt spz 1087;4;PC;5,91;23,64|61:MH0015;Repair kit non-rotating cylinder ш40mm;8;PC;14,3;114,4|48:GS9835;Revision set SAC Unipuls;4;PC;13,97;55,88|52:22121735;El-motor 3,0kw 3x400v 1400;1;PC;186,4;186,4|55:23544122;Carbon disc ш44,7/38,3x5,8mm;10;PC;16,92;169,2|55:23544122;Carbon disc ш44,7/38,3x5,8mm;10;PC;16,92;169,2|54:23544122;Carbon disc ш44,7/38,3x5,8mm;2;PC;16,92;33,84|0:|
Point(doSave)
Point(EndIdx)
}
Add(VBJScript,4222993,231,224)
{
WorkPoints=#6:doWork|
EventPoints=#5:onOut|
DataPoints=#3:csv|9:delimiter|
Script=#23:Sub doWork(Data, Index)|0:|33:Dim arrLines, arrHeaders, arrData|19:Dim arrColumnWidths|8:Dim i, j|18:Dim strTableOutput|0:|33:arrLines = Split(sys.csv, vbCrLf)|0:|46:arrHeaders = Split(arrLines(0), sys.delimiter)|55:ReDim arrData(UBound(arrLines) - 1, UBound(arrHeaders))|41:ReDim arrColumnWidths(UBound(arrHeaders))|31:For i = 0 To UBound(arrHeaders)|40: arrColumnWidths(i) = Len(arrHeaders(i))|4:Next|0:|29:For i = 1 To UBound(arrLines)|32: If Trim(arrLines(i)) <> "" Then|15: Dim arrFields|47: arrFields = Split(arrLines(i), sys.delimiter)|32: For j = 0 To UBound(arrFields)|34: If j <= UBound(arrHeaders) Then|42: arrData(i - 1, j) = Trim(arrFields(j))|55: If Len(arrData(i - 1, j)) > arrColumnWidths(j) Then|48: arrColumnWidths(j) = Len(arrData(i - 1, j))|10: End If|9: End If|6: Next|7: End If|4:Next|0:|19:strTableOutput = ""|0:|37:strTableOutput = strTableOutput & "+"|36:For i = 0 To UBound(arrColumnWidths)|79: strTableOutput = strTableOutput & String(arrColumnWidths(i) + 2, "-") & "+"|4:Next|40:strTableOutput = strTableOutput & vbCrLf|0:|37:strTableOutput = strTableOutput & "|"|31:For i = 0 To UBound(arrHeaders)|119: strTableOutput = strTableOutput & " " & arrHeaders(i) & String(arrColumnWidths(i) - Len(arrHeaders(i)), " ") & " |"|4:Next|40:strTableOutput = strTableOutput & vbCrLf|0:|37:strTableOutput = strTableOutput & "+"|36:For i = 0 To UBound(arrColumnWidths)|79: strTableOutput = strTableOutput & String(arrColumnWidths(i) + 2, "-") & "+"|4:Next|40:strTableOutput = strTableOutput & vbCrLf|0:|31:For i = 0 To UBound(arrData, 1)|41: strTableOutput = strTableOutput & "|"|35: For j = 0 To UBound(arrData, 2)|124: strTableOutput = strTableOutput & " " & arrData(i, j) & String(arrColumnWidths(j) - Len(arrData(i, j)), " ") & " |"|8: Next|44: strTableOutput = strTableOutput & vbCrLf|4:Next|0:|37:strTableOutput = strTableOutput & "+"|36:For i = 0 To UBound(arrColumnWidths)|79: strTableOutput = strTableOutput & String(arrColumnWidths(i) + 2, "-") & "+"|4:Next|0:|40:strTableOutput = strTableOutput & vbCrLf|0:|25:sys.onOut strTableOutput|0:|7:End Sub|
UseName=0
link(onOut,1924639:doEvent1,[])
link(csv,9188971:Text,[])
link(delimiter,6699366:Text,[(244,208)(251,208)])
}
Add(Memo,11026587,336,266)
{
Width=844
Height=261
Align=5
Font=[Lucida Console,12,0,0,204]
Antialiased=1
ScrollBars=3
}
Add(Hub,1924639,287,224)
{
link(onEvent1,10286678:doWriteConsole,[])
link(onEvent2,11026587:doAdd,[(323,237)(323,272)])
}
Add(VisualStrings,6699366,245,182)
{
@Hint=#9:delimiter|
Lines=#1:;|
AddHint(59,-24,53,13,@Hint)
}


Редактировалось 1 раз(а), последний 2025-12-10 15:31:42
карма: 20

0
Ответов: 207
Рейтинг: 5
#144: 2025-12-08 08:46:16 ЛС | профиль | цитата
Небольшие эксперименты со вставкой кода в VisualInline в FTCG_Tools.
В некоторых случаях это проще чем вставка кода в InlineCode

Мне каспер кричит, что это рекламное приложение).
карма: 1
0
Ответов: 994
Рейтинг: 207
#145: 2025-12-10 15:36:36 ЛС | профиль | цитата
strannik_nebes писал(а):
Мне каспер кричит, что это рекламное приложение).

Ну вот, меня раскусили.
Попробуй по очереди удалить VBJScript а потом FTCG_Tools чтобы понять на что конкретно ругается антивирус.
карма: 20

0
Ответов: 8975
Рейтинг: 824
#146: 2025-12-10 18:55:49 ЛС | профиль | цитата
Лет десять-двенадцать тому был у меня Касперский, делаю декодер морзянки, вдруг вся работа останавливаетс, комп не слушается -- оказалось Касперский обновился и каждые полчаса занимает круговую оборону и мочит всё подряд, минут десять ему требуется. Много HiAsm-овских наработок удалил, всё ему вирусы мерещились. Удалил. Перешёл на тихий DWeb, не мешает

Редактировалось 1 раз(а), последний 2025-12-10 18:57:11
карма: 19

0
Ответов: 994
Рейтинг: 207
#147: 2025-12-17 23:39:56 ЛС | профиль | цитата
Делал схему для ответа в телеграмм-канале, но решил выложить и здесь немного "причесав" схему.
Ограничение редактирования в MTStrTb только определёнными столбцами. И вычисление суммы при изменении количества или цены..

Add(MainForm,15443588,70,77)
{
Width=757
Height=356
link(onCreate,3682515:doConvert,[])
}
Add(MTStrTbl,15391708,63,154)
{
Width=741
Height=317
Align=5
Font=[Consolas,12,0,0,204]
Name="tabs"
Redaction=0
Point(onDblClick)
Point(Handle)
Point(onBeforeLineChange)
Point(onLineChange)
link(onBeforeLineChange,13940794:doValue,[])
link(onLineChange,2526260:doEvent1,[(109,202)(109,342)])
}
Add(MST_Load,571213,168,84)
{
MSTControl="tabs"
link(onLoadFromStream,2351068:doColAction,[])
}
Add(StreamConvertor,3682515,119,91)
{
Mode=7
Point(Data)
link(onResult,571213:doLoadFromStream,[])
link(Data,4308012:Text,[])
}
Add(WinEnum,11821637,245,168)
{
Point(onEnumChildWindows)
Point(doEnumChildWindows)
Point(ParentHandle)
link(onEnumChildWindows,10525174:doCompare,[])
link(ParentHandle,15391708:Handle,[(258,159)(132,159)(132,215)(97,215)])
}
Add(MT_MultiMem,12747369,343,182)
{
From=1
Count=1
link(onData,11447871:doNext,[])
}
Add(If_else,10525174,294,182)
{
Op1=String(obj_EDIT)
link(onTrue,12747369:doValue,[])
}
Add(DeferredEvent,103913,196,189)
{
Point(Data)
link(onDeferredEvent,11821637:doEnumChildWindows,[])
}
Add(WinTools,10447454,525,189)
{
Point(doEnable)
link(Handle,12747369:Value1,[(531,180)(503,180)(503,222)(349,222)])
}
Add(Hub,3852020,483,182)
{
link(onEvent1,10447454:doEnable,[(508,188)(508,223)])
link(onEvent2,10447454:doVisible,[])
}
Add(CounterEx,11447871,392,182)
{
Max=5
Default=-1
link(onNext,11843360:doSet,[])
}
Add(MultiSetParam,11843360,441,182)
{
Parameters=#1:0|1:0|1:1|1:0|1:1|1:0|
Count=1
link(onSet1,3852020:doEvent1,[])
}
Add(StrList,4308012,119,35)
{
Strings=#42:Item;Description;Quantity;Unit;Price;Value|63:13930;Double-action Quickstart II rem. L=740mm;1;PC;98,66;98,66|53:13100201;Spray gun for udder washer;20;PC;17,77;355,4|49:13246007;COMBI-cock ш51 mm cpl.;10;PC;63,43;634,3|51:25643301;Milk hose ш 24/14 x 2750;32;PC;9,76;312,32|56:14291;Service no.1 RDS MAX double box;1;PC;250,51;250,51|54:24144638;Spiral spring for tube filter;3;PC;43,2;129,6|40:22121763;V-belt spz 1087;4;PC;5,91;23,64|61:MH0015;Repair kit non-rotating cylinder ш40mm;8;PC;14,3;114,4|48:GS9835;Revision set SAC Unipuls;4;PC;13,97;55,88|52:22121735;El-motor 3,0kw 3x400v 1400;1;PC;186,4;186,4|55:23544122;Carbon disc ш44,7/38,3x5,8mm;10;PC;16,92;169,2|55:23544122;Carbon disc ш44,7/38,3x5,8mm;10;PC;16,92;169,2|54:23544122;Carbon disc ш44,7/38,3x5,8mm;2;PC;16,92;33,84|0:|
Point(doSave)
Point(EndIdx)
}
Add(MST_ColAction,2351068,217,91)
{
Action=9
Index=-2
MSTControl="tabs"
}
Add(Memory,13940794,147,189)
{
Point(Data)
link(onData,103913:doDeferredEvent,[])
link(Data,15391708:Index,[(153,180)(139,180)(139,222)(76,222)])
}
Add(MST_Matrix,3257474,315,336)
{
X=5
MSTControl="tabs"
}
Add(MatrixRW,4102110,315,392)
{
X=5
link(Matrix,3257474:Matrix,[])
link(Y,13940794:Value,[(342,383)(153,383)])
}
Add(MathParse,13647872,266,399)
{
DataCount=1
MathStr="%1[2] * %1[4]"
link(onResult,4102110:doWrite,[])
link(X1,3015629:Array,[])
}
Add(MT_Array,3015629,266,336)
{
}
Add(Hub,2526260,224,336)
{
link(onEvent1,3015629:doLoad,[])
link(onEvent2,13647872:doCalc,[(256,349)(256,405)])
}

карма: 20

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