Визначити номер пункту меню

Визначити номер пункту меню

Програмно створюю меню. Впихати в popup меню назви наявних дисків (заздалегідь невідомо скільки їх). Як дізнатися який пункт меню був обраний, бажано в одній процедурі обробки?

створюю процедуру обробки, на яку переправляю кліки з усіх пунктів. типу:

procedure TForm1.popClick (Sender: TObject);
begin
if sender = b then showmessage ( "b"); // натиснуто пункт з ім'ям b
if sender = a then showmessage ( "a"); // натиснуто пункт з ім'ям а
end;

звичайно, при великій кількості пунктів потрібно індексуватися.

Так, але імена "a" і "b" невідомі до створення. Цих пунктів меню немає при
компіляції і при спроби порівняти sender = a видається помилка "Undeclared identifier:" a ". Мож на коді буде наочніше?

procedure tmain.ddd (sender: tobject);
begin
if sender = c1 then showmessage ( "Disk select "); // Так.
end;

гм. по-моєму, треба створити і NewItem.Name (наприклад, а)

У тебе NewItem.Caption друга буква ім'я диска, цього достатньо для ідентифікації

А можна спробувати використовувати властивість Tag!

Я завжди в подібних випадках застосовував властивість TAG. І в залежності від кількості пунктів точно знав на якому клікаешся. (Для всіх пунктів єдина процедура обробки) У цій процедурі:

case (sender as TComponent) .tag of
1: // обробка диска Б
2: // - / - З
.

Схожі статті