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

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

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

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

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

Сообщение s2176 »

Пытаюсь нарисовать дерево по таблице Catalogs :-?
Почему-то не могу открыть узлы. Нажимаю <Ctrl/Enter> - ничего не происходит. Сообщение, специально вставленное для контроля, тоже не выдается....

interface cuptree '__Построение дерева' cyan, doaccept;

view
var
curowner: comp;
gr_nrec: comp;
gr_code, gr_name: string;
as select * from catalogs, catalogs catalogs2
where ((curowner == catalogs.cparent and catalogs.nrec == catalogs2.cparent))
order by catalogs.code;

parameters
gr_nrec;

tree b1;
fields
catalogs.code: [20], protect;
catalogs.name:[40], protect;
end;

handleevent
cmInit:
{ curowner:=gr_nrec;
}
cmDefault:
{ gr_nrec := catalogs.nrec;
gr_code := catalogs.code;
gr_name := catalogs.name;
}
cmTreeOpenNode:
{ message('Попытка открыть')
//TreeOpenNode(b1);
}
cmTreeCloseNode:
{ message('Попытка закрыть')
//TreeCloseNode(b1);
}

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;
cmCancel: {};
cmDone: {};
end;

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

Сообщение m0p3e »

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

Сообщение s2176 »

А можно для "зеленых" поподробнее об этом?
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

например так
interface cuptree '__Построение дерева' (,,sci148EscTree) cyan, doaccept;


вот туда сходите и выберите подходящий из раздела tree.sc
http://www.tyumbit.ru/gal_forum/viewtop ... ee%2A#2036
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Сделала так:

tree b1 (,,scViewMarkTree);

Ругается при компиляции: "Не найдена константа Неизвестная константа"
Кто сказал, что бесполезно биться головой об стену?!
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

добавьте в файл проекта блок
const
#include путь_до_файла\galnet.csc
end;

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

Сообщение s2176 »

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

Сообщение s2176 »

А может еще подскажете, как пометить несколько строчек?
Мне, собственно, нужно открыть штатное расписание, выбрать несколько подразделений и для них сформировать отчет.

Как поймать событие нажатия клавиш <Insert>, <Grey+> ?
Vek
Постоянный гость
Сообщения: 74
Зарегистрирован: 16 фев 2006, 13:11

Сообщение Vek »

вот там почитайте
http://www.tyumbit.ru/gal_forum/viewtop ... 2A&start=0


! Пометка
#declare Ins
'~Ins~ Выбрать', cmMarkUnMark, kbIns;
#end
! Групповой выбор
#declare PlusMinus
'~+~ Все', cmSelectAll, kbGrayPlus;
'~-~ Снять', cmUnSelectAll, kbGrayMinus;
'', cmInvertAll, kbGrayMul;

то есть может вам нужны события cmMarkUnMark, cmSelectAll, cmUnSelectAll, cmInvertAll

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

Сообщение s2176 »

Простите за тупость.... но не получается!

Статус-лайн у меня такой - sci1EnInsTree

(sci1EnInsTree..sci1EnInsTree)
{
#F1
'~Ctrl+Enter~ Открыть', cmTreeOpenNode, kbCtrlEnter;
'~Ctrl+Backspace~ Закрыть', cmTreeCloseNode, kbCtrlBack;
'~Enter~ Выбор', cmDefault, kbEnter;
#Ins
#PlusMinus
#Std_Stat
}

Кнопки в нем прорисованы, но на события: cmMarkUnMark, cmSelectAll, cmUnSelectAll, cmInvertAll, - ругается компилятор :o
Кто сказал, что бесполезно биться головой об стену?!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

cmMarkUnMark = 2243;
cmSelectAll = 2244;
cmUnSelectAll = 2245;
cmInvertAll = 2247;
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Заработало, спасибо!
Но теперь не знаю, как выделить цветом строки...

cmMarkUnMark:
{ message('запоминаю');
};
Сообщение выдается, но надо бы поменять цвет у шрифта выделенной строки на синий, как стандартно делает сама Галактика при нажатии <Insert>

Вроде нашла
setFontColor(-1,catalogs.name,abackgroundcolor,aforegroudcolor);

но какие значения принимают abackgroundcolor,aforegroudcolor?
Кто сказал, что бесполезно биться головой об стену?!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

лучше так
browse
Table Catalogs;
Fields
{ Font = { Color = if ( MarkerStr = '√', ColorMark, 0) }};
catalogs.name ....
....
цвета доступны от 1 до 16 кажись - смотрите color.inc(8) или cfg(712)
MarkerStr описываете в "as select"
"выражение проверки на помеченность" (fieldname=MarkerStr)
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Смотря куда сохраняем пометки.
Например если pick:
tree b1;
fields
{FONT = { COLOR = If ( IsValid ( tnPick), ColorMark, 0 ) }}
catalogs.code: [20], protect;
catalogs.name:[40], protect;
end;

Pick надо описать в таблице с подцепкой.

Во избежание вопросов :)
ColorMark = 3;
!системные цвета
ColorSysBlack = 46;
ColorSysMaroon = 47;
ColorSysGreen = 48;
ColorSysOlive = 49;
ColorSysNavy = 50;
ColorSysPurple = 51;
ColorSysTeal = 52;
ColorSysGray = 53;
ColorSysSilver = 54;
ColorSysRed = 55;
ColorSysLime = 56;
ColorSysYellow = 57;
ColorSysBlue = 58;
ColorSysFuchsia = 59;
ColorSysAqua = 60;
ColorSysWhite = 61;
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Спасибо за науку, буду пробовать!
Кто сказал, что бесполезно биться головой об стену?!
Ответить