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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2009, 13:24   #1
Lich
Пользователь
 
Регистрация: 03.06.2008
Сообщений: 31
По умолчанию Itemindex в Popupmenu

Создаю динамически 5 item'ов в Popupmenu...Потом хочу, например обратиться к 2 item'у и в memo записать текст, который он содержит, но вот беда, не могу обратиться программно, а точнее не могу получиться index того, на что я кликнул...Пробовал menuitem - безрезультатно ..
Lich вне форума Ответить с цитированием
Старый 09.01.2009, 13:35   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Не знаю, насколько я правильно все понял... Может так?
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    procedure MenuClick(Sender: TObject);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
  m: TMenuItem;
begin
  for i := 0 to 4 do begin
    m := TMenuItem.Create(PopupMenu1);
    m.Caption := 'Меню ' + IntToStr(i);
    m.OnClick := MenuClick;
    PopupMenu1.Items.Add(m);
  end;
end;

procedure TForm1.MenuClick(Sender: TObject);
begin
  Memo1.Lines.Add((Sender as TMenuItem).Caption);
end;

end.
Баламут вне форума Ответить с цитированием
Старый 09.01.2009, 13:55   #3
Lich
Пользователь
 
Регистрация: 03.06.2008
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
Не знаю, насколько я правильно все понял... Может так?
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    procedure MenuClick(Sender: TObject);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
  m: TMenuItem;
begin
  for i := 0 to 4 do begin
    m := TMenuItem.Create(PopupMenu1);
    m.Caption := 'Меню ' + IntToStr(i);
    m.OnClick := MenuClick;
    PopupMenu1.Items.Add(m);
  end;
end;

procedure TForm1.MenuClick(Sender: TObject);
begin
  Memo1.Lines.Add((Sender as TMenuItem).Caption);
end;

end.
Все правильно понял, и все работает, только если не сложно объясни что за код вот это - (Sender as TMenuItem).Caption...
Lich вне форума Ответить с цитированием
Старый 09.01.2009, 14:27   #4
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Sender - указатель на объект, вызвавший метод. В данном случае я точно знаю, что обработчик вызывается объектом типа TMenuItem, потому и не пишу лишних проверок.
Баламут вне форума Ответить с цитированием
Старый 09.01.2009, 21:37   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Это приведение к типу, можно еще так записать: TMenuItem(Sender).Caption...
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PopupMenu Михаил Юрьевич Общие вопросы Delphi 6 03.05.2008 18:46
PopupMenu Teen4jump Общие вопросы Delphi 10 12.03.2008 13:42
Проблема с ComboBox.ItemIndex Селезин Общие вопросы Delphi 3 27.10.2007 16:42
Как заставить Itemindex в ListBox перемещаться при добавлении новой строки на онную ? DartMrakkk Общие вопросы Delphi 10 05.07.2007 11:54