Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

PasteFromClipboard   Найти похожие ветки 

 
Владимир   (2004-07-11 23:09) [0]

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


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

Rich Text Format = $C051

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

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


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

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


 
KilkennyCat ©   (2004-07-12 23:42) [3]


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


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

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


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


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

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


 
NAlexey ©   (2004-07-13 08:48) [5]

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


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


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

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


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

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

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


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

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. И, о чудо, нашему вниманию предстает текст


 
KilkennyCat ©   (2004-07-13 21:27) [9]

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


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


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


 
KilkennyCat ©   (2004-07-14 08:55) [11]

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

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


 
NAlexey ©   (2004-07-14 09:23) [12]

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

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


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


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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
9-1081937690
V@LER@N
2004-04-14 14:14
2004.07.25
АльфаБленд


1-1089625348
pavel_pavel
2004-07-12 13:42
2004.07.25
Random


9-1080911413
Cash
2004-04-02 17:10
2004.07.25
Collision на каждом кадре анимации


1-1089757628
Lego
2004-07-14 02:27
2004.07.25
ListBox


1-1089358038
ORMADA
2004-07-09 11:27
2004.07.25
Mask