Autor Beitrag
florida
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

Windows 7 Home Premium, Windows XP Professional, Windows 2000
Delphi 2010 Architect
BeitragVerfasst: Sa 19.03.11 22:15 
Ich möchte anhand der VCL ein Menü IDM_MAINMENU laden. Wie ist das möglich?
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: So 20.03.11 04:15 
user profile iconflorida hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte anhand der VCL ein Menü IDM_MAINMENU laden. Wie ist das möglich?
Beispiel:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
unit Main;

interface

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

type
  TMainform = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    Menu : HMenu;
    procedure WMCommand(var Message: TWMCommand); message WM_Command;
  public
    { Public-Deklarationen }
  end;

var
  Mainform: TMainform;

implementation

{$R *.DFM}
{$R Menu.Res}       // Enthält das Menü mit dem Namen "MainMenu".
                    // Die beiden Menüpunkte haben die IDs 40000 und 40001.

procedure TMainform.WMCommand(var Message: TWMCommand);
begin
  case Message.ItemID of
    40000 : Mainform.Color := clRed;    // Menü-Punkt "Test 1"
    40001 : Mainform.Color := clLime;   // Menü-Punkt "Test 2"
  else
    inherited;
  end;
end;

// Menü laden und anzeigen
procedure TMainform.Button1Click(Sender: TObject);
begin
  Menu := LoadMenu(hInstance, MakeIntResource('MainMenu'));
  SetMenu(Mainform.Handle, Menu);
end;

// Menü löschen
procedure TMainform.Button2Click(Sender: TObject);
begin
  SetMenu(Mainform.Handle, 0);
  DestroyMenu(Menu);
end;

procedure TMainform.FormCreate(Sender: TObject);
begin
  ReportMemoryLeaksOnShutdown := true;
end;

end.

Getestet mit XE unter Windows 7 32-Bit