Консультация № 63418
20.11.2006, 17:25
0.00 руб.
0 2 2
Здравствуйте уважаемые эксперты! Вопрос следующий: на форме имеется 5 Edit‘ов. В каждом из них есть текст. При нажатии правой кнопки мыши на любом из Edito‘ов появляется PopupMenu (одно и тоже для всех), в котором есть пункт "Вставить строку из Clipboard". При нажатии на этом пункте программа должна вставить строку из буфера в текущую позицию курсора (курсор может находиться в любом месте текста) в тот Edit, на котором было вызвано PopupMenu. Как это реализовать? Заранее большое спасибо!

Обсуждение

Неизвестный
20.11.2006, 17:36
общий
это ответ
Здравствуйте, Shurik!
Сделайте следующий обработчик пункта меню:

procedure TForm.PasteClick(Sender: TObject);
const BufLen=10000;
var Buffer:array [0..BufLen-1] of char;
FocusedEdit:TEdit;
begin
if Clipboard.GetTextBuf(Buffer,BufLen)=0
then exit;
if ActiveControl is TEdit then
begin
FocusedEdit:=ActiveControl as TEdit;
FocusedEdit.SelText:=Buffer;
end;
end;
Неизвестный
25.11.2006, 13:49
общий
это ответ
Здравствуйте, Shurik!
var
Com:TComponent;
procedure TForm1.FormCreate(Sender: TObject);
begin
Clipboard.AsText:=‘Sattar‘;
end;
(Обробник події ContextPopup в усіх едітах однаковий)
procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
Com:=FindComponent((Sender as TEdit).Name);
end;
{PopupMenu}
procedure TForm1.paste1Click(Sender: TObject);
begin
(Com as Tedit).PasteFromClipboard;
end;
Форма ответа