![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обновить TEdit [D6, WinXP]
leonidus © (2005-09-05 09:37:00)У меня такая проблема. Сделал форму "повех всех" путем перехвата WM_WINDOWPOSCHANGING:
procedure TForm2.WMWINDOWPOSCHANGING(var Msg: TWMWINDOWPOSCHANGING);
begin
SetWindowPos(form2.Handle,HWND_TOPmost,form2.Left,form2.Top,form2.Width,form2.Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE );
end;
Перехватывая WM_ACTIVATE хочу обновлять все контролы:
procedure TForm2.WMACTIVATE(var Msg: TWMACTIVATE);
begin
form2.Refresh;
ListView1.Refresh;
FindWord.Refresh; //TEdit
end;
На форме помимо других контролов лежит еще и TEdit (FindWord), так вот если поверх мой формы положить другую форму тоже в режиме "поверх всех" например Диспетчер задач, а потом по Alt+Tab перключиться на мою форму, то все контролы кроме TEdit`а перерисовываются, а на TEdit`е остаются "куски" лежащей поверх формы, причем стоит навести на него мышью как он корректно обновляется. Как мне его самому обновить без наведения мышью?
IceBeerg (2005-09-05 18:16:00) [1]
SendMessage(tform2.Handle,WM_PAINT,FindWord.Handle,0);?
KosilkA (2005-09-05 15:04:00) [2]может InvalidateRect ?
leonidus (2005-09-05 14:50:00) [3]Нет, не помогает этот блок ставил так:
procedure TForm2.WMACTIVATE(var Msg: TWMACTIVATE);
begin
form2.Refresh;
ListView1.Refresh;
FindWord.Update;
SendMessage(FindWord.Handle,WM_PAINT,0,0);
UpdateWindow(FindWord.Handle);
end;
procedure tform2.WMACTIVATEAPP(var Msg: TWMACTIVATEAPP);
begin
form2.Refresh;
FindWord.Update;
SendMessage(FindWord.Handle,WM_PAINT,0,0);
UpdateWindow(FindWord.Handle);
end;
всеравно не обновляется контрол. Мне только не понятно почему все контролы нормально орисовываются и TComboBox и TListView и TButton`ы а именно TEdit не хочет...
Кстати если чужим окном по моему провести то когда мое полность покажется все контролы прорисованы, а вот если мое окно лежит под чужим и немного выглядывает, а я по нему щелкаю, то оно вылазиет вперед но TEdit не прорисован...
IceBeerg (2005-09-05 13:25:00) [4]Попробуй что либо из:
Edit1.Update
SendMessage(Edit1.Handle,WM_PAINT...
UpdateWindow(...