Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
zeos   (2002-06-08 17:15) [0]

Только не говорите, что в инспекторе. Мне нужно организовать переключение (обычное состояние/поверх всех окон), чтобы форма при этом не перерисовывалась.


 
Song   (2002-06-08 17:24) [1]

Вы поймите что переключение снизу на верх по Z буферу приведёт к тому, что изображение должно перерисоваться полночтью/частично, иначе на окне будут куски других окон, которые раньше его закрывали. Я советую Вам книжки умные почитать, чтобы такие вопросы отпадали сами собой.
Кроме fsStayOnTop окно можно вытолкнуть наверх через SetWindowPos() как Вам уже посоветовал MBo.


 
zeos   (2002-06-08 17:29) [2]

Почему же в WinZip"e перерисовки нет!?


 
Song   (2002-06-08 18:21) [3]

Прорисовка есть всегда. В винзипе не смотрел, но видимо старое состояние просто перерисовывается принудительно.


 
MaximatorVeter   (2002-06-08 18:41) [4]


> zeos


> Song

Стоит заметить, что в этом случае форма вся видна (смена formStyle происходит по CheckBox на форме). Перерисовывать ее как бы и не надо. Но ведь она при этом так заманчиво подмигивает.

> zeos

Разве нельзя ей этого простить или у вас есть веские причины ...


 
zeos   (2002-06-08 19:52) [5]

>MaximatorVeter ©

Разве нельзя ей этого простить или у вас есть веские причины ...

Мне это очень не ндравиться.


 
Walker   (2002-06-09 03:24) [6]

где-то в старых своих исходниках я вот что отыскал:


procedure TFrm_Options.cb_AlwaysOnTopClick(Sender: TObject);
var
uFlags: Cardinal;
hWndInsertAfter: HWND;
begin
if cb_AlwaysOnTop.Checked
then uFlags:=SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE
else uFlags:=SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE;{}

if cb_AlwaysOnTop.Checked
then hWndInsertAfter:=HWND_TOPMOST
else hWndInsertAfter:=HWND_NOTOPMOST;

SetWindowPos(Application.Handle,hWndInsertAfter,
0, 0, 0, 0, uFlags);
end;


причём кроме этого пришлось писать собственные процедуры сворачивания окна и восстановления из значка


 
SPeller   (2002-06-09 06:38) [7]

if cb_AlwaysOnTop.Checked
then uFlags:=SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE
else uFlags:=SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE;

Весьма интересная конструкция...:)))))


 
sevylor   (2002-06-09 20:07) [8]

procedure TForm1.CheckBox4Click(Sender: TObject);
begin
if CheckBox4.Checked then
SetWindowPos(Handle, hwnd_TopMost, 0, 0, 0, 0, swp_NoMove + swp_NoSize)
else
SetWindowPos(Handle, hwnd_NoTopMost, 0, 0, 0, 0, swp_NoMove + swp_NoSize);
end;

Что интересно, то же самое описано в Forms.pas, но действительно, если указывать Form1.Style=fsOnTop - то перерисовка, а если писать эти строки в лоб, то нет! Удачи.


 
Novarm   (2002-06-10 00:08) [9]

А не проще-ли:
Form1.FormStyle:=fsStayOnTop;
Form1.FormStyle:=fsNormal;

Лично я так всегда делал


 
Walker   (2002-06-10 01:34) [10]

to SPeller ©
ты прав, конструкция очень интересная :)
(я сам заметил только тогда, когда уже отослал сообщение)

а почему я так делал - толком не помню... для отладки наверное



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

Форум: "Основная";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
7-65265
Almaz
2002-03-01 23:26
2002.06.20
Два модема


1-65158
Kr_Alex
2002-06-06 21:53
2002.06.20
Координаты иконок


3-64910
Alik Chu
2002-05-25 10:47
2002.06.20
MultiSelect в bgrid е


4-65289
Ильясов Вадим
2002-04-21 19:37
2002.06.20
Работа с ОЗУ


3-64899
g maxim
2002-05-29 13:45
2002.06.20
Вопрос по PARADOX





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский