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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2010, 00:00   #1
***СкаЙ***
Пользователь
 
Регистрация: 02.04.2007
Сообщений: 38
По умолчанию Работа с PopupMenu

как сделать так что бы по нажатию на кнопку меню создавалось подменю ?
***СкаЙ*** вне форума Ответить с цитированием
Старый 24.05.2010, 00:03   #2
TzX
Пользователь
 
Аватар для TzX
 
Регистрация: 23.12.2009
Сообщений: 57
По умолчанию

В смысле появлялось?
TzX вне форума Ответить с цитированием
Старый 24.05.2010, 00:36   #3
***СкаЙ***
Пользователь
 
Регистрация: 02.04.2007
Сообщений: 38
По умолчанию

что бы создавались пункты подменю ... хочу выбирать скин для формы, а список что бы создавался динамически
***СкаЙ*** вне форума Ответить с цитированием
Старый 24.05.2010, 00:45   #4
TzX
Пользователь
 
Аватар для TzX
 
Регистрация: 23.12.2009
Сообщений: 57
По умолчанию

Думаю из этого примера будет всё понятно

Код:
unit Tunit1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    Edit1: TEdit; { Просто "место для щелчка" и отображения результатов }
    procedure Edit1Click(Sender: TObject);
  private
    { Private declarations }
    FPopupMenu: TPopupMenu; { Общий Popup для использования "кем нужно" }
    FPopupResult: Longint; { Результат последнего выполненного FPopupMenu }
    procedure FPopupMenuClick(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FPopupMenuClick(Sender: TObject);
begin
  with (Sender as TMenuItem) do
    FPopupMenu.Tag := Tag; { передаем значение TMenuItem.Tag в FPopupMenu.Tag }
end;

procedure TForm1.Edit1Click(Sender: TObject);
var
  tx, ty, tz: integer;
  FMenuItem: TMenuItem;
begin
  tx := Left + (Width - ClientWidth) + (Sender as TEdit).Left;
  ty := Top + (Height - ClientHeight) + (Sender as TEdit).Top;
  FPopupMenu := TPopupMenu.Create(Self);
  FPopupMenu.AutoPopup := false;
  FPopupMenu.Tag := 0;
  for tz := 1 to 5 do
  begin
    FMenuItem := TMenuItem.Create(Self);
    with FMenuItem do
    begin
      Tag := tz;
      OnClick := FPopupMenuClick; { все сделает один OnClick }
      Caption := 'Выбор #' + IntToStr(tz);
    end;
    FPopupMenu.Items.Add(FMenuItem)
  end;
  FPopupMenu.Popup(tx, ty);
  Application.Processmessages; { даем время для обработки события OnClick }
  if FPopupMenu.Tag <> 0 then { они действительно выбрали что-то ? }
  begin
    FPopupResult := FPopupMenu.Tag;
    Edit1.Text := ' Выбор #' + IntToStr(FPopupResult);
  end;
  { FPopupMenu.Tag может храниться в ГЛОБАЛЬНОЙ переменной и использоваться
  позже как порядковое значение в блоках CASE OF или IF THEN
  для организации в коде условного перехода. }
  FPopupMenu.Free;
  FPopupMenu := nil;
end;

end.
TzX вне форума Ответить с цитированием
Старый 24.05.2010, 20:48   #5
***СкаЙ***
Пользователь
 
Регистрация: 02.04.2007
Сообщений: 38
По умолчанию

ну єто создает меню ... а мне нужно уже в созданом меню создать подменю ...SubMenu
***СкаЙ*** вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PopupMenu пауэрлифтинг Общие вопросы Delphi 2 03.03.2010 14:52
Работа с PopupMenu |{ot Win Api 5 05.02.2010 18:00
Совместная работа hook и PopupMenu (Delphi 7) alxd Помощь студентам 7 24.07.2009 10:32
PopupMenu TaTT DoGG Компоненты Delphi 13 23.05.2008 13:19
PopupMenu Teen4jump Общие вопросы Delphi 10 12.03.2008 13:42