Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2022, 16:10   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 637
По умолчанию Наполнение меню в цикл

Создал вот такую процедуру, чтобы наполнить менюшку кнопками, которые обрабатывает одна процедура

Код:
type
   ProcedureClick=procedure(Sender: TObject) of object;
Код:
Procedure MakeMenuItem(PPM:TComponent; const Captions: array of string; Proc:ProcedureClick; RadioItems: boolean);
  var
    j:integer;
    MI:TMenuItem;
begin
    For j:=low(Captions) to high(Captions) do begin
      MI:=TMenuItem.Create(nil);

      If PPM is TMenu then TMenu(PPM).Items.Add(MI) else
      If PPM is TMenuItem then TMenuItem(PPM).Add(MI);

      MI.Tag:=j;
      MI.Caption:=Captions[j];
      MI.RadioItem:=RadioItems;
      MI.OnClick:=Proc;
    end;
end;
Вопрос: как привести этот код к нормальному виду? Оно та работает, но есть ощущение того, что код не очень естественный... Особенно учитывая этот If внутри цикла
Kronos913 вне форума Ответить с цитированием
Старый 20.02.2022, 18:55   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Особенно учитывая этот If внутри цикла
1. посмотреть как объявлен Tmenu.Items: TMenuItem;
2. объявить свою процедуру "универсально"
Код:
procedure MakeMenu(parent: TMenuItem; ...);
и убрать этот if

3. и использовать
Код:
mm: TMenu;
MAkeMenu(mm.Items, ...);
Код:
mx: TMenuItem;
MAkeMenu(mx, ...);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.02.2022, 20:37   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 637
По умолчанию

Отлично, спасибо. Так лучше
Kronos913 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Варианты наполнение DBComboBox KBO Помощь студентам 9 28.11.2015 18:44
Div и его наполнение. МОЛЛь HTML и CSS 1 15.05.2013 14:57
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34