ورود

View Full Version : چگونه یک گزینه به سیستم منوی برنامه اضافه کنیم



Lord
شنبه 10 بهمن 1383, 00:36 صبح
لطفا مرا راهنمایی کنید.
چگونه یک گزینه به سیستم منوی برنامه اضافه کنیم

یعقوب
شنبه 10 بهمن 1383, 03:37 صبح
سلام
ببخشید...اصلاً منظورتون رو متوجه نمی شم....!
لطفاً واضح تر توضیح بدین.

net_ved
شنبه 10 بهمن 1383, 11:45 صبح
شاید منظورتون این بوده...چطوری یه برنامرو به منوی سیستم اضافه کنیم؟

مهدی کرامتی
شنبه 10 بهمن 1383, 20:22 عصر
امیدوارم منظورتون همین باشه:

procedure TForm1.Button1Click(Sender: TObject);
var HelpMenu:TMenuItem;
begin
HelpMenu := TMenuItem.Create(MainMenu1);
HelpMenu.Caption := 'Help';
MainMenu1.Items.Add(HelpMenu);
end;

vcldeveloper
یک شنبه 11 بهمن 1383, 03:20 صبح
فکر کنم منظورشون همون System Menu (منویی که گزینه هایی مثل Minimize, Maximaze و ... در اون قرار دارند) باشه.
برای اضافه کردن گزینه ای به System Menu می تونید از کدی شبیه کد زیر استفاده کنید.
* توضیحات رو در داخل کد گذاشتم.



unit Unit1;

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

const
CustomSubItem = 100;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure WinMsgHandler(var Msg: TMsg; var Handled: Boolean);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.dfm}

{ TForm1 }
procedure TForm1.WinMsgHandler(var Msg: TMsg; var Handled: Boolean);
begin
//if the message is from system menu AND my cutsom menu item is clicked
if (Msg.message = WM_SYSCOMMAND) and
(Msg.wParam = CustomSubItem) then
ShowMessage('This is a custom menu item');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
SystemMenu: THandle;
begin
//Set application's message handler to my cutom handler
Application.OnMessage := WinMsgHandler;
//Get handle of Sytem Menu,
//You set the second parameter to TRUE to set default menu back
SystemMenu := GetSystemMenu(Application.Handle, False);
//Add a separator
AppendMenu(SystemMenu, MF_SEPARATOR, 0, '');
//Add your sub item
AppendMenu(SystemMenu, MF_BYPOSITION, CustomSubItem, '&A Custom Item');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
GetSystemMenu(Application.Handle, True);
end;

end.

Lord
یک شنبه 11 بهمن 1383, 06:46 صبح
از آقای علی کشاورز به خاطر جوابشون ممنونم

مهدی کرامتی
یک شنبه 11 بهمن 1383, 20:52 عصر
از وقتی که برای پاسخ دادن به شما صرف کردم استفاده های بهتری هم میتونستم بکنم. حیف شد.

esi022
دوشنبه 12 بهمن 1383, 00:00 صبح
به همین دلیل پست من پاک شد؟ :(

مهدی کرامتی
دوشنبه 12 بهمن 1383, 09:58 صبح
خیر، به دلیل آف تاپیک بودن پاک شد.

esi022
دوشنبه 12 بهمن 1383, 13:25 عصر
آف تاپیک؟ :گیج:

vcldeveloper
سه شنبه 13 بهمن 1383, 03:00 صبح
آف تاپیک؟
الان هم دوباره داره میره به سمت آف تاپیک شدن :wink: :evil2:

esi022
سه شنبه 13 بهمن 1383, 18:19 عصر
علی کشاورز سلام
آقا من خنگ !!!!!
میشه بگید منظورتون از آف تاپیک چیه؟

vcldeveloper
چهارشنبه 14 بهمن 1383, 02:28 صبح
آف تاپیک به مطالبی گفته میشه که ربطی به تاپیکی که مطلب در اون بیان میشه ندارند. مثلا این تاپیک درباره منوی سیستم هست، من و شما داریم درباره "آف تاپیک"،‌ آف تاپیک میزنیم!
:موفق:

esi022
چهارشنبه 14 بهمن 1383, 04:22 صبح
افتاد :تشویق: متشکرم - دوست دارم علی کشاورز
اینم آف بود :mrgreen:
ولی بعضی وقتها نمیشه - چون کاربرا نمیگن چی میخوان
یعنی بد توضیح میدن