Есть процедура для построения динамического меню.
что-то я совсем запутался...процедура не строит уровень вложения меню 3 и глубже...где ошибка понять не могу
помогите плиз.
procedure Tfm_main.CreateSpravMenu;
var
SpravSp:TUniStoredProc;
Button:TdxBarButton;
j:Integer;
ItemLink: TdxBarItemLink;
mnItem: TdxBarSubItem;
Button_tag:integer;
begin
//Создаем меню для конкретного пользователя
CreateSP(main_data.Connection,'sp_create_menu',SpravSp);
SpravSp.ParamByName('f_user').Value:=null;
SpravSp.ExecProc;
SpravSp.First;
while not SpravSp.Eof do
begin
with SpravSp do
begin
if FieldByName('c_c_menu').Value =-1 then //Добавляем в главное меню
begin
mnItem := TdxBarSubItem.Create(MainMenu);
mnItem.Caption:=FieldByName('name').Value;
mnItem.Tag:=FieldByName('c_menu').Value;
with MainMenu,ItemLinks do
begin
BeginUpdate;
with Add do
begin
Item:=mnItem;
BringToTopInRecentList(False);
end;
EndUpdate;
end;
end
else
begin
//Ищем нужный пункт меню
for j := 0 to MainMenu.ItemLinks.Count - 1 do
begin
ItemLink := MainMenu.ItemLinks[j];
if ItemLink.Item.Tag = FieldByName('c_c_menu').Value then
begin
mnItem := TdxBarSubItem(ItemLink.Item);
break;
end;
end;
MainMenu.ItemLinks.BeginUpdate;
ItemLink := mnItem.ItemLinks.Add;
case FieldByName('type').Value of
1: ItemLink.Item := TdxBarSubItem.Create(Self);
2: ItemLink.Item := TdxBarButton.Create(Self)
end;
ItemLink.Item.Caption:=FieldByName('name').Value;
ItemLink.Item.Tag:=FieldByName('c_menu').Value;
ItemLink.BringToTopInRecentList(False);
MainMenu.ItemLinks.EndUpdate;
end;
Next;
end;
end;
SpravSp.Free;
end;