procedure TForm1.Edit1Click(Sender: TObject); begin IF ActiveControl IS TCustomEdit THENBEGINWITH TCustomEdit(ActiveControl) DOBEGINCut1.Enabled := SelLength > 0;Copy1.Enabled := SelLength > 0;Paste1.Enabled := ClipBoard.HasFormat(CF_TEXT);END;ENDELSEBEGINCut1.Enabled := False;Copy1.Enabled := False;Paste1.Enabled := False;END;end; procedure TForm1.Cut1Click(Sender: TObject); begin IF ActiveControl IS TDBEdit THENWITH TDBEdit(ActiveControl).DataSource.DataSet DO Edit;TCustomEdit(ActiveControl).CutToClipboard;IF ActiveControl IS TDBEdit THENWITH TDBEdit(ActiveControl).DataSource.DataSet DO Post;end; procedure TForm1.Copy1Click(Sender: TObject); begin TCustomEdit(ActiveControl).CopyToClipboard;end; procedure TForm1.Paste1Click(Sender: TObject); begin IF ActiveControl IS TDBEdit THENWITH TDBEdit(ActiveControl).DataSource.DataSet DO Edit;TCustomEdit(ActiveControl).PasteFromClipboard;IF ActiveControl IS TDBEdit THENWITH TDBEdit(ActiveControl).DataSource.DataSet DO Post;end; |
Хорошо? Edit1 - меню редактирования верхнего уровня - если по нему щелкают, то прежде, чем меню "вывалится" вниз, происходит проверка того, принадлежит ли текущий активный элемент управления некоторым типам редактирования. Если это условие выполняется, активизируются пункты меню Вырезать и Копировать, и, если есть текст в буфере обмена, то и пункт Вставить. Если нет, то все три пункта будут недоступны.
Для копирования содержимого элемента редактирования достаточно просто вызвать CopyToClipboard; это не проблема. Для вырезания и вставки вам необходимо *ИЗМЕНИТЬ* содержимое активного элемента редактирования - если это DBEdit, вам необходимо перейти в режим редактирования и после манипуляций с данными буфера обмена запостить измененные данные.
- Neil J. Rubenking [000801]