Опять про дерево

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Ну не получается выделить цветом, хоть тресни :o

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.
Кто сказал, что бесполезно биться головой об стену?!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

А как же pick у тебя будет валиден, если он в другой таблице живет?
Под одну крышу их со связочкой!

where
((
curowner == catalogs.cparent and
catalogs.nrec == catalogs2.cparent and
catalogs.nrec == pick.crec
101 == pick.wTable
))

И панельку перерисовать надо после пометки.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение 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, ничего не происходит, но стоит выйти из Галки, как в таблице появляются нужные записи.
А еще мне не очень понятен здесь термин "валидность таблицы".
Кто сказал, что бесполезно биться головой об стену?!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение 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);
};
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

А нормальный маркер, хранимый в DSK почему не хотите пробовать ?
Кстати , а rescanpanel уже стал на дереве работать ? :-)
С какой версии атлантиса ? Странно просто, на 3.03.19 только treejumptorecord() обновлял прорисовку дерева и пометки ...
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

А может, и правда не работает rescanpanel?
Записи в pick вставляются, но картинка не обновляется, я не вижу изменения цвета шрифта(((
А с маркером я просто еще не умею работать :o
Может, с маркером и легче, но не знаю как.

Учусь, можно сказать, на этом форуме, спасибо ему.
Кто сказал, что бесполезно биться головой об стену?!
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

Вместо RescanPanel поставь TreeJumpToRecord(Catalogs.NRec)
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Вставила, но воз и ныне там(((
Кто сказал, что бесполезно биться головой об стену?!
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

Вот по этому я и спросил про маркеры...
Записи физически в таблице pick появляются в текущей сессии или после ее окончания и завершения работы Галактики ? После, когда кэш по завершении скидывается ...

А с маркерами, в общем так :
1) объявляем глобальную переменную во view типа longint (идентификатор маркера)
2) в cmInit инициализируем объявленную переменную InitMarker'ом
3) переписываем обращения при пометке, проверке наличия пометки уже к маркеру, а не таблице, через InvertMarker и SearchMarker соответственно.
4) после работы в cmDone гасим маркер DoneMarker'ом

Дока по VIP есть ? Там указанные функции прописаны
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

А ларчик просто открывался :D
Спасибо за науку маркерах! Но дело все оказалось в том, что системный синий имеет код не 58, как мне подсказывали, а 13. Стоило исправить, как выделение заработало. Так что можно и маркеры использовать, и таблицу Pick, и так, и так работает!
Кто сказал, что бесполезно биться головой об стену?!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

s2176 писал(а):Но дело все оказалось в том, что системный синий имеет код не 58, как мне подсказывали, а 13.
Вот потому и следует указывать версию Г. ;)
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

А еще лучше - с цветом не извращаться, а делать жирный шрифт
т.е. вместо
{ Font = { Color = if ( IsValid (tnPick), ColorMark, 0) }}
писать
{ Font = { Bold = IsValid (tnPick) }}
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Я, собственно, так и сделала, именно это меня и натолкнуло на мысль, что я просто использовала неверный код цвета.
Но мне в голову не приходило, что константы цветов могут меняться от версии к версии...
Спасибо большое за помощь!
Мне интересно, на курсах по VIP учат этим премудростям? Есть смысл туда ехать учиться или нет? Пока что учусь только на этом форуме :grin:
Кто сказал, что бесполезно биться головой об стену?!
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

Не помню, учили или нет , я три года назад ездил просто устаканить уже имеющиеся знания. Обучался по большому счету здесь и у парней с Минска из Топ-Софт консультировался иногда(за что им поклон низкий)

В доке это все описано, vipprogr.pdf, комплект документации должен идти с дистрибутивом. Раздел "Визуальные элементы (GUI)" ->"Интерфейс пользователя"->"Описание элементов ввода"->"Атрибуты поля"

P.S. А вот про обновление дерева только TreeJumpToRecord'ом узнал только на курсах, в доках не было этого
Последний раз редактировалось Goblin 20 дек 2006, 11:58, всего редактировалось 1 раз.
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Да я вот и учусь по доке да на форуме, но по доке учиться тяжело, примеров там не много, да и описано далеко не все. Иногда быстрее на форуме узнать, не всегда временем располагешь для экспериментов... Вот и думаю, не съездить ли поучиться, узнаю ли я там что-то новое, не хочется там зазря штаны просиживать.
На курсы по зарплате когда-то ездила, но сказать, что узнала там что-то, чего не знала, не могу(((
Кто сказал, что бесполезно биться головой об стену?!
Ответить