المشاركات : 10
المواضيع 5
:
: 0
الإنتساب : Feb 2011
بسم الله الرحمن الرحيم
كيف اجعل الفورم في المقدمة البرامج يعني يضهر وانا اعمل على برامجي واناالأن انتهيت منه بس احاول ايجاد طريقة اجعله في مقدمة البرامج لكي اشاهد برنامجي وانا اتصفح على الأنترنت
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
السلام عليكم
كود : FormStyle := fsStayOnTop;
أو API ابحث في المنتدى
بالتوفيق.
المشاركات : 10
المواضيع 5
:
: 0
الإنتساب : Feb 2011
طريقة جميله وجزاك الله الف خير
لكن للأسف ماتلبي الغرض
هل توجد طريقة افضل واقوى فاعليه؟؟
المشاركات : 10
المواضيع 5
:
: 0
الإنتساب : Feb 2011
طيب انا لدي كود فيجوال بيسك 6 وهو يجعل الفورم في المقدمة
لكن هل اقدر احول الكود واخليه يشتغل على الدلفي 7 ؟؟؟؟
المشاركات : 563
المواضيع 28
:
: 0
الإنتساب : Dec 2008
السلام عليكم
1- إقتباس :'لكن للأسف ماتلبي الغرض'
, من أي ناحييه وضح ؟
2- ' أو API ابحث في المنتدى' , SetWindowPos
كود : SetWindowPos(Handle, HWND_TOPMOST // HWND_TOP
, Form1.Top
, Form1.Left
, Form1.Width
, Form1.Height,0);
بالتوفيق,,
المشاركات : 10
المواضيع 5
:
: 0
الإنتساب : Feb 2011
شكرا اخي على الأكواد لكن الفورم لايضهر في المقدمة
الأن إذا فتحت انا إدارة المهام تضهر في الأمام و الفورم في الخلف وهنا تكمن المشكلة
وفيه بعض البرنامج تظهر بالمقدمة
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
طالع هذا المثال:
كود : http://www.swissdelphicenter.ch/torry/showcode.php?id=261
function ForceForegroundWindow(hwnd: THandle): Boolean;
const
SPI_GETFOREGROUNDLOCKTIMEOUT = $2000;
SPI_SETFOREGROUNDLOCKTIMEOUT = $2001;
var
ForegroundThreadID: DWORD;
ThisThreadID: DWORD;
timeout: DWORD;
begin
if IsIconic(hwnd) then ShowWindow(hwnd, SW_RESTORE);
if GetForegroundWindow = hwnd then Result := True
else
begin
// Windows 98/2000 doesn't want to foreground a window when some other
// window has keyboard focus
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
// Code from Karl E. Peterson, www.mvps.org/vb/sample.htm
// Converted to Delphi by Ray Lischner
// Published in The Delphi Magazine 55, page 16
Result := False;
ForegroundThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil);
ThisThreadID := GetWindowThreadPRocessId(hwnd, nil);
if AttachThreadInput(ThisThreadID, ForegroundThreadID, True) then
begin
BringWindowToTop(hwnd); // IE 5.5 related hack
SetForegroundWindow(hwnd);
AttachThreadInput(ThisThreadID, ForegroundThreadID, False);
Result := (GetForegroundWindow = hwnd);
end;
if not Result then
begin
// Code by Daniel P. Stasinski
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0),
SPIF_SENDCHANGE);
BringWindowToTop(hwnd); // IE 5.5 related hack
SetForegroundWindow(hWnd);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(timeout), SPIF_SENDCHANGE);
end;
end
else
begin
BringWindowToTop(hwnd); // IE 5.5 related hack
SetForegroundWindow(hwnd);
end;
Result := (GetForegroundWindow = hwnd);
end;
end; { ForceForegroundWindow }
// 2. Way:
//**********************************************
procedure ForceForegroundWindow(hwnd: THandle);
// (W) 2001 Daniel Rolf
// http://www.finecode.de
// rolf@finecode.de
var
hlp: TForm;
begin
hlp := TForm.Create(nil);
try
hlp.BorderStyle := bsNone;
hlp.SetBounds(0, 0, 1, 1);
hlp.FormStyle := fsStayOnTop;
hlp.Show;
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
SetForegroundWindow(hwnd);
finally
hlp.Free;
end;
end;
// 3. Way:
//**********************************************
// by Thomas Stutz
{
As far as you know the SetForegroundWindow function on Windows 98/2000 can
not force a window to the foreground while the user is working with another window.
Instead, SetForegroundWindow will activate the window and call the FlashWindowEx
function to notify the user. However in some kind of applications it is necessary
to make another window active and put the thread that created this window into the
foreground and of course, you can do it using one more undocumented function from
the USER32.DLL.
void SwitchToThisWindow (HWND hWnd, // Handle to the window that should be activated
BOOL bRestore // Restore the window if it is minimized
);
}
procedure SwitchToThisWindow(h1: hWnd; x: bool); stdcall;
external user32 Name 'SwitchToThisWindow';
{x = false: Size unchanged, x = true: normal size}
procedure TForm1.Button2Click(Sender: TObject);
begin
SwitchToThisWindow(FindWindow('notepad', nil), True);
end;
|