Здравствуйте!
cw55, швс
Есть таблица, в ней, при выборе какой-нибудь записи, открывается окно(mdi, toolbox), в котором отображается дополнительная информация по текущей записи. Понятное дело, что окно это процедура с параметрами. Назовем ее ViewImage(MyParametr), где MyParametr-String. Так вот, вызываю эту процедуру как
Start(ViewImage,50000,L:PARAMETR), предварительно присваиваю L:PARAMETR нужное значение, хожу по таблице, а ViewImage открывается всегда с одним и тем же первым значением и при переходе от записи к записи не меняет это значение. И чего ей не хватает, спрашивается
Написал: Ajra(8)
Процедура не понимает переданного ей значения.
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Так это... тулбокс запускается для КАЖДОЙ записи или только для первой? Почему он, собственно, должен менять значение?
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Написал: ClaList(2)
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Написал: ClaList(2)
Значения в Toolbox должны менятся в зависимости от записи. Просто каждой записи соответствует картинка, вот и надо, чтобы при переходе от записи к записи картинка в toolbox изменялась. И несмотря на то, что значение L:PARAMETR перед вызовом процедуры изменяется, после START(ViewImage,50000,L:PARAMETR) процедура запоминает первое значение L:PARAMETR. Обновление окна не дает нужного результата, т.к. L:PARAMETR всегда один и тот же.
Написал: Ajra(8)
Написал: Ajra(8)
Угу, тож наступал на эти грабли , теперь объявляю локальные переменные и в Procedure Setup инициализирую их переданными в процедуру значениями.
ИМХО грабли возникают вот как:
Если объявить локальную переменную с таким-же именем как у входящего параметра (что-бы потом его сунуть в HotField и пр.), то компилятор ругнется
Warning: Lable Duplicated, second used: "var_name"
Но exe-шник соберет.
Но при работе Clarion инициализирует создаваемые переменные и при этом входящее значение потеряется.
--
С уважением,
Алексей Дынин
daa@polad.ru
(Добавление)
Никуда оно не теряется. Просто в Toolbox-е, который исполняется всегда в отдельном треде, для нее создается свой собчтвенный экземпляр. При старте прочедуры он инициализируется переданным значением и _все_. Дальше он живет своей собственной самостоятельной жизнью и к передаваемому параметру никакого отношения не имеет. Все дальнейшие обновления нужно делать ручками самостоятельно. Проще всего завести для передачи нового значения глобальную (или модульную, но тогда обе процедуры д.б. в одном модуле) нетредную переменную и после присваивания ей нового значения послать в тулбокс пользовательский event, а в обработке этого event-а сделать соотв.
обновление переменных и окна.
WBR, Nick Tsigouro. MailTo:Nick@arsis.ru
Написал: ClaList(2)
ИМХО грабли возникают вот как:
Если объявить локальную переменную с таким-же именем как у входящего параметра (что-бы потом его сунуть в HotField и пр.), то компилятор ругнется
Warning: Lable Duplicated, second used: "var_name"
Но exe-шник соберет.
Но при работе Clarion инициализирует создаваемые переменные и при этом входящее значение потеряется.
--
С уважением,
Алексей Дынин
daa@polad.ru
(Добавление)
Никуда оно не теряется. Просто в Toolbox-е, который исполняется всегда в отдельном треде, для нее создается свой собчтвенный экземпляр. При старте прочедуры он инициализируется переданным значением и _все_. Дальше он живет своей собственной самостоятельной жизнью и к передаваемому параметру никакого отношения не имеет. Все дальнейшие обновления нужно делать ручками самостоятельно. Проще всего завести для передачи нового значения глобальную (или модульную, но тогда обе процедуры д.б. в одном модуле) нетредную переменную и после присваивания ей нового значения послать в тулбокс пользовательский event, а в обработке этого event-а сделать соотв.
обновление переменных и окна.
WBR, Nick Tsigouro. MailTo:Nick@arsis.ru
Написал: ClaList(2)