Главная страница
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.033 c
1-1089709192
han
2004-07-13 12:59
2004.07.25
Не находит Delphi-йского модуля!!!


14-1088723413
Defen
2004-07-02 03:10
2004.07.25
глубиные ошибки


8-1083840133
lexx_av
2004-05-06 14:42
2004.07.25
Построение графика с помощью tchart


1-1089435746
Глеб
2004-07-10 09:02
2004.07.25
Программное добавление в TMainMenu элементов


4-1086759480
RoadStar
2004-06-09 09:38
2004.07.25
fsStayOnTop