Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TMenuItem порядок создания меню, Как??? 
:(
    Опции темы
ivan219
  Дата 18.10.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



И меется меню MainMenu: TMainMenu; в нём динамически создаются TMenuItem загружаемые из Dll но так как программа ищит Dll файлы неизвестно как то мои меню и пункты меню прыгают сместа на место т.е. как только добовляю новый Dll фаил то всё сразу перемещается может и неперемещатся от чего зависит я пока незнаю.

Вопрос возможно как-то зделать приоретеры в меню чтоб он создовалось только определённым образом внезависимости от того в каком порядке они создаются из Dll.

Вобщем слушаю ваши предложения.

Код

function MainMenuCreate(Name,NameClass,Caption:PChar;
 Click,TypeClass:Boolean):Boolean; StdCall;
begin
 Result:=False;
 MenuFind:=Calc.FindComponent(Name) as TMenuItem;
 if MenuFind=Nil then
  begin
   Menu:=TMenuItem.Create(Calc);
   Menu.Name:=Name;
   Menu.Caption := Caption;
   if Click then Menu.OnClick:=Calc.MenuItemClick;
   case TypeClass of
        True: begin
               MenuFind:=Calc.FindComponent(NameClass) as TMenuItem;
               MenuFind.Insert(0,Menu);
              end;
        False: Calc.MainMenu.Items.Add(Menu);
   end;
   Result:=True;
  end;
end;


Это сообщение отредактировал(а) ivan219 - 18.10.2006, 13:48
PM MAIL ICQ   Вверх
_hunter
Дата 18.10.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



может проще список dll-лок сортировать (ну и добавить его соответсвенно)?
или список имен сортируй (если тебе это нужно)
или храни в dll индекс MenuItem' а и сортируй список по нему...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Dynamic
Дата 18.10.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 12
Всего: 15



создаешь список ДЛЛ, сортируешь как надо и строишь меню по этому списку.


упс, опоздал 

Это сообщение отредактировал(а) Dynamic - 18.10.2006, 13:56


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
ivan219
Дата 18.10.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Цитата(Dynamic @  18.10.2006,  13:55 Найти цитируемый пост)
создаешь список ДЛЛ, сортируешь как надо и строишь меню по этому списку.

Это как Здесь сказали что нельзя или я что-то не так понял smile 
Цитата(_hunter @  18.10.2006,  13:54 Найти цитируемый пост)
или храни в dll индекс MenuItem' а и сортируй список по нему...
 а можено мальенький примерчик smile 

PM MAIL ICQ   Вверх
Dynamic
Дата 18.10.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 12
Всего: 15



Цитата(ivan219 @  18.10.2006,  14:07 Найти цитируемый пост)
Это как Здесь сказали что нельзя или я что-то не так понял 


тебе объясняли, почему файлы с диска могут искаться в разной последовательности.

Я тебе говорю, что найди ВСЕ нужные файлы, создай по ним список, отсортируй его как-нить и по списку строй меню. Тогда у тебя меню всегда будет однообразно. 


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Sansa
Дата 18.10.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 18.10.2006
Где: Королев

Репутация: 3
Всего: 6



Например, используй свойство "Tag".

Код

function GetItemIDbyTag(AMenu: TMenuItem; ATag: Integer): Integer;
var
  I, N: Integer;
  LMenuItem: TMenuItem;
begin
  Assert(Assigned(AMenu), 'AMenu not assigned');
  N:= AMenu.Count;
  for I:= 0 to pred(N) do
  begin
    LMenuItem:=AMenu[I];
    if LMenuItem.Tag = ATag then
    begin
      Result:= AMenu.IndexOf(LMenuItem);
      Break;
    end;
  end;
end;


/// вырезано
  {вместо}
  {False: Calc.MainMenu.Items.Add(Menu);}

  {используй}
  False: Calc.MainMenu.Items.Insert(GetItemIDbyTag(Menг.Items, LTag), Menu);
/// вырезано



Теперь ты можешь управлять положением элемента меню просто изменяя значение переменной LTag, которая может передаваться из той же dll (конечно, для каждой свой, хотя необязательно).

Пример грубый, но по первости сойдет

Это сообщение отредактировал(а) Sansa - 18.10.2006, 17:07
--------------------
- Здравствуйте, я Ваш патологоанатом
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0710 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.