Zalamovanie menu
Zalamovanie príliš dlhého menu.
procedure TfrmMain.LoadViewMenu; var itemNum: integer; mnu: TMenuItem; menuItemHeight: integer; itemsPerColumn: integer; begin {remove any existing menu items from the View menu} while mnuView.Count > 0 do begin {freeing an item apparently deletes it from the menu} mnuView.Items[0].Free; end; {find the height of each menu item. The 2 was chosen after some experimentation} menuItemHeight := GetSystemMetrics(SM_CYMENU) + 2; {calculate the number of items per column} itemsPerColumn := screen.height div menuItemHeight; {create the items} for itemNum := 0 to 99 do begin mnu := TMenuItem.Create(self); mnu.caption := 'Item ' + inttostr(itemNum); {start a new column if necessary} if (itemNum mod itemsPerColumn = 0) and (itemNum>0) then begin mnu.break := mbBarBreak; end; {assign the method which handles the menu} mnu.OnClick := HandleMenuClick; mnuView.Add(mnu); end; end;