線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1466
推到 Plurk!
推到 Facebook!

請教當timer到達時間時,要秀出另一個原本沒focus的form??

尚未結案
mini88888
一般會員


發表:6
回覆:4
積分:2
註冊:2005-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-11 13:30:48 IP:59.120.xxx.xxx 未訂閱
想請教當timer到達時間時,要秀出另一個原本沒focus的form,因我試過, show,可是沒有反應,不知該如何解決??可以幫我解答嗎?謝謝!!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-11 15:25:52 IP:202.62.xxx.xxx 未訂閱
您好﹗    在Timer元件的OnTimer事件中﹕
begin
  Form2.Show;
  Form2.SendToBack;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
mini88888
一般會員


發表:6
回覆:4
積分:2
註冊:2005-06-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-11 15:53:32 IP:59.120.xxx.xxx 未訂閱
不好意思...,我的意思是我們會將form2縮小,但是timer時間到時..,會在自動彈出,剛的方法 form2.show; form2.sendtoback; 無法做到..請問還有別的方法嗎??
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-11 16:28:22 IP:210.65.xxx.xxx 未訂閱
Sorry !! 插一下花    Form2.WindowState := wsNormal;     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
mini88888
一般會員


發表:6
回覆:4
積分:2
註冊:2005-06-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-12 10:30:26 IP:219.84.xxx.xxx 未訂閱
還是不行吔.... 不知還有別的方法嗎...??< > 因為都沒有反應... 還是謝謝大家的解答< > 希望有碰過此情況的提供一下寶貴意見...thank..you...
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-12 10:51:51 IP:61.222.xxx.xxx 未訂閱
ShowWindow(Form2.Handle,SW_RESTORE); ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-15 06:40:40 IP:220.132.xxx.xxx 未訂閱
轉貼自 Torry's Delphi Pages http://www.swissdelphicenter.ch/torry/showcode.php?id=261
{
  Windows 98/2000 doesn't want to foreground a window when
  some other window has the keyboard focus.
  ForceForegroundWindow is an enhanced SetForeGroundWindow/bringtofront
  function to bring a window to the front.
}    {
  Manchmal funktioniert die SetForeGroundWindow Funktion
  nicht so, wie sie sollte; besonders unter Windows 98/2000,
  wenn ein anderes Fenster den Fokus hat.
  ForceForegroundWindow ist eine "verbesserte" Version von
  der SetForeGroundWindow API-Funktion, um ein Fenster in
  den Vordergrund zu bringen.
}    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;     
努力會更接近成功
------
努力會更接近成功
系統時間:2024-05-08 5:07:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!