Skip to content

Commit 728e24f

Browse files
committed
initial commit
1 parent 9861f27 commit 728e24f

26 files changed

+4263
-0
lines changed

1.bmp

566 Bytes
Binary file not shown.

12.asm

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1112212211212121212

13.asm

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
13

22.bmp

566 Bytes
Binary file not shown.

MenuBar.pas

+126
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
{*******************************************************}
2+
{ }
3+
{ Implements a TToolbar descendant that has a Menu to }
4+
{ make IDE like Toolbar menus very easy. This works }
5+
{ only in Delphi 4.0 or above }
6+
{ }
7+
{ Copyright (c) 1995,98 Inprise Corporation }
8+
{ }
9+
{-------------------------------------------------------}
10+
{ * Minor bug when Menu remove notification }
11+
{ isn't handled - fixed by Akzhan Abdulin (c) 1998 }
12+
{ + Menu ShortCuts handling added (c) 2000 }
13+
{*******************************************************}
14+
15+
unit MenuBar;
16+
17+
interface
18+
19+
uses
20+
Windows, Messages, Classes, Controls, ComCtrls, Menus;
21+
22+
type
23+
24+
TMenuBar = class(TToolBar)
25+
private
26+
FMenu: TMainMenu;
27+
procedure SetMenu(const Value: TMainMenu);
28+
function HandleAppKeyDown(var Message: TWMKey): Boolean;
29+
procedure CMDialogKey(var Message: TWMKey); message CM_DIALOGKEY;
30+
protected
31+
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
32+
procedure Notification(AComponent: TComponent; Operation: TOperation);
33+
override;
34+
public
35+
constructor Create(AOwner: TComponent); override;
36+
published
37+
property Flat default True;
38+
property ShowCaptions default True;
39+
property EdgeBorders default [];
40+
property Menu: TMainMenu read FMenu write SetMenu;
41+
end;
42+
43+
procedure Register;
44+
45+
implementation
46+
47+
uses
48+
SysUtils, Forms;
49+
50+
procedure Register;
51+
begin
52+
RegisterComponents('Samples', [TMenuBar]);
53+
end;
54+
55+
{ TMenuBar }
56+
57+
procedure TMenuBar.CMDialogKey(var Message: TWMKey);
58+
begin
59+
if not HandleAppKeyDown(Message) then Inherited;
60+
end;
61+
62+
constructor TMenuBar.Create(AOwner: TComponent);
63+
begin
64+
inherited Create(AOwner);
65+
Flat := True;
66+
ShowCaptions := True;
67+
EdgeBorders := [];
68+
ControlStyle := [csCaptureMouse, csClickEvents,
69+
csDoubleClicks, csMenuEvents, csSetCaption];
70+
end;
71+
72+
procedure TMenuBar.GetChildren(Proc: TGetChildProc; Root: TComponent);
73+
begin
74+
end;
75+
76+
function TMenuBar.HandleAppKeyDown(var Message: TWMKey): Boolean;
77+
begin
78+
if Assigned(Menu) and Menu.IsShortCut(Message) then
79+
begin
80+
Message.Result := 1;
81+
Result := True;
82+
end
83+
else
84+
Result := False;
85+
end;
86+
87+
procedure TMenuBar.Notification(AComponent: TComponent;
88+
Operation: TOperation);
89+
begin
90+
if (AComponent = FMenu) and (Operation = opRemove) then
91+
begin
92+
SetMenu(nil);
93+
end;
94+
Inherited;
95+
end;
96+
97+
procedure TMenuBar.SetMenu(const Value: TMainMenu);
98+
var
99+
i: Integer;
100+
Button: TToolButton;
101+
begin
102+
if FMenu = Value then exit;
103+
if ButtonCount > 0 then
104+
for i := Pred(ButtonCount) downto 0 do
105+
Buttons[i].Free;
106+
FMenu := Value;
107+
if not Assigned(FMenu) then exit;
108+
for i := ButtonCount to Pred(FMenu.Items.Count) do
109+
begin
110+
Button := TToolButton.Create(Self);
111+
try
112+
Button.AutoSize := True;
113+
Button.Grouped := True;
114+
Button.Parent := Self;
115+
Buttons[i].MenuItem := FMenu.Items[i];
116+
except
117+
Button.Free;
118+
raise;
119+
end;
120+
end;
121+
{ Copy attributes from each menu item }
122+
for i := 0 to Pred(FMenu.Items.Count) do
123+
Buttons[i].MenuItem := FMenu.Items[i];
124+
end;
125+
126+
end.

0 commit comments

Comments
 (0)