Страница 2 из 2
Добавлено: 15 дек 2006, 15:09
s2176
Ну не получается выделить цветом, хоть тресни
CONST
#include galnet.csc
cmMarkUnMark = 2243;
cmSelectAll = 2244;
cmUnSelectAll = 2245;
cmInvertAll = 2247;
ColorMark = 58;
end;
interface cuptree '__Построение дерева' cyan, doaccept;
create view
var
curowner: comp;
gr_nrec: comp;
gr_code, gr_name: string;
as select catalogs.name, catalogs.code
from catalogs, pick, catalogs catalogs2
where ((curowner == catalogs.cparent and
catalogs.nrec == catalogs2.cparent
))
order by catalogs.code;
create view tp
select * from pick where((101==pick.wlist));
! я так понимаю, что сама могу заполнять таблицу Pick по своему
! усмотрению
parameters
gr_nrec;
tree b1 (,,sci1EnInsTree);
fields
catalogs.name: [50], { Font = { Color = if ( IsValid (tnPick), ColorMark, 0) }}, noprotect;
catalogs.code: [10], noprotect;
end;
handleevent
cmInit:
{ curowner:=gr_nrec;
}
cmDefault:
{ gr_nrec := catalogs.nrec;
gr_code := catalogs.code;
gr_name := catalogs.name;
message('default')
}
cmTreeOpenNode:
{ }
cmTreeCloseNode:
{ }
cmTreeNodeType:
{ if isvalidall(tncatalogs2)
then TreeSetNodeType(b1, if(TreeNodeIsOpen(b1), ntfopen, ntfclose))
else TreeSetNodeType(b1, ntftext);
}
cmTreeTop: curowner :=gr_nrec;
cmTreeDown: curowner:=catalogs.nrec;
cmTreeUp: curowner:=catalogs.cparent;
cmMarkUnMark:
{ message(catalogs.name);
insert pick set crec:=curowner, wlist:=101;
};
cmCancel: {};
cmDone: {};
end;
end.
Добавлено: 15 дек 2006, 15:23
m0p3e
А как же pick у тебя будет валиден, если он в другой таблице живет?
Под одну крышу их со связочкой!
where
((
curowner == catalogs.cparent and
catalogs.nrec == catalogs2.cparent and
catalogs.nrec == pick.crec
101 == pick.wTable
))
И панельку перерисовать надо после пометки.
Добавлено: 15 дек 2006, 16:16
s2176
глухо, как в танке(((
............
as select catalogs.name, catalogs.code
from catalogs, pick, catalogs catalogs2
where ((curowner == catalogs.cparent and catalogs.nrec == catalogs2.cparent
and catalogs.nrec == pick.crec and 101 == pick.wlist
))
order by catalogs.code;
......
cmMarkUnMark:
{ message(catalogs.name);
insert pick set crec:=catalogs.nrec, wlist:=101;
redrawpanel(b1);
};
.....
Запись в Pick не вставляет, вероятно поэтому и не перекрашивает запись.
Вернее вставляет, но почему-то только тогда, когда я выхожу из Гал-ки. Смотрю через Суппорт. Находясь в дереве, нажимаю Insert, ничего не происходит, но стоит выйти из Галки, как в таблице появляются нужные записи.
А еще мне не очень понятен здесь термин "валидность таблицы".
Добавлено: 15 дек 2006, 16:51
m0p3e
В суппорте ты видишь добавленую запись только восле выхода, т.к. pick таблица аля user. т.е. для каждого юзера своя и живет в DATA/TMP/USER.
А еще мне не очень понятен здесь термин "валидность таблицы".
Валидна т.е. запись в pick с данными ограничениями существует.
insert pick set crec:=catalogs.nrec, wlist:=101;
Я бы посоветовал все же писать полные пути. Всякое бывает.
insert pick set pick.crec:=catalogs.nrec, pick.wlist:=101;
Укажи корневую таблицу:
tree b1 (,,sci1EnInsTree);
Table Catalogs;
fields
{ Font = { Color = if ( IsValid (tnPick), ColorMark, 0) }}
catalogs.name: [50], noprotect;
catalogs.code: [10], noprotect;
end;
Здесь лучше так:
cmMarkUnMark:
{
insert pick set pick.crec:=catalogs.nrec, pick.wlist:=101;
rescanpanel(#catalogs);
};
Добавлено: 18 дек 2006, 11:54
Goblin
А нормальный маркер, хранимый в DSK почему не хотите пробовать ?
Кстати , а rescanpanel уже стал на дереве работать ?

С какой версии атлантиса ? Странно просто, на 3.03.19 только treejumptorecord() обновлял прорисовку дерева и пометки ...
Добавлено: 18 дек 2006, 14:36
s2176
А может, и правда не работает rescanpanel?
Записи в pick вставляются, но картинка не обновляется, я не вижу изменения цвета шрифта(((
А с маркером я просто еще не умею работать
Может, с маркером и легче, но не знаю как.
Учусь, можно сказать, на этом форуме, спасибо ему.
Добавлено: 18 дек 2006, 15:17
Goblin
Вместо RescanPanel поставь TreeJumpToRecord(Catalogs.NRec)
Добавлено: 18 дек 2006, 15:34
s2176
Вставила, но воз и ныне там(((
Добавлено: 18 дек 2006, 16:15
Goblin
Вот по этому я и спросил про маркеры...
Записи физически в таблице pick появляются в текущей сессии или после ее окончания и завершения работы Галактики ? После, когда кэш по завершении скидывается ...
А с маркерами, в общем так :
1) объявляем глобальную переменную во view типа longint (идентификатор маркера)
2) в cmInit инициализируем объявленную переменную InitMarker'ом
3) переписываем обращения при пометке, проверке наличия пометки уже к маркеру, а не таблице, через InvertMarker и SearchMarker соответственно.
4) после работы в cmDone гасим маркер DoneMarker'ом
Дока по VIP есть ? Там указанные функции прописаны
Добавлено: 19 дек 2006, 10:54
s2176
А ларчик просто открывался
Спасибо за науку маркерах! Но дело все оказалось в том, что системный синий имеет код не 58, как мне подсказывали, а 13. Стоило исправить, как выделение заработало. Так что можно и маркеры использовать, и таблицу Pick, и так, и так работает!
Добавлено: 19 дек 2006, 12:09
m0p3e
s2176 писал(а):Но дело все оказалось в том, что системный синий имеет код не 58, как мне подсказывали, а 13.
Вот потому и следует указывать версию Г.

Добавлено: 20 дек 2006, 09:19
Goblin
А еще лучше - с цветом не извращаться, а делать жирный шрифт
т.е. вместо
{ Font = { Color = if ( IsValid (tnPick), ColorMark, 0) }}
писать
{ Font = { Bold = IsValid (tnPick) }}
Добавлено: 20 дек 2006, 11:47
s2176
Я, собственно, так и сделала, именно это меня и натолкнуло на мысль, что я просто использовала неверный код цвета.
Но мне в голову не приходило, что константы цветов могут меняться от версии к версии...
Спасибо большое за помощь!
Мне интересно, на курсах по VIP учат этим премудростям? Есть смысл туда ехать учиться или нет? Пока что учусь только на этом форуме

Добавлено: 20 дек 2006, 11:52
Goblin
Не помню, учили или нет , я три года назад ездил просто устаканить уже имеющиеся знания. Обучался по большому счету здесь и у парней с Минска из Топ-Софт консультировался иногда(за что им поклон низкий)
В доке это все описано, vipprogr.pdf, комплект документации должен идти с дистрибутивом. Раздел "Визуальные элементы (GUI)" ->"Интерфейс пользователя"->"Описание элементов ввода"->"Атрибуты поля"
P.S. А вот про обновление дерева только TreeJumpToRecord'ом узнал только на курсах, в доках не было этого
Добавлено: 20 дек 2006, 11:58
s2176
Да я вот и учусь по доке да на форуме, но по доке учиться тяжело, примеров там не много, да и описано далеко не все. Иногда быстрее на форуме узнать, не всегда временем располагешь для экспериментов... Вот и думаю, не съездить ли поучиться, узнаю ли я там что-то новое, не хочется там зазря штаны просиживать.
На курсы по зарплате когда-то ездила, но сказать, что узнала там что-то, чего не знала, не могу(((