Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.056 c
1-1089276204
Sandman25
2004-07-08 12:43
2004.07.25
Флаги или переопределение событий?


3-1088335340
Vemer
2004-06-27 15:22
2004.07.25
Подгонка высоты ячеек в QReport...


3-1088503541
SergeyV
2004-06-29 14:05
2004.07.25
ADOConnection теряет соединение


1-1089698906
NJoe
2004-07-13 10:08
2004.07.25
Определение текстовых файлов


1-1089725392
Newuser
2004-07-13 17:29
2004.07.25
Разрешение экрана





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский