Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#14

AW: TInterfacedObject Subclass

  Alt 12. Mär 2011, 13:01
Und wo wird hier TSkinListBox.Create aufgerufen? Welche Variable hält die erzeugte Instanz? Was für einen Typ hat diese Variable?

Was da im Create passiert, ist wahrscheinlich völlig irrelevant. Die Tatsache, daß du das Window-Handle abspeicherst, hat mit der Lebensdauer der Instanz nichts zu tun.

Ich hätte jetzt hier so etwas erwartet:

Delphi-Quellcode:
var
  SkinListBox: ISkinListBox; // Wichtig! Hier muss eine Interface-Variable stehen. IInterface ginge auch, nicht aber TSkinListBox oder TObject.
...
  SkinListBox := TSkinListBox.Create(...);
Wird es auch
InstrumentList: ISkinListBox; Aber in meiner Anwendung nicht in der TSkinList Classe.


Wird doch von außerhalb aufgerufen...
Delphi-Quellcode:
    InstrumentList := CTRL_ListBoxCreate(hMain, PAnsiChar(SKAERO_FOLDER + 'Sound.png'),
      145, 62, 610, 268, ID_INSTRUMENTLIST, True, 18, SKAERO_INACTIVECAPTION);
    SKAERO_SetAnchorMode(InstrumentList.Handle, ANCHOR_RIGHT);
    SKAERO_SetZorder(InstrumentList.Handle, ANCHOR_RIGHT);
    InstrumentList.SetFont(SKAERO_CAPTIONFONTHEIGHT, PAnsiChar(SKAERO_TEXTFONT),
      SKAERO_ACTIVECAPTION, SKAERO_INACTIVECAPTION, TRUE, 2, 0);
In der DLL..

Delphi-Quellcode:
function CTRL_ListBoxCreate(hOwner: HWND; FullpathImageName: string; x, y, xW, yH,
  ListID: integer; Visible: Boolean; ItemHeight: Integer; BackColor: COLORREF): ISkinListBox; stdcall;
begin

  result := TSkinListBox.Create(hOwner, FullpathImageName, x, y, xW, yH,
    ListID, Visible, ItemHeight, BackColor);
end;
Zurückgegeben wird ein handle mit dem ich in der Anwendung
in verbindung mit der übergebenen ID der ListBox arbeite.

Zitat:
Was da im Create passiert, ist wahrscheinlich völlig irrelevant.
In wie fern ?
Du kennst doch die Zusammenhänge nicht wie ich mit den Daten im weiteren verlauf arbeite.
Alles was deklariert wurde wird auch im späteren verlauf verwendet.
Und funktioniert in meiner anderen Anwendung "OHNE" Dll.

gruss

Geändert von EWeiss (12. Mär 2011 um 13:59 Uhr)
  Mit Zitat antworten Zitat