Главная страница
    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.47 MB
Время: 0.034 c
1-1089464146
ko
2004-07-10 16:55
2004.07.25
Текстовое поле как массив


1-1089206241
1008
2004-07-07 17:17
2004.07.25
RxRichEdit (JvxRichEdit) как программно вставить картинку?


8-1084035716
$tranger
2004-05-08 21:01
2004.07.25
Меню как в OFFICE XP


6-1085736921
ГудБой
2004-05-28 13:35
2004.07.25
Доскажите компонент, для реализации шлюзя (прокси,фаервола)


14-1089036311
Igorek
2004-07-05 18:05
2004.07.25
begin/end в начале/конце процедуры необязательные





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский