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

Вниз

TPopUpMenu & TComponents   Найти похожие ветки 

 
snake1977   (2003-10-29 15:32) [0]

Здравствуйте! подскажите как можно в realTime назначить всем компонентам расположенным на форме, popupmenu.
Я сделал так
procedure TForm1.FormCreate(Sender: TObject);
Var i:Integer;
begin
for i:=0 to Form1.ComponentCount-1 do
Begin
TControl(Form1.Components[i].PopUpMenu:=PopUpMenu1;
End;
end;

но на этапе компиляции выскакивает ошибка
undeclared identifier "PopUpMenu"

:(((


 
Skier   (2003-10-29 15:35) [1]

type
THackControl = class(TControl);

//.........................

for i:=0 to Form1.ComponentCount-1 do Begin
if Form1.Components[i] is TControl then
THackControl(Form1.Components[i]).PopUpMenu := PopUpMenu1;
End; //for


 
snake1977   (2003-10-29 15:37) [2]

сработало!!
а почему надо делать еше один класс?? подскажите


 
Skier   (2003-10-29 15:38) [3]

>snake1977 (29.10.03 15:37) [2]
чтобы "достучатся" до protected св-ва класса TControl


 
Юрий Зотов   (2003-10-29 15:40) [4]

> snake1977

Свойство PopupMenu появляется, начиная только с класса TControl - поэтому для TComponent оно у Вас и не работало. Но у TControl оно объявлено в секции protected, для доступа к которой и нужен класс THackControl.


 
mOOx_   (2003-10-29 15:41) [5]

Это чо, прямо из кода?
TControl(Form1.Components[i].PopUpMenu:=PopUpMenu1
Скобку, во-первых закрой.
А потом. зачем всем? К тому же: глянь ка в исходник ТКонтрол. Там ПопапМеню в протектед объявлено.
Придется, скорее всего, что-то типа
TButton(Form1.Components[i]).PopupMenu...


 
Skier   (2003-10-29 15:42) [6]

>mOOx_ © (29.10.03 15:41) [5]
ОЙ !


 
mOOx_   (2003-10-29 15:43) [7]

Сори, постов не было, писал долго :)
Удачи.
ЗЫ: кстати, я тоже просветился. Сенкс :)


 
snake1977   (2003-10-29 15:50) [8]

Спасибо за отклик :)
все понятно теперь :)
толко, возник другой вопрос:
на форме расположено главное меню и соответсвенно в цикле для каждого пункта меню присходит преобразование к классу THackControl и присвоение popupmenu. Я так предпологаю что должно вызываться исключение, так как преобразовать объект класса TmenuItem в объект класса THackControl не возможно , т.к. он не является наследником TControl и у него нет такого свойства как popupmenu. Но оно не вызывается, все проходит на ура :)
Вот и вопрос, а можно ли заставить выскакивать контекстное меню на пункте основного меню формы??


 
Юрий Зотов   (2003-10-29 16:00) [9]

> Я так предпологаю что должно вызываться исключение, так как
> преобразовать объект класса TmenuItem в объект класса
> THackControl не возможно , т.к. он не является наследником
> TControl и у него нет такого свойства как popupmenu.

Правильно предполагаете, но здесь не совсем так. Здесь НЕТ преобразования к THackControl (оператор AS), здесь идет ПРЯМОЕ приведение типа.

> Но оно не вызывается, все проходит на ура :)

Потому что вначале стоит проверка:
if Form1.Components[i] is TControl ...

> можно ли заставить выскакивать контекстное меню на пункте
> основного меню формы?

Ручками, обрабатывая сообщения мыши.



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

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

Наверх




Память: 0.46 MB
Время: 0.043 c
1-41184
Mistic
2003-11-02 15:58
2003.11.13
Child -Форма в DLL


1-41425
AlexDBases
2003-10-29 14:43
2003.11.13
Ссылка на статью про консоль....


1-41320
denick
2003-10-31 09:52
2003.11.13
Мастера, помогите пожалуйста.


4-42293
frost
2003-08-22 08:58
2003.11.13
Добавление пункта в контекстное меню Windows


1-41614
vic_vm
2003-10-25 20:29
2003.11.13
Не могу перевести C++ код на Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский