AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Forms in DLLs und Packages

Ein Thema von Igotcha · begonnen am 11. Feb 2005 · letzter Beitrag vom 11. Feb 2005
 
KrasserChecker

Registriert seit: 21. Jul 2004
120 Beiträge
 
#5

Re: Problem mit Forms in DLLs und Packages

  Alt 11. Feb 2005, 12:06
Versuchs mal hiermit:

in der Unit controls.pas folgende Methode ergänzen:

Delphi-Quellcode:
function GetControlAtom : Pointer;

function GetControlAtom : Pointer;
begin
  Result := @ControlAtom;
end;
Jetzt brauchst Du noch 2 Methoden in der DLL, eine um den Wert zu setzen und eine um den alten Wert wiederherzustellen:

Delphi-Quellcode:
locOldAtom: Integer = -1;

function Init(iRealControlAtom : Integer): Boolean; stdcall;
var P: PWord;
begin
  Result := False;

  // TApplication ermittelt für das Verarbeiten einiger Messages die richtige Komponente
  // über einen globalen "Atom". Der ist aber leider prozesspezifisch. D.h., dass er in
  // einer Anwendung bestens funktioniert. Sobald aber (wie hier) eine DLL dazukommt
  // wird innerhalb der DLL ein neuer eigener "Atom" initialisiert. Um trotzdem richtig
  // arbeiten zu können teilen wir daher unserer DLL den "Atom" der Anwendung mit.
  // Dazu haben wir uns in "controls.pas" gehackt und die Datei um eine neue Methode
  // erweitert:
  // function GetControlAtom : Pointer;
  // begin
  // Result := @ControlAtom;
  // end;
  P := GetControlAtom;
  locOldAtom := P^;
  P^ := iRealControlAtom;

  Result := True;
end;

procedure Uninit;
var P: PWord;
begin
  if locOldAtom<>-1 then
  begin
    P := GetControlAtom;
    P^ := locOldAtom;
  end;
end;
Was da eigentlich passiert (und warum) steht ja oben im Quelltext als Kommentar.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz