|
Макроподстановка
|
|||
---|---|---|---|
#18+
Народ, Есть ситуация: Присвоил форме свойство Thisform.m1 Его значение в окне свойства присвоены как: 'Внимание - Ошибка работы приложения!!!!!!',8+48+256,'Внимание' - точь в точь без дополнительных кавычек как символьное значение. теперь хочу отобразить в MessageBox() это сообщение в стиле и с кнопками как 8+48+256 .... если это делать сразу как MessageBox(&Thisform.m1) происходить ошибка: Function name is missing ). Но если сделать это иначе: x= Thisform.m1 MessageBox(&x) все отрабатывается прекрасно. Кто даст намек из=за чего и как этот случай настроить чтобы все работало как MessageBox(&Thisform.m1) Всем спасибо!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 16:54 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ValeriiНарод, Есть ситуация: Присвоил форме свойство Thisform.m1 Его значение в окне свойства присвоены как: 'Внимание - Ошибка работы приложения!!!!!!',8+48+256,'Внимание' - точь в точь без дополнительных кавычек как символьное значение. теперь хочу отобразить в MessageBox() это сообщение в стиле и с кнопками как 8+48+256 .... если это делать сразу как MessageBox(&Thisform.m1) происходить ошибка: Function name is missing ). Но если сделать это иначе: x= Thisform.m1 MessageBox(&x) все отрабатывается прекрасно. Кто даст намек из=за чего и как этот случай настроить чтобы все работало как MessageBox(&Thisform.m1) Всем спасибо!!!!! EVALUATE('MESSAGEBOX('+.m1+')') это не предлагать ... ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 17:04 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ValeriiMessageBox(&Thisform.m1) происходить ошибка: Function name is missing ). Но если сделать это иначе: x= Thisform.m1 MessageBox(&x) все отрабатывается прекрасно. Кто даст намек из=за чего В выражении &Thisform.m1 у точки совсем не тот смысл, который вы ожидаете. Внимательно почитайте хелп про макроподстановку и особенно про её ограничители. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 17:19 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
Valerii, Вам сюда Макроподстановка Насчет указанной ошибки - это раздел в этой статье "Особенности использования макроподстановки" Насчет Evaluate(), если результат вычисления записанного выражения - это символьная строка, то использовать надо так Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 09:20 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ВладимирМValerii, Вам сюда Макроподстановка Насчет указанной ошибки - это раздел в этой статье "Особенности использования макроподстановки" Насчет Evaluate(), если результат вычисления записанного выражения - это символьная строка, то использовать надо так Код: sql 1.
MessageBox(Evaluate(ThisForm.m1)) - не работает ... Syntax Error ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 09:32 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
Valerii, А пример того, что записано в Thisform.m1 можете привести? Если там просто текст, то макроподстановка вообще не нужна Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 09:44 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ValeriiВладимирМValerii, Вам сюда Макроподстановка Насчет указанной ошибки - это раздел в этой статье "Особенности использования макроподстановки" Насчет Evaluate(), если результат вычисления записанного выражения - это символьная строка, то использовать надо так Код: sql 1.
MessageBox(Evaluate(ThisForm.m1)) - не работает ... Syntax Error thisform.m1 = 'Нет выбранных значений!!!',8+48+256,'Внимание' НО .... 'Нет выбранных значений!!!',8+48+256,'Внимание' записано в окне свойств формы для этого свойства m1. Я грешу и на этот момент ... Это сделано для многоязычной поддержки. То есть - есть на форме класс который при запуске формы переопределят свойства текста и объектов на форме. Если в базе нужному свойству или объекту есть значение для перевода, тогда выполняется подмена, если нет остается то что заложено по умолчанию этому свойству на форме. Сначала для MessageBox я использовал два свойства , str1 str2 но потом подумал что это изврат забивать память переменными (этих свойств столько, сколько уникальных сообщений MessageBox-ов ) и решил впихнуть все в одну переменную исключая дополнительные изменения в коде приложения. Дергать постоянно переводы из удаленного сервера БД по-моему некрасивое/неправильное решение, так как при работе mеsagebox ы выскакивают постоянно... Конечно я могу пойти по пути x = thisform.m1 или EVALUATE('MESSAGEBOX('+.m1+')') ...но хотелось бы разобраться с этой ситуацией... Спасибо заранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 10:31 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ValeriiValeriiпропущено... MessageBox(Evaluate(ThisForm.m1)) - не работает ... Syntax Error thisform.m1 = 'Нет выбранных значений!!!',8+48+256,'Внимание' НО .... 'Нет выбранных значений!!!',8+48+256,'Внимание' записано в окне свойств формы для этого свойства m1. Я грешу и на этот момент ... Это сделано для многоязычной поддержки. То есть - есть на форме класс который при запуске формы переопределят свойства текста и объектов на форме. Если в базе нужному свойству или объекту есть значение для перевода, тогда выполняется подмена, если нет остается то что заложено по умолчанию этому свойству на форме. Сначала для MessageBox я использовал два свойства , str1 str2 но потом подумал что это изврат забивать память переменными (этих свойств столько, сколько уникальных сообщений MessageBox-ов ) и решил впихнуть все в одну переменную исключая дополнительные изменения в коде приложения. Дергать постоянно переводы из удаленного сервера БД по-моему некрасивое/неправильное решение, так как при работе mеsagebox ы выскакивают постоянно... Конечно я могу пойти по пути x = thisform.m1 или EVALUATE('MESSAGEBOX('+.m1+')') ...но хотелось бы разобраться с этой ситуацией... Спасибо заранее. Thisform.m1 = []'Нет выбранных значений!!!']+',8+48+256,'+[Внимание!'] и даже так тоже ошибку выдает. Но достаточно сделать еще x= Thisform.m1 и MessageBox(&x) - oK!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 10:48 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
Да. Выбранный Вами способ реализации предполагает только макроподстановку. Без вариантов. Либо через & с дополнительной точкой, либо evaluate('messageBox()') В выбранной Вами реализации без макроподстановки, теоретически, можно обойтись, только если предварительно "распарсить" строку на 3 отдельных параметра. Да и то, числовое значение все-равно придется через макроподстановку вычислять. Кроме того, для парсинга будут проблемы, если сам текст содержит запятые PS: Только непонятно, почему для хранения текста выбрали свойства формы, а не поля таблицы, что для СУБД было бы логичнее. Тогда и вопроса бы не стояло. Ну, или хотя бы структурированный текстовый файл. XML, например, или INI. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 10:54 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ValeriiThisform.m1 = []'Нет выбранных значений!!!']+',8+48+256,'+[Внимание!'] и даже так тоже ошибку выдает. Но достаточно сделать еще x= Thisform.m1 и MessageBox(&x) - oK!!!! Т.е. статью по ссылке Вы так и не прочитали. И то, что проблема решается дополнительной точкой - не в курсе. Что ж. Ваш выбор... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 10:55 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ВладимирМValeriiThisform.m1 = []'Нет выбранных значений!!!']+',8+48+256,'+[Внимание!'] и даже так тоже ошибку выдает. Но достаточно сделать еще x= Thisform.m1 и MessageBox(&x) - oK!!!! Т.е. статью по ссылке Вы так и не прочитали. И то, что проблема решается дополнительной точкой - не в курсе. Что ж. Ваш выбор... Почитал от корочки до корочки. Пробовал - не работает. Сильно не напрягался - с лету не вышло - бросил. Да и усложнять формат записи переводов в БД не хочется... Теперь про вопрос: PS: Только непонятно, почему для хранения текста выбрали свойства формы, а не поля таблицы, что для СУБД было бы логичнее. Тогда и вопроса бы не стояло. Ну, или хотя бы структурированный текстовый файл. XML, например, или INI. Свойства формы я выбрал для того - чтобы: 1. Так как помимо MessageBox-ов переводятся caption классов label, commandbuton, grid..header, optionGroup..option, pageframe..page, tooltips и еще парочку , не стану все перечислять, то есть все то где есть тексты сообщений, и то что я выдернул скриптом из всех форм - их около 175 ... получилось около 3500 наименований переводов... Это все было загнано в таблицу БД.. (я использую в качестве хранилища MS SQL Server)....!!!! Про это я забыл сказать.. настолько у меня все это по умолчанию ;-) Поэтому эта технология диктует свои условия и требования к приложению в части производительности и минимальных нагрузок. А так как мне также не очень хочется перепахивать весь код - я дернул MessageBox скриптом и тоже вогнал их в БД, вернее то что в "()" Теперь это значение мне нужно подставить в код форм - там где есть эти информационные сообщения. Текст очень разношерстный и нельзя как-то это все привести к парочкам фраз в добавок не только ОК или Да, нет на кнопках. То есть поэтому сот всем этим хотелось взлететь на макроподстановках. Я конечно максимально приблизился к цели - но, придется руцями вставить в код x = Thisfom.mxxx перед самим MessageBox(&x). INI файл - понятно - огромный , локально его потом всем обновлять - поэтому сразу отпало. потом перебор элементов формы из ини-шного файла - целый гемор, в принципе как и XML который тоже нужно парсить. Поэтому остановился на конструкции uid,frmname,objname,objvalue,objleft,objtop,language и теперь кол-во языков в принципе неограниченно. Легко править переводы для отдельных формы .. короче преимуществ мне кажется больше. Кстати не искал , но наверняка кто-то реализовывал эту задачу - переделать проект под много языковую поддержку ... Тем не менее Владимир, Вам спасибо. На Ваши советы всегда можно спокойно положиться как на самые верные. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 13:36 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ValeriiВладимирМпропущено... Т.е. статью по ссылке Вы так и не прочитали. И то, что проблема решается дополнительной точкой - не в курсе. Что ж. Ваш выбор... Почитал от корочки до корочки. Пробовал - не работает. Сильно не напрягался - с лету не вышло - бросил. Да и усложнять формат записи переводов в БД не хочется... Жмем F1 и читаем HELP& Command & VarName[.cExpression] ... [. cExpression] The optional period (.) delimiter and .cExpression are used to append additional characters to a macro. cExpression appended to the macro with .cExpression can also be a macro. If cExpression is a property name, include an extra period (cExpression..PropertyName). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 13:56 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
Dima TValeriiпропущено... Почитал от корочки до корочки. Пробовал - не работает. Сильно не напрягался - с лету не вышло - бросил. Да и усложнять формат записи переводов в БД не хочется... Жмем F1 и читаем HELP& Command & VarName[.cExpression] ... [. cExpression] The optional period (.) delimiter and .cExpression are used to append additional characters to a macro. cExpression appended to the macro with .cExpression can also be a macro. If cExpression is a property name, include an extra period (cExpression..PropertyName). И добавлял ... и что ... ничего .. тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 14:02 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
ValeriiЯ конечно максимально приблизился к цели - но, придется руцями вставить в код x = Thisfom.mxxx перед самим MessageBox(&x). Можно сделать обертку Код: sql 1. 2. 3.
И автозаменой все MessageBox заменить на MyMsgBox ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 14:08 |
|
Макроподстановка
|
|||
---|---|---|---|
#18+
Dima TValeriiЯ конечно максимально приблизился к цели - но, придется руцями вставить в код x = Thisfom.mxxx перед самим MessageBox(&x). Можно сделать обертку Код: sql 1. 2. 3.
И автозаменой все MessageBox заменить на MyMsgBox Кстати да ... :-) Я открываю форму как таблицу и и перебираю все методы и в строке где есть MessageBox $ xLine (xLine = MEMLINES(ObjProp)) меняю эту строку на свою Поэтому хотел одним заходом ... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 14:22 |
|
|
start [/forum/topic.php?fid=41&msg=39615799&tid=1581813]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
125ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 483ms |
0 / 0 |