Avatar billede ibhe Novice
20. december 2009 - 10:35 Der er 1 kommentar

D6: BPLs og mainmenu.merge

Jeg er gået død på følgende opgave:

Jeg vil gerne have en BPL som jeg indlæser til mit program ved opstart, og som udvider menuen på det indlæsende program med funktioner i BPL'en

Jeg har gjort følgende:

Oprettet en mainmenu i hovedprogrammet hvor funktioner har forskellige groupindex (10, 20 ..).

Konstrueret en BPL med en mainmenu hvor alle funktioner har groupindex som er forskellige fra dem der er i hovedprogrammet

I hovedprogrammet indlæser jeg BPL ved opstart, på følgende måde:

// kodestump 1
  bplmodulx := loadpackage('etiket.bpl');
  if bplmodulx <>0 then begin
    @setup := getprocaddress(bplmodulx,'setup');
    if  assigned(setup) then begin
      setup(bplmenu);
      mainmenu1.Merge(bplmenu);
    end;
  end;

bplmodulx, setup og bplmenu er defineret som globale variable udenfor programobjektet.

var
  frmmain: Tfrmmain;
  bplmodulx : hmodule;
  setup :procedure(var menu:tmainmenu);
  bplmenu : tmainmenu;

I BPL sker der ikke ret meget:

procedure setup(var menu : tmainmenu);
begin
  // initialiserer de forms der skal benyttes
  frmsetup := tfrmsetup.Create(application);
  frmetiket:= tfrmetiket.Create(application);
  menu :=frmetiket.yderst;
end;

frmetiket er BPL's "primære" form, mens frmsetup er en form der kaldes af BPL's mainmenu (hedder "yderst")

Mit problem er følgende:
Når jeg har udført kodestump 1, bliver programmets menu udvidet med de funktioner der er i BPL'en, og kalder også de forventede ting i BPL'en, men nogle af de oprindelige funktioner i hovedmenuen er ligeledes (utilsigtet) blevet erstattet med kald til BPL'en.

Er der nogle der ved hvordan man får dette til at fungere efter hensigten ????
Avatar billede martinlind Nybegynder
20. december 2009 - 15:16 #1
prøv evt. at kalde merge direkte i winAPI'er måske den merge der er i d6 vcl'en er forældet/fejl behæftet :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester