Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание пунктов меню во время выполнения программы

Delphi , Компоненты и Классы , Меню

Создание пунктов меню во время выполнения программы

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  When you click on button1 the number of installed fonts 
  are displayed in the menu by creating the menuitems dynamically 
   
  Zur Laufzeit wird die Anzahl der installierten Schriften ausgelesen und 
  entsprechend viele Menupunkte erzeugt 
}

 type
   TForm1 = class(TForm)
     Button1: TButton;
     label1: TLabel;
     MainMenu1: TMainMenu;
     Fonts1: TMenuItem;
     procedure Fonts1Click(Sender: TObject);
     procedure FormCreate(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.dfm}

 procedure TForm1.Fonts1Click(Sender: TObject);
 begin
   if Sender  Fonts1 then
     label1.Caption := (Sender as TMenuItem).Caption;
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 var
   NewItem: TMenuItem;
   i: Integer;
 begin
   for i := 0 to Screen.Fonts.Count - 1 do
   begin
     // Create a new Menu Item 
    // Neuen Menupunkt erzeugen 
    NewItem := TMenuItem.Create(Self);
     // Take the Font name as Caption 
    // Den Schriftnamen als Caption festlegen 
    NewItem.Caption := Screen.Fonts.Strings[i];
     // Assign a OnClick-Event 
    // Ein OnClick-Ereignis zuweisen 
    NewItem.OnClick := Fonts1Click;
     // Add the new menu 
    // Den neuen Menupunkt hinzufugen 
    Fonts1.Add(NewItem);
   end;
 end;

Это пример программирования на языке Delphi, демонстрирующий создание динамических пунктов меню в компоненте TMainMenu в реальном времени. Цель - отобразить количество установленных шрифтов на системе и добавить соответствующие пункты меню к основному меню.

Разбивка кода:

  1. Процедура FormCreate вызывается при создании формы, где происходит динамическое создание меню.
  2. Цикл for проходит по списку установленных шрифтов с помощью свойства Screen.Fonts.Count, и для каждого шрифта создается новый экземпляр класса TMenuItem с помощью метода Create.
  3. Новый пункт меню получает свойство Caption, которое задается именем шрифта, полученным из массива строк Screen.Fonts.Strings.
  4. Каждому пункту меню присваивается обработчик события (Fonts1Click) с помощью свойства OnClick. Это событие будет вызываться при клике на пункт меню.
  5. Наконец, новый пункт меню добавляется в меню Fonts1 с помощью метода Add.

Процедура Fonts1Click отвечает за обработку событий клика динамически созданных пунктов меню. При клике на пункт меню она просто задает текст лейбла (label1) равным тексту кликнутого пункта меню.

Обратите внимание, что этот код предполагает, что вы уже добавили компоненты TButton (назначенный как Button1), TLabel (назначенный как label1) и TMainMenu (назначенный как MainMenu1) на вашу форму в IDE. Кнопка используется для запуска создания динамических пунктов меню, а лейбл отображает текст кликнутого пункта меню.

В целом, этот код демонстрирует, как создавать динамические пункты меню в реальном времени с помощью встроенных компонентов Delphi и механизмов обработки событий.

В статье описывается способ создания пунктов меню в программе Delphi динамически, используя список установленных шрифтов и создавая новые элементы меню на лету.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Меню ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:06:59/0.0054857730865479/1