Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Edit - ClipBoard 
V
    Опции темы
uranpro
Дата 5.6.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



Код

edit.CopyToClipboard; // oO выдает строчку  edit.CopyToClipboard; хотя edit.text = '4590'

как скопировать данные в буффер(ctrl+c) ?


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
THandle
Дата 5.6.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Что то не очень понятно... Что не работает?

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.CopyToClipboard;
end;


Отлично работает...
PM   Вверх
uranpro
Дата 5.6.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



((( а у меня нет 

edit.CopyToClipboard; выполняю, в буффере edit.CopyToClipboard; оО епыть (((


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
THandle
Дата 5.6.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Все понятно. Этот метод использует сообщение WM_COPY. Текст должен быть выделен.

Вот они... Эти методы:

Код

procedure TCustomEdit.CopyToClipboard;
begin
  SendMessage(Handle, WM_COPY, 0, 0);
end;

procedure TCustomEdit.CutToClipboard;
begin
  SendMessage(Handle, WM_CUT, 0, 0);
end;

procedure TCustomEdit.PasteFromClipboard;
begin
  SendMessage(Handle, WM_PASTE, 0, 0);
end;


Попробуй как нибудь так:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.SetFocus;
  Edit1.CopyToClipboard;
end;


или так:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.SelStart := 0;
  Edit1.SelLength := length(Edit1.Text);
  Edit1.CopyToClipboard;
end;

PM   Вверх
mr.Anderson
Дата 5.6.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



uranpro, не может такого быть, все нормально работает. Метод CopyToClipboard() копирует в буфер фрагмент текста, выделенный в том компоненте, для которого вызывается метод. Сбоев в нем быть не может, значит, что-то не так делаешь.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
uranpro
Дата 5.6.2008, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



спасибо !!! работают оба, удобней 2 способ) smile  smile 


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
mr.Anderson
Дата 5.6.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



THandle, ты долго еще будешь меня опережать?! smile 

Если у Edit'а есть метод SelectAll() (точно не помню), то можно так:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.SelectAll();
  Edit1.CopyToClipboard();
end;

Если учитывается user-friendly, то лучше сделать так:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 oldx : Integer;
 oldl : Integer;
begin
 oldx := Edit1.SelStart;
 oldl := Edit1.SelLength;
  
 Edit1.SelectAll();
 Edit1.CopyToClipboard();

 Edit1.SelStart := oldx;
 Edit1.SelLength := oldl;
end;



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
uranpro
Дата 5.6.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



так он же не выделенный( при изменении edit.text нужно в буф копировать инфу постоянно


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
mr.Anderson
Дата 5.6.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



uranpro, кто не выделенный? Мой код или код THandle выделяет текст перед тем, как его копировать. Мой второй пример еще и возвращает на место курсор и старое выделение, если оно было. Хотя это глупость я сморозил, надо вот так лучше сделать:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 oldx : Integer;
begin
 if( Edit1.SelLength > 0 ) then
 begin
  Edit1.CopyToClipboard();

  exit;
 end;

 oldx := Edit1.SelStart;
  
 Edit1.SelectAll();
 Edit1.CopyToClipboard();
 Edit1.SelLength := 0;
 Edit1.SelStart := oldx;
end;


Это сообщение отредактировал(а) mr.Anderson - 5.6.2008, 14:09


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
THandle
Дата 5.6.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Народ, а зачем так извращаться со всеми этими выделениями?

Код

uses Clipbrd;

{...}

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TClipboard.Create do
    begin
      SetTextBuf(PChar(Edit1.Text));
      Free;
    end;
end;


Это сообщение отредактировал(а) THandle - 5.6.2008, 14:20
PM   Вверх
uranpro
Дата 5.6.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



ТОЧНО !!! я хотел его использовать, но забыл как str в pchar переводить (( PChar

у меняесть 5 полей, которые я постоянно изменяю, и одно, которое отображает нужную инфу(readonly), не удобно, когда текст в информационном поле выделяется


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
mr.Anderson
Дата 5.6.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



THandle, ага, так лучше, я что-то и забыл про Clipbrd модуль... smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0909 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.