![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Номер EM_GETSELTEXT [D7, Win2k, WinXP]
ANB © (2005-04-21 13:55:00)Подскажите, какой номер у сообщения EM_GETSELTEXT, а то у меня в Windows.pas его нету. Или какой модуль заюзать по такому случаю.
ANB (2005-04-22 10:59:00) [1]
> Можно. Только кода писать надо побольше.
ну, строк на 5-10. Зато универсально и никому не мешает.
У буфера есть еще минус. Моя прога может работать в фоновом режиме, и, пока она какое нибудь приложение тестит, тестер может пока в ворде чего нибудь писать и буфер юзать. И тут либо мы ему буфер за...гадим, либо он нам может умудриться.
alpet (2005-04-22 10:25:00) [2]ANB © (22.04.05 09:21) [12]
> см. историю вопроса - не работает.
Мда. Понятно - WM_USER + ххх обычным контролам such as Edit должны быть по барабану. Для multiline Edit контрола могу также предложить EM_GETHANDLE, правда она дает лищь дескриптор блока памяти и в другом процессе извлекать его содержимое будет сложнее.
mgcr (2005-04-22 10:24:00) [3]ANB © (21.04.05 17:53) [10]
> Не оригинально
Я в очереди в патентное бюро не стою.
> А если буфер чем то полезным для юзера заполнен ?
Тогда твою программу не надо запускать.
> Вообще то можно вытащить параметры выделения и самому разобрать
> строку . . .
Можно. Только кода писать надо побольше.
ANB (2005-04-22 09:21:00) [4]
> alpet © (21.04.05 18:17) [11]
см. историю вопроса - не работает.
alpet (2005-04-21 18:17:00) [5]>Интересно, как народ только выделенный текст получает ?
EM_GETSELTEXT ??
ANB (2005-04-21 17:53:00) [6]Не оригинально. А если буфер чем то полезным для юзера заполнен ? Вообще то можно вытащить параметры выделения и самому разобрать строку . . .
mgcr (2005-04-21 17:31:00) [7]
> Интересно, как народ только выделенный текст получает ?
>
Наверное по-простому - WM_COPY и из Clipboard :)
ANB (2005-04-21 15:35:00) [8]
> А это смотря чего ты хочешь получить.
- читай внимательно :
> Вот так работает :
Получить нужно было текст эдита. Интересно, как народ только выделенный текст получает ? Мне то это не нужно, а все таки ?
mgcr (2005-04-21 15:30:00) [9]
> А что взамен ?
А это смотря чего ты хочешь получить.
ANB (2005-04-21 15:23:00) [10]Уфф, уж мне эти мелкософтовые. Вот так работает :
var sText : String;
. . .
Size := SendMessage(hControl, EM_LINELENGTH, 0, 0);
SetLength(sText, Size);
TextLen := @sText[1];
TextLen^ := Size;
Size := SendMessage(hControl, EM_GETLINE, 0, LongWord(PChar(sText)));
SetLength(sText, Size);
ANB (2005-04-21 15:04:00) [11]
> mgcr © (21.04.05 14:54) [4]
да читал я это. Хотелось попробовать. А что взамен ?
Пытаюсь заюзать EM_GETLINE, но у него хитрое описание буфера :
lpch -
Value of lParam. Points to the buffer that receives a copy of the line. The first word of the buffer specifies the maximum number of characters that can be copied to the buffer.
Пробую подсунуть адрес String, он примерно так и устроен, но ни фига не работает.
Size := SendMessage(hControl, EM_LINELENGTH, 0, 0);
SetLength(sText, Size);
Size := SendMessage(hControl, EM_GETLINE, 0, LongWord(@sText));
mgcr (2005-04-21 14:54:00) [12]"The EM_GETSELTEXT message retrieves the currently selected text in a rich editcontrol."
Наверное, поэтому ? Я угадал ?
ANB (2005-04-21 14:45:00) [13]Спасибо. Я, правда, уже сам нашел. Только вопрос - а почему он для эдитов не отрабатывает ? EM_REPLACESEL работает же.
Юрий Зотов (2005-04-21 14:19:00) [14]В RichEdit.pas:
EM_GETSELTEXT = WM_USER + 62;
На будущее - в Delphi есть поиск строки в файлах.
ANB (2005-04-21 14:04:00) [15]И в Messages тоже. :(