Вниз
Скачать: CL | DM;

Очистка окна средствами WinAPI   Найти похожие ветки 

 
Новичек   (2009-01-31 15:18) [0]

Существует ли возможность очистить поле ввода средствами WinAPI?


 
Джо ©   (2009-01-31 15:40) [1]

SendMessage (Handle, WM_CLEAR, 0, 0)


 
Новичек   (2009-01-31 15:46) [2]

Пробовал, не работает.
Да и описание сообщения какое-то туманное:
wm_Clear: Удаляет текущий выбоp, сделанный в окне (MSDN).


 
palva ©   (2009-01-31 15:49) [3]

Можно послать окну сообщение WM_SETTEXT с пустой строкой


 
Джо ©   (2009-01-31 16:01) [4]


> Да и описание сообщения какое-то туманное:wm_Clear: Удаляет
> текущий выбоp, сделанный в окне (MSDN).

An application sends a WM_CLEAR message to an edit control or combo box to delete (clear) the current selection, if any, from the edit control. (c) MSDN


> Пробовал, не работает.

Плохо пробовали.
procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.SelectAll;
 SendMessage (Edit1.Handle, WM_CLEAR, 0, 0);
end;


 
Джо ©   (2009-01-31 16:04) [5]

Если угодно «на чиста API», то SelectAll меняем на   SendMessage(Handle, EM_SETSEL, 0, -1);


 
Новичек   (2009-01-31 16:04) [6]


> Можно послать окну сообщение WM_SETTEXT с пустой строкой

Опять не хочет: упорно добавляет переданую строку к уже существующей без всякой предварительной очистки :(
Вот код:
  StrBase := "";
   SendMessage(hInput, WM_SETTEXT, 0, Integer(StrBase));
   StrBase := "Test";
   SendMessage(hInput, WM_SETTEXT, 0, Integer(StrBase));


 
Новичек   (2009-01-31 16:07) [7]


> Джо

А Edit находится в другом приложении. Хэндл-то я нашел, а очистить никак не могу :(


 
Джо ©   (2009-01-31 16:15) [8]


> Новичек   (31.01.09 16:07) [7]
> > ДжоА Edit находится в другом приложении. Хэндл-то я нашел,
>  а очистить никак не могу :(

Значит, у вас ошибка в программе.
Код

 SendMessage(Handle, EM_SETSEL, 0, -1);
 SendMessage (Handle, WM_CLEAR, 0, 0);
прекрасно очищает Edit в «другом приложении».


 
Новичек   (2009-01-31 16:24) [9]


> Джо


> Значит, у вас ошибка в программе.

Да я и не спорю: конечно, ошибка может быть.
Но не дает покоя одна деталь - приведенный мной код работает ведь, текст-то появляется...
Голову уже сломал :(


 
clickmaker ©   (2009-02-02 11:16) [10]

StrBase := "";
SendMessage(hInput, WM_SETTEXT, 0, Integer(PChar(StrBase))); ?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
1-1208419242
312kbps
2008-04-17 12:00
2009.03.29
Событие смена активного окна в винде


15-1232174993
Tirael
2009-01-17 09:49
2009.03.29
двухкомпьютерный компьютер


15-1232696519
desc
2009-01-23 10:41
2009.03.29
Склеить видео файлы


11-1189525265
matroskin66
2007-09-11 19:41
2009.03.29
корректное завершение


15-1232942877
Дмитрий С
2009-01-26 07:07
2009.03.29
Номер версии в InnoSetup




   Наверх