So gebe ich den Leuten diese eine
Unit wo alles vorhanden ist.
Genau so meine ich das doch.
Der Unterschied ist, dass diese
Unit in deinem Projekt normal eingebunden ist, mehr nicht.
Dass beides funktioniert, ist klar, aber ich sehe eben keinen Vorteil an dem Mehraufwand.
Bei uns würde das so aussehen.
SDK-
Unit:
Delphi-Quellcode:
ISkinMagnetic =
interface
['
{A00CB8B3-8433-4C58-9115-1845B29B3FF0}']
function GetSnapWidth: Integer;
procedure SetSnapWidth(
const Value: Integer);
property SnapWidth: Integer
read GetSnapWidth
write SetSnapWidth;
function AddMagneticWindow(
Handle: HWND; hWndParent: HWND): Boolean;
function RemoveMagneticWindow(
Handle: HWND): Boolean;
function SetFullWindowDrag(HWND: DWORD; ShowFullWindow: Boolean): Boolean;
end;
Interne
Unit:
Delphi-Quellcode:
ISkinMagneticEx =
interface(ISkinMagnetic)
['
{14454F11-1C26-4133-A46E-3271F5A9618B}']
function zSubclass_Proc(
var Wnd: HWND;
var Msg: UINT;
var wParam: wParam;
var lParam: lParam): LRESULT;
end;
// (die Klasse wäre bei uns lediglich in einer eigenen Unit)
TMagnetic =
class(TInterfacedPersistent, ISkinMagnetic, ISkinMagneticEx)
...
Die Interfaces haben so auch eindeutige GUIDs usw. und du weißt vor allem genau, dass die veröffentlichte
Unit auch genau zu deinen internen Interfaces passt. Außerdem sparst du dir das Abgleichen der Deklarationen, wenn du etwas änderst bzw. hinzufügst.