Визначити номер пункту меню
Програмно створюю меню. Впихати в 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
end;
гм. по-моєму, треба створити і NewItem.Name (наприклад, а)
У тебе NewItem.Caption друга буква ім'я диска, цього достатньо для ідентифікації
А можна спробувати використовувати властивість Tag!
Я завжди в подібних випадках застосовував властивість TAG. І в залежності від кількості пунктів точно знав на якому клікаешся. (Для всіх пунктів єдина процедура обробки) У цій процедурі:
case (sender as TComponent) .tag of
1: // обробка диска Б
2: // - / - З
.