CW 5.5
есть REPORT с несколькими GROUP BREAK-ами, каждый из них со своим GROUP
HEADER-ом и FOOTER-ом. Необходимо в run-time в зависимости от условий
открывать/прятать эти хедеры и футеры.
Дык вот, вопрос, как бы определить к какому конкретно брейку принадлежит
тот или иной хедер али футер? PROP:Parent (и PROP:Child) нифига не
возвращают для брейков.
ЗЫ. SETTARGET делал.
С уважением,
Новиков Антон
anfront@mail.ru
ICQ# 50995986
(Добавление)
Когда-то с этим разбирался. :):)
Лови процедурку. Работает только с cw5.5
Получает USE родителя для любого контрола. для Group Header и Foter
дает значение USE Group Break
Код: Выделить всё
! BreakFeq#=GetParentFeq(Report,?BreakHeader)
GetParentFeq PROCEDURE (rep,Feq)
addr long
Block long
mod long
base long
b byte,dim(4)
use1 long
use2 long
ptr long !Указатель
llong long !Целое
FeqParent long
CODE
addr=ADDRESS(rep)
PEEK(addr+56H,block) !Получили адрес списка контролов !Все это сильно зависит от версии
PEEK(addr+5AH,mod) !Длина спика в единицах списка !Даже изменилось при переходе
PEEK(addr+66h,base) !единица списка !с 5.5b на 5.5c
b[1]= BAND(Feq, 0ffH)
b[2]=BSHIFT(BAND(Feq, 0ff00H),-8)
b[3]=BSHIFT(BAND(Feq, 0ff0000H),-16)
b[4]=BSHIFT(BAND(Feq,0ff000000h),-24)
r#=0
LOOP j#=1 TO 4
r#=5*r#+b[j#]
END
r#=r#%mod !Смещение
PEEK(block+r#*base,use1) !Адрес блока описания
IF use1=0 THEN RETURN 0. !На всякий случай
PEEK(use1,use2)
PEEK(use2,use2) !Получили значение USE
flagfind#=false
IF use2<>Feq
LOOP n#=r#+1 TO mod !Ищем до того пока не встретим нужный
PEEK(block+n#*base,use1)
IF use1=0 THEN CYCLE.
PEEK(use1,use2)
PEEK(use2,use2)
IF use2=Feq
flagfind#=True
BREAK
END !Нашли
END
ELSE
flagFind#=True
END
!Выдираем адрес родителя
IF ~FlagFind# THEN RETURN 0 .
PEEK(use1+10H,use1) !Вот и сам блок контрола
IF rep$feq{prop:type}=29 !В зависимости от типа
of1#=40H
ELSE
of1#=90H
END
PEEK(use1+of1#,use1) !Получили адрес родителя
IF use1=0 !Header или Footer страницы или нет Break
RETURN 0
ELSE
PEEK(use1,use2)
IF use2<>addr
RETURN 0 !Это Header или Footer страничный
ELSE
PEEK(use1+8,FeqParent) !Получили Feq родителя!!!!!!!!!!!!!!!!!
END
END
RETURN FeqParent
С уважением,
Дмитрий Осипов mailto:Dima_Osipov@km.ru
(Добавление)
Да... круто! Спасибо, буду пробовать.
С уважением,
Новиков Антон
Написал: ClaList(2)