Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: 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 вся ветка

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
1-1208371037
_Z_
2008-04-16 22:37
2009.03.29
как работать с фремом, созданным в dll


3-1215183670
BBCHa
2008-07-04 19:01
2009.03.29
TADOQuery и BLOB-поле


3-1216374027
123456711
2008-07-18 13:40
2009.03.29
получить Insert Id после запроса INSERT...


15-1232382864
Добежал
2009-01-19 19:34
2009.03.29
Подавления окна отладчика "Debugger Exception Notification"


2-1233936849
CodeMaster
2009-02-06 19:14
2009.03.29
не могу перести на Delphi