Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Вниз

Меню, созданное динамически   Найти похожие ветки 

 
Doctor Deejay   (2002-07-02 21:54) [0]

В своей проге я динамически создаю попап меню. Затем обрабатываю нажатие по пунктам
вот так:

....
MenuItem.onClick:=ModeItemClick;
....
procedure TMainForm.ModeItemClick(Sender: TObject);
begin
//////////
end;


Как мне узнать после нажатия на пункт меню какой именно был нажат, его порядковый номер и название.
Все они создаются в цикле и им можно присвоить названия.

Как же к ним обратиться? И как обработь нажатие каждого?


 
LLL   (2002-07-02 22:23) [1]

Ну можно было разные методы назначать.
А так есть Tag
и понеслость
with Sender as TMenuItem
case Tag of
... и т. д.


 
Kuljok   (2002-07-03 00:49) [2]

Или юзать те-же названия

if (Sender as TComponent).Name = "Item1" then .......


 
Doctor Deejay   (2002-07-03 00:59) [3]

А если я не знаю сколько будет пунктов и не знаю их названий. Вернее сделано все так, что они меняются в зависимости от конфигурации компа?


 
T'Mon   (2002-07-03 03:37) [4]

Я бы завел класс или запись с описанием элемента меню. При создании этого элемента делал новый экземпляр описания и указатель на него пихал в Tag элемента меню.


 
Doctor Deejay   (2002-07-03 10:03) [5]

Мне кроме номера пункта нужно регистрировать номер подпункта, поэтому одного поля ТАГ не хватает. Нужен еще один!
Как завести запись?


 
Alx2   (2002-07-03 10:22) [6]

Можно использовать снова tag. Например, старшие два байта - номер пункта, младшие - подпункта.
Номер пункта читаем так: tag shr 16
Номер подпункта читаем так: tag and $FFFF
Номер пункта присваиваем так: tag := (Value shl 16) OR (tag and $FFFF)
Номер подпункта присваиваем так: tag := (tag and $FFFF) or Value
Value лучше быть типа Word.

Либо вот так:
Var
tmpTag : Integer;
ComplexNumber : packed record
SubPunkt, Punkt : Word;
end absolute tmpTag;
begin
// Присваиваем
TmpTag := MenuItem.Tag;
TmpTag.Punkt := <...>
TmpTag.SubPunkt := <...>
MenuItem.Tag := tmpTag;
// Читаем
TmpTag := MenuItem.Tag;
TmpTag.Punkt - номер пункта
TmpTag.SubPunkt - номер подпункта
end;


 
Alx2   (2002-07-03 10:24) [7]

Ой, сорри!
Очепятался. Переписываю:

Var
tmpTag : Integer;
ComplexNumber : packed record
SubPunkt, Punkt : Word;
end absolute tmpTag;
begin
// Присваиваем
TmpTag := MenuItem.Tag;
ComplexNumber.Punkt := <...>
ComplexNumber.SubPunkt := <...>
MenuItem.Tag := tmpTag;
// Читаем
TmpTag := MenuItem.Tag;
ComplexNumber.Punkt - номер пункта
ComplexNumber.SubPunkt - номер подпункта
end;


 
Alx2   (2002-07-03 10:25) [8]

Еще и это перепишу:
:)
Можно использовать снова tag. Например, старшие два байта - номер пункта, младшие - подпункта.
Номер пункта читаем так: tag shr 16
Номер подпункта читаем так: tag and $FFFF
Номер пункта присваиваем так: tag := (Value shl 16) OR (tag and $FFFF)
Номер подпункта присваиваем так: tag := (tag and $FFFF 0000) or Value


 
Skier   (2002-07-03 11:58) [9]

>Doctor Deejay
Для дин. создания меню очень удобно испол-ть NewItem


 
Proton   (2002-07-09 19:06) [10]

C:\Soft\borland\Delphi5\Help\Examples\Menu
C:\Soft\borland\Delphi5\Help\Examples\Menu2



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
1-70804
Ulugbek
2002-07-10 10:30
2002.07.22
Про InstallShield.


1-70679
nitro313
2002-07-11 02:07
2002.07.22
Народ, подскажите... Как вывести переменную с разделением...


1-70704
Alexandr
2002-07-11 12:41
2002.07.22
блондинка за рулем


1-70737
tovSuhov
2002-07-11 17:25
2002.07.22
Переназначение дескрипторов ввода-вывода...


1-70796
Cowboy
2002-07-10 11:31
2002.07.22
Как узнать имя компоненты?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский