Форум: "Основная";
Текущий архив: 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
процедура вызывается при нажатии Ctrl+V и связана с пунктом меню "Вставить". При нажатии Cntrl+F появляется многострадальный FindDialog.
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;
Последовательность моих действий, при которых не работает:
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.47 MB
Время: 0.032 c