Запилил такую программку, в строке Edit вводим "=10+20+30"(ну или другие цифры) жмем Enter и получаем результат в том же Edit(как в ячейке Excel), при двойном нажатии ЛКМ возвращается введенная формула и как ни странно все работает, но только со знаком плюс(+) других символов не понимает, да впрочем как и я не понимаю))
Если есть у кого-то мысли как прикрутить остальные вычитание, умножение, деление и думаю на этом достаточно, хотя скобки тоже наверно нужны, прошу помочь.
P.S. В этом деле недавно, но надеюсь надолго!
Make(delphi)
ver(4.05 build 186)
Add(MainForm,2153324,161,84)
{
Width=278
Height=101
Caption="Сумма в строке"
}
Add(MultiElement,15466702,287,98)
{
link(onEvent1,8717068:doText,[(332,104)(332,75)(213,75)(213,90)])
link(onEvent2,8717068:doText2,[(331,111)(331,135)(213,135)(213,97)])
link(Data1,8717068:Text,[(293,86)(268,86)(268,126)(230,126)])
}
BEGIN_SDK
Add(EditMulti,15444727,21,21)
{
EventCount=2
WorkCount=2
DataCount=1
VarCount=1
Width=419
Height=305
VOffset=49
HOffset=91
link(doWork1,16440207:doCase,[])
link(doWork2,5997249:doEnum,[(56,83)(56,139)])
link(Var1,2524235:Result,[(118,308)(202,308)])
}
Add(MultiStrPart,11554405,196,210)
{
Char="+"
Count=30
link(onSplit,2524235:doCalc,[(417,216)(417,300)(184,300)(184,265)])
link(Str,12462022:Right,[(202,198)(178,198)(178,295)(125,295)])
}
Add(MathParse,2524235,196,259)
{
DataCount=30
MathStr="%1 + %2 + %3 + %4 + %5 + %6 + %7 + %8 + %9 + %10 + %11 + %12 + %13 + %14 + %15 + %16 + %17 + %18 + %19 + %20 + %21 + %22 + %23 + %24 + %25 + %26 + %27 + %28 + %29 + %30"
link(onResult,15444727:onEvent1,[(429,265)(429,76)])
link(X1,11554405:Part1,[])
link(X2,11554405:Part2,[])
link(X3,11554405:Part3,[])
link(X4,11554405:Part4,[])
link(X5,11554405:Part5,[])
link(X6,11554405:Part6,[])
link(X7,11554405:Part7,[])
link(X8,11554405:Part8,[])
link(X9,11554405:Part9,[])
link(X10,11554405:Part10,[])
link(X11,11554405:Part11,[])
link(X12,11554405:Part12,[])
link(X13,11554405:Part13,[])
link(X14,11554405:Part14,[])
link(X15,11554405:Part15,[])
link(X16,11554405:Part16,[])
link(X17,11554405:Part17,[])
link(X18,11554405:Part18,[])
link(X19,11554405:Part19,[])
link(X20,11554405:Part20,[])
link(X21,11554405:Part21,[])
link(X22,11554405:Part22,[])
link(X23,11554405:Part23,[])
link(X24,11554405:Part24,[])
link(X25,11554405:Part25,[])
link(X26,11554405:Part26,[])
link(X27,11554405:Part27,[])
link(X28,11554405:Part28,[])
link(X29,11554405:Part29,[])
link(X30,11554405:Part30,[])
}
Add(Case,16440207,70,70)
{
Value=Integer(13)
link(onTrue,14946485:doEvent1,[])
}
Add(Hub,14946485,119,77)
{
link(onEvent1,5303958:doData,[])
link(onEvent2,1461385:doSearch,[(144,90)(144,106)(45,106)(45,209)])
}
Add(DoData,5303958,168,77)
{
link(onEventData,4816344:doAdd,[])
link(Data,5987180:getVar,[])
}
Add(ArrayEnum,5997249,70,133)
{
link(onItem,7142047:doData,[])
link(onEndEnum,4816344:doClear,[(217,146)(217,90)])
link(Array,4816344:Array,[(76,128)(251,128)])
}
Add(DoData,7142047,287,133)
{
link(onEventData,15444727:onEvent2,[(421,139)(421,83)])
link(Data,5997249:Item,[(293,121)(273,121)(273,172)(76,172)])
}
Add(StrList,4816344,231,77)
{
}
Add(If_else,15956330,70,252)
{
Op2=Integer(1)
link(onTrue,12462022:doSplit,[])
link(Op1,1461385:Position,[])
}
Add(Position,1461385,70,203)
{
Target="="
link(onSearch,15956330:doCompare,[(114,209)(114,241)(58,241)(58,258)])
link(Str,5768510:getVar,[])
}
Add(StrPart,12462022,119,252)
{
Char="="
Point(Right)
link(onSplit,11554405:doSplit,[(185,258)(185,216)])
link(Str,533564:getVar,[])
}
Add(LineBreakEx,1039140,112,35)
{
Caption="Строка"
Type=3
link(_Data,15444727:Data1,[])
}
Add(LineBreakEx,5987180,168,49)
{
Caption="Строка"
Type=2
}
Add(LineBreakEx,533564,119,224)
{
Caption="Строка"
Type=2
}
Add(LineBreakEx,5768510,70,175)
{
Caption="Строка"
Type=2
}
END_SDK
Add(Edit,8717068,224,84)
{
Left=5
Top=15
Width=245
Text=""
ClearAfterEnter=1
Point(onKeyUp)
Point(onDblClick)
link(onKeyUp,15466702:doWork1,[])
link(onDblClick,15466702:doWork2,[])
}