![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с PopupMenu [D7, Win2k, WinXP]
pavel_guzhanov © (2005-05-26 13:27:00)Народ, что-то я туплю, но никак не могу сделать, чтобы при клике на пункте всплывающего меню "Вставить" содержимое буфера обмена вставилось в тот компонент(напимер в Memo) над которым вызвали это самое меню. Подскажите, как это сделать...
pavel_guzhanov (2005-05-26 14:04:00) [1]Спасибо большое!!!!!!
-=XP=- (2005-05-26 13:52:00) [2]Ну куда же я спешу?! :(
P := TControl(Sender).{...}
P.S. Sorry. :)
-=XP=- (2005-05-26 13:50:00) [3]Прошу прощения. На самом деле не совсем правильно написал.
procedure TForm1.MenuInsertClick(Sender: TObject);
var
C: TComponent;
begin
C := PopupMenu.PopupComponent;
if Assigned(C) and (C is TMemo) then
TMemo(C).PasteFromClipboard;
// Другие действия, если не TMemo, а какой-то другой компонент
end;
procedure TForm1.MemoMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
P: TPoint;
begin
if (Button = mbRight) and (Sender.InheritsFrom(TControl)) then
begin
PopupMenu.PopupComponent := TComponent(Sender);
P := TControl(Memo).ClientToScreen(Point(X, Y));
PopupMenu.Popup(P.X, P.Y);
end;
end;
Чапаев (2005-05-26 13:48:00) [4]if Sender is (TControl что ли?) then
(Sender as ...).PasteFromClipboard;
-=XP=- (2005-05-26 13:39:00) [5]С одной стороны, TMemo имеет собственное PopupMenu. Там и пункт меню "Вставить".
С другой стороны, если речь не только, и не столько про TMemo, то:
procedure TForm1.MenuInsertClick(Sender: TObject);
begin
TMemo(PopupMenu. PopupComponent).PasteFromClipboard;
end;
procedure TForm1.MemoMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
P: TPoint;
begin
if (Button = mbRight) then
begin
PopupMenu. PopupComponent:= TMemo(Sender);
P := Memo.ClientToScreen(Point(X, Y));
PopupMenu.Popup(P.X, P.Y);
end;
end;
P.S. Не обессудьте, если что-то лишнее. Но где-то в этом направлении.