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

Вниз

Как получить Sender объекта на котором кликнули попупменюшкой   Найти похожие ветки 

 
pvv   (2003-08-24 05:53) [0]

Здраствуйте Мастера, если не по теме, то скажите где спросить.
Есть несколько объектов на любом из них кликаю правой кнопкой мышки и в пункте меню делаю что-либо. Не хочется писать много процедур для каждого объекта. Отсюда вопрос, как получить сендер объекта на котором вызван попуп. Впроцедуру попупменюклика передается сендер пункта попупменю. Хочется сделать что-то типа:

(Sender as TImage).Picture.LoadFromFile(...);

Смог вычислить только имя компонента (типа MyImg), а что дальше не знаю. Может кто подскажет.
За любые идеи блогадарю.
PS: Можно ответ или сампл мне на емайл PVVladimir@mail.ru, просто редко бываю в инете, а почту чаще смотрю.


 
TAMROF   (2003-08-24 07:34) [1]

This example uses two edit boxes, two memos, and one pop-up menu on a form. The pop-up menu contains Cut, Copy, and Paste commands. This code makes the pop-up menu available to both edit boxes and both memos:

procedure TForm1.FormCreate(Sender: TObject);

begin
PopupMenu1.AutoPopup := True;
Edit1.PopupMenu := PopupMenu1;
Edit2.PopupMenu := PopupMenu1;
Memo1.PopupMenu := PopupMenu1;
Memo2.PopupMenu := PopupMenu1;

end;

These are the cut, copy, and paste OnClick events for the commands on the pop-up menu.

procedure TForm1.Copy1Click(Sender: TObject);

begin
if PopupMenu1.PopupComponent = Edit1 then
Edit1.CopyToClipboard
elseif PopupMenu1.PopupComponent = Edit2 then
Edit2.CopyToClipboard
else if PopupMenu1.PopupComponent = Memo1 then
Memo1.CopyToClipboard
else if PopupMenu1.PopupComponent = Memo2 then
Memo2.CopyToClipboard
else
Beep;

end;

procedure TForm1.Cut1Click(Sender: TObject);

begin
if PopupMenu1.PopupComponent = Edit1 then
Edit1.CutToClipboard
elseif PopupMenu1.PopupComponent = Edit2 then
Edit2.CutToClipboard;
else if PopupMenu1.PopupComponent = Memo1 then
Memo1.CutToClipboard
else if PopupMenu1.PopupComponent = Memo2 then
Memo2.CutToClipboard
else
Beep;

end;

procedure TForm1.Paste1Click(Sender: TObject);

begin
if PopupMenu1.PopupComponent = Edit1 then
Edit1.PasteFromClipboard
else if PopupMenu1.PopupComponent = Edit2 then
Edit2.PasteFromClipboard;
else if PopupMenu1.PopupComponent = Memo1 then
Memo1.PastFromClipboard
else if PopupMenu1.PopupComponent = Memo2 then
Memo2.PasteFromClipboard
else
Beep;
end;

Что-нить понятно?


 
Sheng   (2003-08-24 10:23) [2]

PopupMenu1.PopupComponent - и есть Sender


 
Юрий Зотов   (2003-08-24 10:47) [3]

> Sheng © (24.08.03 10:23) [2]

Sender - это все же пункт меню, TMenuItem.
А PopupComponent - это другое.

> TAMROF (24.08.03 07:34) [1]

А если на форме еще 20 Edit"ов или Memo, то так и будем все перечислять? А если их 120?

Вот этот код сработает при любом количестве любых потомков TCustomEdit:

procedure TForm1.Cut1Click(Sender: TObject);
begin
if PopupMenu1.PopupComponent is TCustomEdit then
TCustomEdit(PopupMenu1.PopupComponent).CutToClipboard
else
Beep
end;


 
TAMROF   (2003-08-24 13:18) [4]

Вообще-то речь не идет только о Edit-ах !

Поэтому

>А если на форме еще 20 Edit"ов или Memo, то так и будем все
>перечислять? А если их 120?

не уместно...

Речь идет о нескольких разных компонентах от разных потомков...
Вот проблема:
>Есть несколько объектов на любом из них кликаю правой кнопкой мышки...

2 pvv:
или не так?


 
pvv   (2003-08-24 15:18) [5]


> TAMROF (24.08.03 07:34) [1]

Спасибо, но про такой вариант я писал, что не очень.
Можно и через case.
Если конкретней, то есть 50 картинок на форме и я в них загружаю, редактирую и удаляю изображение изображение.


> Юрий Зотов © (24.08.03 10:47) [3]
> Вот этот код сработает при любом количестве любых потомков
> TCustomEdit:
>
> procedure TForm1.Cut1Click(Sender: TObject);
> begin
> if PopupMenu1.PopupComponent is TCustomEdit then
> TCustomEdit(PopupMenu1.PopupComponent).CutToClipboard
> else
> Beep
> end;

Вот это то, что мне надо было.
Спасибо всем. Я разобрался.



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

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

Наверх





Память: 0.46 MB
Время: 0.01 c
3-10640
Rav
2003-08-12 19:05
2003.09.04
---|Ветка была без названия|---


4-11016
АТ
2003-07-04 13:03
2003.09.04
Помогите с синтаксисом сообщения WM_SETTEXT


1-10781
Anton Lagutin
2003-08-23 11:59
2003.09.04
Заголовки


8-10839
Bill
2003-05-03 13:39
2003.09.04
Ошбки в TImageList


14-10982
Slawan
2003-08-11 13:04
2003.09.04
Мужики! У меня вопрос о Frame!





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