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

Вниз

Как дочернюю форму показать поверх остальных дочерних форм   Найти похожие ветки 

 
Cranium ©   (2003-05-12 19:02) [0]

Как дочернюю форму показать поверх остальных дочерних форм...
Вариант:
Form1.ShowModal;
Не предлагать так дочерняя форма модально не показывается, да и мне нужно чтоб был виден заголовок....


 
DVM ©   (2003-05-12 19:28) [1]

Может так подойдет:

function ForceForegroundWindow(hWnd: THandle): Boolean;
const
SPI_GETFOREGROUNDLOCKTIMEOUT = $2000;
SPI_SETFOREGROUNDLOCKTIMEOUT = $2001;
var
OsVerInfo: TOSVersionInfo;
Win32MajorVersion: Integer;
Win32MinorVersion: Integer;
Win32Platform: Integer;
ForegroundThreadID: DWORD;
ThisThreadID: DWORD;
Timeout: DWORD;
begin
OsVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(osVerInfo);
Win32MajorVersion := OsVerInfo.dwMajorVersion;
Win32MinorVersion := OsVerInfo.dwMinorVersion;
Win32Platform := OsVerInfo.dwPlatformId;
if IsIconic(hWnd) then ShowWindow(hWnd, SW_RESTORE);
if GetForegroundWindow = hWnd then Result := True
else
begin
if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion > 4)) or
((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and ((Win32MajorVersion > 4)
or ((Win32MajorVersion = 4) and (Win32MinorVersion > 0)))) then
begin
Result := False;
ForegroundThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil);
ThisThreadID := GetWindowThreadPRocessId(hWnd, nil);
if AttachThreadInput(ThisThreadID, ForegroundThreadID, True) then
begin
BringWindowToTop(hWnd);
SetForegroundWindow(hWnd);
AttachThreadInput(ThisThreadID, ForegroundThreadID, False);
Result := (GetForegroundWindow = hWnd);
end;
if not Result then
begin
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @Timeout, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0),
SPIF_SENDCHANGE);
BringWindowToTop(hWnd);
SetForegroundWindow(hWnd);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(Timeout),
SPIF_SENDCHANGE);
end;
end
else
begin
BringWindowToTop(hWnd);
SetForegroundWindow(hWnd);
end;
Result := (GetForegroundWindow = hWnd);
end;
end; // End of function ForceForegroundWindow


 
Юрий Зотов ©   (2003-05-12 19:52) [2]

А просто BringToFront не проходит?


 
Cranium ©   (2003-05-12 20:00) [3]


> А просто BringToFront не проходит?

Пробовал не помогает... Я же про MIDI толкую..


 
Zacho ©   (2003-05-12 20:37) [4]


> Cranium © (12.05.03 20:00)

Странно.. У меня отлично работает BringToFront. Естественно, MDI. Правда, у меня D6, неужто в семерке что-то круто переделали ?


 
Юрий Зотов ©   (2003-05-12 21:00) [5]

> Cranium © (12.05.03 20:00)

А как Вы вызывате BringToFront? Не у главной ли формы?


 
Cranium ©   (2003-05-12 21:00) [6]

Ты не совсем меня понял (Я не корректно выразился)...
Мне нужно еще чтоб фокус форма не теряла вплодь до закрытия...


 
Zacho ©   (2003-05-12 21:15) [7]


> Cranium © (12.05.03 21:00)

Ну а кто мешает в MDI использовать модальные формы ? Или нужна не модальная, но что-то типа AlwaysOnTop ? Извини за резкость, но у меня такое приложение сразу же окажется в корзине. Ибо жутко неудобно. И не вижу в этом практического смысла.


 
Cranium ©   (2003-05-12 21:40) [8]

Возможно! Но если нужно ввести важные параметры... В моем случае учтановить рабочий курс валюты... И как мне принудить его ввести...


 
Zacho ©   (2003-05-12 22:03) [9]


> Cranium © (12.05.03 21:40)

Ну а чем модальная форма не подходит ?


 
Cranium ©   (2003-05-12 22:20) [10]

Ну вомервых MDIChild - не может быть модальной...
Во вторых мне нужно сохранить заголовок формы...


 
Zacho ©   (2003-05-12 22:32) [11]


> Cranium © (12.05.03 22:20)

MDIChild - не может. Но никто не мешает в MDI-приложении использовать модальные формы.
У меня в MDI-приложении есть модальные формы.
Более того, есть формы, которые могут быть модальными (тогда, у них естественно FormStyle:=fsNormal), а могут быть не модальными (MDIChild). И причем здесь заголовок ?
Или ты чего-то не понимаешь, или я тебя понять не могу.


 
Юрий Зотов ©   (2003-05-12 22:40) [12]

> Cranium © (12.05.03 22:20)
> Ну вомервых MDIChild - не может быть модальной...

Ну так и не делайте ее MDIChild, а делайте Normal. И показывайте модально, кто мешает? А как же в MDI-программах всякие там диалоги работают? Вот так и работают. И никаких проблем.




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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
3-70131
xxxCrazyManxxx
2003-04-30 17:26
2003.05.22
Как в делфи к переменной присвоить значение процедуры


1-70221
Гость
2003-05-11 07:29
2003.05.22
Функции


1-70293
Knight
2003-05-12 00:21
2003.05.22
Прокрутка ScrollBox а с невидимыми Scroll ами.


3-70136
AlexGof
2003-04-30 12:35
2003.05.22
Отсоединенный набор в MS SQL


14-70493
ghg
2003-05-04 12:07
2003.05.22
скриптмейкер для создания дистрибов