Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Как поместить форму программы поверх всех?   Найти похожие ветки 

 
leonidus ©   (2005-08-29 15:19) [0]

Полазил по инету, нашел вот такой метод - в таймере вызываем функции:

SetForegroundWindow(Form1.Handle);
SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);

Всебы ничего, но во-первых таймер это по моему очень грубый метод, во-вторых в данном случае при выборе другово окна на экране, мое окно прежде чем стать поверх должно моргнуть один раз, это и понятно - окно принудительно прорисовывается, но и это ничего, проблема в том, что теперь невозможно работать с ComboBox`ом, т.е. его выпадающий список это видимо тоже окно а окно главной формы хочет быть поверх него.

Самое интересное в том, что например окно Lingvo можно сделать как мне и нужно, т.е. на самом деле StaOnTop, и при этом все ComboBox`ы в нем будут работать, значит можно так сделать. Подскажите пожалуйста решение.


 
tesseract ©   (2005-08-29 15:31) [1]

Form1.FormStyle=fsStayONTop;


 
begin...end ©   (2005-08-29 15:37) [2]

> leonidus ©   (29.08.05 15:19)

А может быть, вместо таймера WM_WINDOWPOSCHANGING отлавливать?


 
leonidus ©   (2005-08-29 15:39) [3]

>tesseract не ну это слишком просто:)
на самом деле по моему свойство FormStyle предназначено только для указания стиля формам внутри программы, кто будет выше других, а мне нужно что бы мое окно было поверх всех других окон, т.е. сверху окна любого приложения.


 
leonidus ©   (2005-08-29 15:46) [4]

>begin...end а можно litle примерчик?


 
begin...end ©   (2005-08-29 15:51) [5]

> leonidus ©   (29.08.05 15:46) [4]

Примерчика нету. Но смысл простой -- обрабатывать сообщение, устанавливать PWindowPos(Message.LParam).hwndInsertAfter = HWND_TOPMOST и возвращать нолик. Однако я не уверен, что это поможет.


 
Antonn ©   (2005-08-29 17:44) [6]

Литл примерчик:

protected
   procedure WMWINDOWPOSCHANGING(var Msg: TWMWINDOWPOSCHANGING); message WM_WINDOWPOSCHANGING;

procedure TMainForm.WMWINDOWPOSCHANGING(var Msg: TWMWINDOWPOSCHANGING);
begin
 SetWindowPos(Handle,HWND_TOPmost,Left,Top,Width,Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE );  
end;


 
leonidus ©   (2005-08-29 19:11) [7]

Спасибо большое, работает.


 
psa247 ©   (2005-08-31 14:07) [8]

LockSetForegroundWindow Function
---------------------------------------------------------------
The foreground process can call the LockSetForegroundWindow function to disable calls to the SetForegroundWindow function.



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

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

Наверх




Память: 0.46 MB
Время: 0.039 c
8-1118919925
PiOnEr
2005-06-16 15:05
2005.11.06
Траблы с JPEG... Хелп!


3-1127802211
jeka_t
2005-09-27 10:23
2005.11.06
Как настроить DBGrid при ADOQuery.CursorType = ctDynamic?


2-1128957615
Gall
2005-10-10 19:20
2005.11.06
Получить список папок


14-1129580754
Kolan
2005-10-18 00:25
2005.11.06
Что-то всем на ночь глядя иконок справа от темы захотелось..


10-1106209942
Saska
2005-01-20 11:32
2005.11.06
GetActiveOleObject





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский