Главная страница
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.5 MB
Время: 0.01 c
1-70389
Arch-vile
2003-05-10 22:39
2003.05.22
TList и свойства его Item ов


14-70508
Stexen
2003-05-04 21:38
2003.05.22
Почта, не в тему но надо


1-70370
Adil
2003-05-10 05:45
2003.05.22
Find & Replace в MEMO


14-70454
Mirva
2003-05-03 06:03
2003.05.22
Подскажите алгоритм


11-70193
Alexei Dragoner
2002-08-07 12:22
2003.05.22
Вот и Delphi 7.... Какие планы?