Witam.
Mam pewien problem, który próbowałem rozwiązać przez cały dzień i mi się to nie udało, więc spróbuję zadać tutaj pytanie:
Mam sobie program, który ma obsługiwać wtyczki. Wywołuje on procedurę z DLL'ka o następującej składni:
InitializePlugin(CocpitForm: TForm; MainMenu: TMainMenu)
, przy czym CocpitForm jest dodatkową formatką programu głównego, a MainMenu - menu główne na podstawowej formatce. Teraz próbowałem zrobić coś takiego:
procedure InitializePlugin(CocpitForm: TForm; MainMenu: TMainMenu); stdcall;
var
MenuItem: TMenuItem;
begin
MessageBox(0, 'Witaj! Jestem procedurą z wtyczki test.dll!', 'Witam!', MB_OK);
MenuItem:=TMenuItem.Create(MainMenu.Owner);
MenuItem.Caption:='Opcja z Pluginu';
MainMenu.Items.Add(MenuItem);
end;
I teraz przy uruchomieniu programu głównego powinno wyświetlić się okienko z informacją (działa) i dodać opcja w Menu (to już nie działa). Dlaczego opcja się nie dodaje? Czy coś przegapiłem? I mam jeszcze jedno pytanko. Jak w takiej sytuacji w tym DLL'ku stworzyć procedurę obsługi takiego MenuItem'a? Próbowałem:
procedure MenuItemClick(Sender: TObject);
begin
ShowMessage('Kliknięty');
end;
{...}
MenuItem.OnClick:=MenuItemClick;
Lecz w linijce "MenuItem.OnClick:=MenuItemClick;" wywala mi następujący błąd:"[Error] test.dpr(32): Incompatible types: 'method pointer and regular procedure'" w/g helpa Delphi powinna ta procedurka wyglądać następująco:
procedure TForm1.MenuItemClick(Sender: TObject);
begin
ShowMessage('Kliknięty');
end;
Ale jak ja mam to zrobić, skoro nie mam dostępu do Formy?