「無効な浮動小数点演算」というエラー メッセージに問題があります。ポップアップ メニューは設計時のコントロールであり、名前はNavPop
です。メニュー項目は割り当てられていません。の popupmenu として割り当てられPanel1
ます。
次に、リストボックスからメニュー項目を動的に作成し、キャプションとクリック イベントを割り当てます。私が達成しようとしていることに関して、すべてが 100% 機能します。すなわちそれは動作します。
プログラムを閉じたときにのみ、取得しますか
浮動小数点演算が無効です
もしくはそうでないか:
アクセス違反アドレス 000007355。アドレス 0000007355 の読み取り。
プログラムを閉じたときのエラーを除いて、すべてが完全に機能することに注意してください。助けていただければ幸いです。
// I declare the Array of TMenuItems
private
{ Private declarations }
ItemArray : array of TMenuItem;
...
procedure TMainForm.Button1Click(Sender: TObject);
begin
CreateNavPop;
end;
// Create the menu items from listbox(Navlist) items and Link them
// to events on a navigation bar.
procedure TMainForm.CreateNavPop;
var
I: Integer;
NavIndex: Integer;
begin
SetLength(ItemArray, NavList.Items.Count);
NavIndex:=0;
For I:=0 to NavList.Items.Count-1 do
begin
NavIndex:=NavBar1.Items.ItemByCaption(NavList.Items.Strings[i]).Index;
ItemArray[i]:=TMenuItem.create(Nil);
ItemArray[i].Caption:=NavList.Items.Strings[i];
ItemArray[i].OnClick:=NavBar1.Items.Items[Navindex].OnClick;
NavPop.Items.Add(ItemArray[i]);
end;
end;
// Call the Items free on program close
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeItems(ItemArray);
end;
// Free Dynamically created Menu Items on Form Close
procedure TMainForm.FreeItems(MItems : array of TMenuItem);
var
cnt : integer;
begin
for cnt := High(MItems) downto Low(MItems) do
begin
MItems[cnt].Free;
MItems[cnt] := nil;
end;
end;