全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3375
推到 Plurk!
推到 Facebook!

如何將視窗右上角的縮小以及放大的按鈕關閉?

尚未結案
priest
一般會員


發表:8
回覆:1
積分:1
註冊:2002-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-16 22:36:20 IP:61.230.xxx.xxx 未訂閱
請問大家! 如何將視窗右上角的縮小以及放大的按鈕關閉? 發表人 - priest 於 2002/12/16 22:45:12
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-16 23:20:08 IP:61.221.xxx.xxx 未訂閱
引言: 如何將視窗右上角的縮小以及放大的按鈕關閉?
priest 你好: 請參考以下的做法
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-13 23:48:10 IP:61.70.xxx.xxx 未訂閱
引言: 請問大家! 如何將視窗右上角的縮小以及放大的按鈕關閉? 發表人 - priest 於 2002/12/16 22:45:12
Form1.BorderIcons :=Form1.BorderIcons - [biMaximize]; Form1.BorderIcons :=Form1.BorderIcons - [biMinimize]; 發表人 - cmf 於 2003/01/13 23:50:02
------
︿︿
Jeffrey
初階會員


發表:10
回覆:58
積分:38
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-13 23:53:06 IP:61.216.xxx.xxx 未訂閱
TForm.BorderIcons
banson1716
高階會員


發表:55
回覆:182
積分:167
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-14 12:15:20 IP:61.223.xxx.xxx 未訂閱
自己體會調試如下範例 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFrmMainForm = class(TForm) Button1: TButton; procedure FormPaint(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } Pressed : Boolean; FocusLost : Boolean; Rec : TRect; NovoMenuHandle : THandle; PT1 : TPoint; FHintshow : Boolean; FHint : THintWindow; FHintText : String; FHintWidth : Integer; { Private declarations } procedure WMNCPAINT (var msg: Tmessage); message WM_NCPAINT; procedure WMNCMOUSEDOWN (var msg: Tmessage); message WM_NCLBUTTONDOWN; procedure WNCLBUTTONDBLCLICK (var msg: Tmessage); message WM_NCLBUTTONDBLCLK; procedure WMNCHITTEST (var msg: Tmessage); message WM_NCHITTEST; procedure WMSYSCOMMAND (var msg: Tmessage); message WM_SYSCOMMAND; public { Public declarations } end; var FrmMainForm: TFrmMainForm; implementation {$R *.DFM} { TForm1 } procedure TFrmMainForm.WMNCHITTEST(var msg: Tmessage); var //按鈕訊息 Tmp : Boolean; begin if Pressed then begin Tmp:=FocusLost; PT1.X := Msg.LParamLo - FrmMainForm.Left; PT1.Y := Msg.LParamHi - FrmMainForm.Top ; if PTInRect(Rec, PT1) then FocusLost := False else FocusLost := True; if FocusLost <> Tmp then InvalidateRect(FrmMainForm.Handle, @Rec, True); end; inherited; end; procedure TFrmMainForm.WMNCMOUSEDOWN(var msg: Tmessage); begin PT1.X := Msg.LParamLo - FrmMainForm.Left; PT1.Y := Msg.LParamHi - FrmMainForm.Top ; FHintShow := False; if PTInRect(Rec, PT1) then begin Pressed := True; FocusLost := False; InvalidateRect(FrmMainForm.Handle, @Rec, True); SetCapture(TWinControl(FrmMainForm).Handle); end else begin FrmMainForm.Paint; inherited;//表格三鈕按下的 end; end; procedure TFrmMainForm.WMNCPAINT(var msg: Tmessage); begin //表格外邊 inherited; end; procedure TFrmMainForm.WMSYSCOMMAND(var msg: Tmessage); begin inherited; end; procedure TFrmMainForm.WNCLBUTTONDBLCLICK(var msg: Tmessage); begin inherited; end; procedure TFrmMainForm.FormPaint(Sender: TObject); var Border3D_Y, Border_Thickness, Btn_Width, Button_Width, Button_Height : Integer; MyCanvas : TCanvas; begin MyCanvas := TCanvas.Create; MyCanvas.Handle := GetWindowDC(FrmMainForm.Handle); Border3D_Y := GetSystemMetrics(SM_CYEDGE); Border_Thickness:= GetSystemMetrics(SM_CYSIZEFRAME); Button_Width := GetSystemMetrics(SM_CXSIZE); Button_Height := GetSystemMetrics(SM_CYSIZE); Btn_Width := Border3D_Y Border_Thickness Button_Height - (2 * Border3D_Y) - 1; Rec.Left := FrmMainForm.Width - (3 * Button_Width Btn_Width); Rec.Right := FrmMainForm.Width - (3 * Button_Width 03); Rec.Top := Border3D_Y Border_Thickness - 1; Rec.Bottom := Rec.Top Button_Height - (2 * Border3D_Y); MyCanvas.Free; end; procedure TFrmMainForm.Button1Click(Sender: TObject); begin CLOSE; end; end.
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-30 00:31:33 IP:61.217.xxx.xxx 未訂閱
//要在MDI視窗上隱藏最大/最小按鈕,要用Windows API的SetWindowLong函數來改變視窗類型。 備註:要在單一視窗上隱藏最大/最小按鈕,也可以有相同效果!! // 將以下程式碼加入到MDI視窗(TMDIForm)的OnCreate事件中: procedure TMDIForm.FormCreate(Sender: TObject); var l: DWORD; begin l := GetWindowLong(Self.Handle, GWL_STYLE); l := l and not (WS_MINIMIZEBOX); l := l and not (WS_MAXIMIZEBOX); l := SetWindowLong(Self.Handle, GWL_STYLE, l); end; 發表人 - flyup 於 2003/01/30 00:36:13
banson1716
高階會員


發表:55
回覆:182
積分:167
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-02 00:06:30 IP:61.223.xxx.xxx 未訂閱
private procedure CreateParams(var Params: TCreateParams); override; { Private declarations } procedure TForm1.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.Style := Params.Style and not WS_OVERLAPPEDWINDOW or WS_BORDER //For a MDI child form, setting the BorderStyle to bsNone does not remove the title bar. This does it: { Inherited CreateParams( Params ) ; Params.Style := Params.Style and (not WS_CAPTION) ;} end;
系統時間:2024-09-29 3:09:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!