Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Номер 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 тоже. :(


Наверх

Титульная страница Поиск, карта сайта Написать письмо