Avatar billede fun22 Nybegynder
15. februar 2007 - 21:04 Der er 5 kommentarer og
1 løsning

Vise "intern" form i dll

hej

Jeg har 3 forms i en dll fil.. JEg kan godt åbne den ene form og få den vist.. På form1 er der så en knap som skulle åbne form 2 men det virker ikke.. Der kommer bare en masse access violations..

Nogen ideer?
Avatar billede dkn Nybegynder
15. februar 2007 - 21:09 #1
hvad køre du af kode på den knap
Avatar billede fun22 Nybegynder
15. februar 2007 - 22:59 #2
form3.show;
Avatar billede a_nor Nybegynder
16. februar 2007 - 09:32 #3
Hvor creater du form3?
Avatar billede martinlind Nybegynder
16. februar 2007 - 13:26 #4
prøv at placere uses sharemem eller hvad der er delphi memorymanager hedder, som det første i din uses i din dll, du kan læse mere om det hjælpen, der står hvordan du placerer en form i en dll
Avatar billede a_nor Nybegynder
16. februar 2007 - 13:43 #5
Hej Martin, er den ikke kun nødvendig hvis du vil overføre lange strings mellem prog og procedure ?? Og så skal den også bruges i hovedprogrammet. God idé iøvrigt.
Avatar billede hrc Mester
16. februar 2007 - 14:19 #6
Du har garanteret glemt at sætte hApp og handles til din application, men det er nu lidt svært at gætte når man ikke kan se din kode.

Jeg snuppede lige denne kode fra et af mine (multiform) dll'er.

var
  OldDLLAppHandle : THandle;

function XYZShowModal(hApp, hOwnerForm : THandle; const aID : integer; aDatabase, aLogin, aPassword : pchar) : integer; stdcall;
begin
  OldDLLAppHandle := Application.handle;

  if hApp = 0 then
    hApp := GetActiveWindow;

  Application.Handle := hApp;

  try
    DM := TDM.Create(Application,hOwnerForm,aDatabase,aLogin,aPassword);
    try
      frmXYZList := TfrmXYZList.Create(Application, aID);
      try
        result := integer(frmXYZList.ShowModal = mrOK);
      finally
        frmXYZList.Release;
      end;
    finally
      DM.Free;
      Application.Handle := OldDLLAppHandle;
    end;
  except
    on e: EDBEngineError do
      Application.Handle := OldDLLAppHandle;
    on e: Exception do
      Application.Handle := OldDLLAppHandle;
  end;
end;

... nu åbner du vel ikke dll'et fra dll'et for at åbne form nr. 2?
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