procedure CopyButtonClick(Sender: TObject);
beginif ActiveControl is TMemo then
TMemo(ActiveControl).CopyToClipboard;
if ActiveControl is TDBMemo then
TDBMemo(ActiveControl).CopyToClipboard;
if ActiveControl is TEdit then
TEdit(ActiveControl).CopyToClipboard;
if ActiveControl is TDBedit then
TDBedit(ActiveControl).CopyToClipboard;
end;
procedure PasteButtonClick(Sender: TObject);
beginif ActiveControl is TMemo then
TMemo(ActiveControl).PasteFromClipboard;
if ActiveControl is TDBMemo then
TDBMemo(ActiveControl).PasteFromClipboard;
if ActiveControl is TEdit then
TEdit(ActiveControl).PasteFromClipboard;
if ActiveControl is TDBedit then
TDBedit(ActiveControl).PasteFromClipboard;
end;
Код-сниппет содержит два процедуры, CopyButtonClick и PasteButtonClick, которые предназначены для обработки операций копирования и вставки для конкретных типов контролов в приложении на Delphi.
Процедура CopyButtonClick:
Эта процедура вызывается при клике кнопки "Копировать". Она проверяет, является ли активным контролем (т.е., контролом, который имеет фокус) одним из следующих типов:
TMemo: если это так, она вызывает метод CopyToClipboard, чтобы скопировать содержимое мемо в системный буфер обмена.
TDBMemo: если это так, она вызывает метод CopyToClipboard, чтобы скопировать содержимое базы данных мемо в системный буфер обмена.
TEdit: если это так, она вызывает метод CopyToClipboard, чтобы скопировать содержимое редактора в системный буфер обмена.
TDBedit: если это так, она вызывает метод CopyToClipboard, чтобы скопировать содержимое базы данных редактора в системный буфер обмена.
Процедура PasteButtonClick:
Эта процедура вызывается при клике кнопки "Вставить". Она проверяет, является ли активным контролем (т.е., контролом, который имеет фокус) одним из следующих типов:
TMemo: если это так, она вызывает метод PasteFromClipboard, чтобы вставить содержимое системного буфера обмена в мемо.
TDBMemo: если это так, она вызывает метод PasteFromClipboard, чтобы вставить содержимое системного буфера обмена в базу данных мемо.
TEdit: если это так, она вызывает метод PasteFromClipboard, чтобы вставить содержимое системного буфера обмена в редактор.
TDBedit: если это так, она вызывает метод PasteFromClipboard, чтобы вставить содержимое системного буфера обмена в базу данных редактора.
Предложения и улучшения:
Вместо жесткого кодирования конкретных типов контролов 考虑 использовать более общий подход, проверяя, является ли активным контролем экземпляром определенного интерфейса или класса. Это сделает код более гибким и легче для обслуживания.
Рассмотрите возможность добавления обработки ошибок для ситуаций, когда операция буфера обмена неудачна (например, когда пользователь пытается вставить содержимое в контрол, который не поддерживает вставку).
Вам может понравиться использовать централизованную систему управления буфером обмена вместо отдельных процедур копирования/вставки для каждого типа контролов.
Вот пример рефакторинга кода с использованием интерфейсов:
В этом примере IClipboardable - это интерфейс, который определяет методы CopyToClipboard и PasteFromClipboard. Процедуры CopyButtonClick и PasteButtonClick проверяют, является ли активным контролем экземпляром этого интерфейса, и если так, вызывают соответствующий метод. Этот подход позволяет декouple копирование/вставку от конкретных типов контролов и сделать код более легким для обслуживания.
Копирование и вставка текста в приложении на языке Delphi выполняются с помощью процедур CopyButtonClick и PasteButtonClick, которые копируют или вставляют текст из буфера обмена в соответствующие текстовые компоненты.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.