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

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

Очистка окна средствами WinAPI [D7, XP]


Новичек ©   (2009-01-31 15:18:00) 

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


clickmaker   (2009-02-02 11:16:00) [1]

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


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


> Джо


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

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


Джо   (2009-01-31 16:15:00) [3]


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

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

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


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


> Джо

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


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

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


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


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

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


Джо   (2009-01-31 16:01:00) [7]


> Да и описание сообщения какое-то туманное: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;


palva   (2009-01-31 15:49:00) [8]

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


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

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


Джо   (2009-01-31 15:40:00) [10]

SendMessage (Handle, WM_CLEAR, 0, 0)


Наверх

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