Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

PasteFromClipboard [D6, WinXP]


Владимир ©   (2004-07-11 23:09:00) 

имеестя процедура, которая отвечает за вставку текста в RichEdit
...
RichEdit.PasteFromClipboard;
...
есть так же FindDialog, хотелось бы, чтобы таже самая процедура позволяла вставлять текст из буфера обмена в FindDialog.FindText.
Подскажите как это сделать.
Заранее спасибо!


Владимир   (2004-07-14 12:41:00) [1]


> И все-таки, при нажатии Стрл+С будет обработка [8] или нет
> ?

немного не понял вопрос

> Да вообще бредятина какаято. Все нормально работает:
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
>  FindDialog1.FindText := Clipboard.AsText;
>  FindDialog1.Execute;
> end;
да, так работает, но фактически у меня ситуация выглядит по-другому:

сначала делается FindDialog.Execute; //Просто открываем окно диалога, и только потом надо сделать FindDialog.Findtext := Clipboard.AsText; причем отдельной процедурой, отвечающей за Paste


NAlexey   (2004-07-14 09:23:00) [2]

Да вообще бредятина какаято. Все нормально работает:

procedure TForm1.Button1Click(Sender: TObject);
begin
 FindDialog1.FindText := Clipboard.AsText;
 FindDialog1.Execute;
end;


KilkennyCat   (2004-07-14 08:55:00) [3]

честно говоря, все равно не понятно.

может, стоит несколько подробней написать?
И все-таки, при нажатии Стрл+С будет обработка [8] или нет ?


Владимир   (2004-07-14 07:33:00) [4]


procedure TForm1.RichEditCopyText
...
RichEdit.CopyToClipBoard;
...


KilkennyCat   (2004-07-13 21:27:00) [5]

А где обрабатывается выше приведенный код?
Скорее всего, он просто не прокатывает при действии 3.


Владимир   (2004-07-13 19:02:00) [6]

xtcчестно оря, у меня большие сомнения, что в коде ошибка, однако смотрите:
if RichEdit.Focused then
      RichEditEdit.PasteFromClipboard
      else begin
ClipBoard.Open;
try
 MyHandle := Clipboard.GetAsHandle(CF_TEXT);
 TextPtr := GlobalLock(MyHandle);
 MyString := StrPas(TextPtr);
 GlobalUnlock(MyHandle);
finally
 Clipboard.Close;
 FindDialog.FindText := MyString;
end;
процедура вызывается при нажатии Ctrl+V и связана с пунктом меню "Вставить". При нажатии Cntrl+F появляется многострадальный FindDialog.
Последовательность моих действий, при которых не работает:
1. Вводим текст в RichEdit
2. Выделяем текст
3. Копируем в буфер обмена (Ctrl+C)
4. Открываем FindDialog (Ctrl+F)
5. Вставляем текст из буфера обмена (Ctrl+V)
6. ничего не видим
7. Закрываем FindDialog
8. Открываем FindDialog (Ctrl+F)
9. И, о чудо, нашему вниманию предстает текст


NAlexey   (2004-07-13 11:01:00) [7]

>Владимир   (13.07.04 10:54) [6]
>Если не верите, что содержание FindDialog1.FindText становится видимым тольк после повторного запуска
Неа, не верю.

>то можете сами попробовать
А зачем мне пробывать, не я же вопрос задаю. Меня интересует готовый пример, я бы его посмотрел, и если он ошибочный сказал бы где.


Владимир   (2004-07-13 10:54:00) [8]


> Где доказательства?

доказательства чего? Если не верите, что содержание FindDialog1.FindText становится видимым тольк после повторного запуска, то можете сами попробовать. Хочу отметить что подобная ситуация с текстовыми полями характерна для всех компонентов вкладки Dialogs


NAlexey   (2004-07-13 08:48:00) [9]

>Владимир   (13.07.04 08:46) [4]
Где доказательства?


Владимир   (2004-07-13 08:46:00) [10]

это да, но мне надо немного другое
у меня получается сначала FindDialog1.Execute
а потом через Ctrl+V необходимо в FindDialog1.FindText вставить текст из Clipboard. Так вот, он фактически вставляется и FindDialog1.FindText получается ему равен, но визуально он появляется только после повторного запуска FindDialog1


KilkennyCat   (2004-07-12 23:42:00) [11]


> Владимир   (12.07.04 08:25) [2]


не совсем понял, причем здесь создание?

finddialog1.FindText := 'наш текст';
if finddialog1.execute then....


это всегда работает.


Владимир   (2004-07-12 08:25:00) [12]

спасибо.
однако возникла одна проблема:
текст в FindDialog.FindText появляется только после повторного создания FindDialog. не подскажете, что с этим можно сделать?


KilkennyCat   (2004-07-12 00:14:00) [13]

Rich Text Format = $C051

это пригодится при использовании TClipboard для получения rtf.
Возможно, потребуется еще CF_TEXT

Использование TClipboard описано в справке (Open, Close, GetAsHandle Example).


Наверх

Титульная страница Поиск, карта сайта Написать письмо