delphi模态窗体最小化会隐藏的问题

在使用delphi创建模态窗体的时候最小化窗体会导致最小化的窗体不可见,再次点击主窗体才会显示。

在这个模态窗体中增加以下函数

  procedure WmSysCommand(var msg: TMessage); message WM_SYSCOMMAND;
procedure TForm1.WmSysCommand(var msg: TMessage);
begin
  inherited;//必须加,否则模态窗关闭最大化还原将不能用
  if msg.WParam = SC_MINIMIZE then
  begin
    Form1.WindowState := wsMinimized;
    Form2.Show;
  end
end;
end.

实现如上。

系统会自动检测消息。如果发现是窗体最小化事件,则进行消息处理。在消息处理中加一句show让其显示即可。

http://blog.csdn.net/sushengmiyan/article/details/7803411

时间: 2024-12-25 18:21:52

delphi模态窗体最小化会隐藏的问题的相关文章

窗体最小化时,不挡住任务栏

/// <summary>        /// 窗体最小化时,隐藏到系统托盘        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void MainFace_SizeChanged(object sender, Even

Delphi 7下最小化到系统托盘(主要是WM_TRAYMSG和WM_SYSCOMMAND消息)

在Delphi 7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本.定义如下: 123456789   _NOTIFYICONDATAA = record   cbSize: DWORD;   Wnd: HWND;   uID: UINT;   uFlags: UINT;   uCallbackMessage: UINT;   hIcon: HICON;   szTip: array [0..63] of Ansi

C#编写最小化时隐藏为任务栏图标的 Window appllication.

1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小化事件(首先需要添加事件引用): this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged); private void Form1_SizeChanged(object sender, EventArgs e) { if(

Mac的最小化和隐藏的区别

Mac 中应用程序窗口的最小化和隐藏的快捷键: CMD + H 隐藏应用程序 CMD + M 最小化应用程序 重点在于两点的区别: 最小化会隐藏当前应用程序的窗口,不切换当前的应用程序:隐藏应用程序会隐藏窗口,并将当前的焦点切换到上一次活跃的应用程序. 在用CMD + TAB手动切换应用程序时,隐藏的窗口会自动展现,最小化的却不会. 最小化会有动画效果,隐藏不会有动画.

c# 窗体最小化后截图实现

我们知道,当我们需要对Control进行截图时,我们可以使用Control.DrawToBitmap()进行截图, 那么问题来了,当我们的窗体最小化了,我们还怎么截图呢? 当窗体最小化的时候,我们知道Control的size为(0,0),那么你截图的话也就没有或者一片漆黑,嘿嘿 其实我们可以这么搞来曲线救国,请往下看! 假如我们需要截图 TabControl的图片呢,我们要怎么做呢? 因为最小化会将该控件的Size设置为(0,0),所以我们控制他的Size就可以了, 我们修改MininmumSi

Winform 窗体最小化隐藏在桌面右下角:转

ICO文件要放到 bin\Debug 下 1.给主窗体添加 NotifyIcon 控件 2.窗体加载事件里 private void MainF_Load(object sender, EventArgs e) { this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); notifyIcon1.Icon = new Icon("JC.ico"); notifyIcon1.Visible = fal

WinForm实现最小化窗体时隐藏到系统托盘中

1.首先在工具栏中选择NotifyIcon控件拖入窗体中: 2.设置NotifyIcon控件的相关属性: Icon:在系统托盘中显示的图标: Text:当鼠标移动到系统托盘图标上时显示的文本: ContextMenuStrip:设置系统托盘的右键菜单,这个实现很简单,拖入一个右键菜单的控件,并在下拉列表框中选择就可以了. 3.添加相关代码 /// <summary> /// 窗体SizeChanged事件 /// </summary> /// <param name=&quo

delphi 窗体最大化 最小化

procedure TForm1.SpeedButton2Click(Sender: TObject); begin sendmessage(form1.WindowHandle,WM_SYSCOMMAND,SC_ICON,0);//窗体最小化  任务栏中 end;   procedure TForm1.SpeedButton2Click(Sender: TObject); begin form1.WindowState :=  wsMaximized;//窗体最大化 end;   proced

WinForm窗体的托盘最小化实现代码

//窗体最小化时候将窗体隐藏掉,同时让托盘控件显示 private void Form1_SizeChanged(object sender, EventArgs e) { if(this.WindowState == FormWindowState.Minimized) { this.Hide(); this.notifyIcon1.Visible = true; } } private void notifyIcon1_MouseDoubleClick(object sender, Mous