PDA

View Full Version : داشتن یک فرم بدون دکمه Close



v_shalchian
جمعه 07 شهریور 1382, 09:53 صبح
با سلام
می خواستم بدونم چه جوری میشه یک فرم داشت که دکمه Minimize و Maximize داشته باشه ولی Close رو نداشته باشه. با تغییر خاصیت borderIcons هم به نتیجه نرسیدم چون وقتی biSystemmenu رو False می کنم هر سه دکمه حذف می شود

سید مسعود موحد
دوشنبه 15 دی 1382, 11:30 صبح
با کد زیر مینوانی که نوار بالای صفحه را از بین ببری و با یک PANEL و چند sPEEDbTN خودت آنرا طراحی کنی
public
procedure CreateParams(var Params: TCreateParams);override;
{ Public declarations }
end;

var
Frm_DafKol: TFrm_DafKol;
Count : LongInt;

implementation

{$R *.DFM}

procedure TFrm_DafKol.CreateParams(var Params: TCreateParams);
begin
inherited ;
Params.Style := WS_POPUP or WS_BORDER;
end;

ramin_rp
دوشنبه 15 دی 1382, 12:13 عصر
سلام
از کد زیر برای کاری که خواستی استفاده کن
unit Unit1
;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
flag : uint;
appsysmenu : thandle;
begin
appsysmenu := getsystemmenu(handle, false);
flag :=mf_grayed; // set flage to mf_enabled to re-enable it
enablemenuitem(appsysmenu, sc_close,mf_bycommand or flag);
end;
end.

said ali
شنبه 27 دی 1382, 19:16 عصر
با سلام
با استفاده از میسیج هم میتونی در حالیکه دکمه closeهنوز enable این کار رو بکنی و حتی با زدن اون دکمه پیام بدی. میسیج مورد نظر که باید هندل کنی فکر کنم WM_CHiTest یا یه چیزی شبیه به این که اولین مسیج فرم که میتونی تو یونیت فرم اون رو پیدا کنی بعد به ازای Result های مختلف از جمله زدن دکمه close برای فرمت برنامه بویسی.

Kambiz
یک شنبه 28 دی 1382, 00:12 صبح
با وجود دکمه‌های Minimize و Maximize دکمه‌ Close رو نمی‌شه برداشت ولی اون رو می‌شه غیر فعال کرد.

برای این منظور باید متد CreateParams فرم رو بصورت زیر بارگذاری کنی:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
protected
procedure CreateParams(var Params: TCreateParams); override;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WindowClass.style := Params.WindowClass.style or CS_NOCLOSE;
end;

end.

Delphi-Clinic
یک شنبه 05 بهمن 1382, 15:42 عصر
procedure TForm1.Button1Click(Sender: TObject);
var
hwndHandle : THANDLE;
hMenuHandle : HMENU;
begin
hwndHandle := FindWindow(nil, 'Untitled - Notepad');
if (hwndHandle <> 0) then begin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
if (hMenuHandle <> 0) then
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;