Beispiel
Implements ISkinScrollBar
ISkinScrollBar enthält ein Winproc
Durch die implementierung kann ich in meiner Hauptanwendung direkt auf
ISkinScrollBar_WindowProc(...
zugreifen.
Ich möchte also quasi ein Event aus der
DLL übergeben und zwar dann wenn ich onscroll oder onchange aufrufe.
Mein Interface!
Delphi-Quellcode:
type
ISkinScrollBar =
interface
['
{FEAD54BF-FFDD-43E9-9388-5F96A8643948}']
function GetHandle: hWnd;
property Handle: hWnd
read GetHandle;
procedure SetSmallChange(Value: Single);
function GetSmallChange: Single;
procedure SetLargeChange(Value: Single);
function GetLargeChange: Single;
procedure SetMinVal(Value: Single);
function GetMinVal: Single;
procedure SetMaxVal(Value: Single);
function GetMaxVal: Single;
procedure SetVal(Value: Single);
function GetVal: Single;
end;
TSkinScrollBar =
class(TInterfacedPersistent, ISkinScrollBar)
private
FHScrollBar: HWND;
ImgW, ImgH: Cardinal;
Style: DWORD;
FLargeChange: Single;
FSmallChange: Single;
FMinVal: Single;
FMaxVal: Single;
FVal: Single;
FBackgroundHeight: Single;
function GetHandle: hWnd;
function GetLargeChange: Single;
function GetSmallChange: Single;
function GetMinVal: Single;
function GetMaxVal: Single;
function GetVal: Single;
procedure SubClass(WinHandle: HWND);
procedure UnSubClass(WinHandle: HWND);
procedure SetLargeChange(Value: Single);
procedure SetSmallChange(Value: Single);
procedure SetMinVal(Value: Single);
procedure SetMaxVal(Value: Single);
procedure SetVal(Value: Single);
procedure DrawThumbBarValue;
procedure CalculateThumbBarTop;
procedure SetThumbBarHeight;
function ScrollBarProc(WinHandle: HWND; Msg: UINT; wP: WParam; lP: LParam): LRESULT;
stdcall;
procedure ClientWndProc(
var Message: TMessage);
public
property Handle: HWND
Read FHScrollBar;
constructor Create(hOwner: HWND; PageImg, DownImg, UpImg, ThumpImg: WideString;
x, y, yH, CtrlID, StateMax:Integer; Enabled, Visible: Boolean);
destructor Destroy;
override;
end;
Delphi-Quellcode:
procedure TSkinScrollBar.SetVal(Value: Single);
begin
If (Value >= FMinVal) and (Value <= FMaxVal) then
FVal := Value
else if Value < FMinVal then
FVal := FMinVal
else If Value > FMaxVal then
FVal := FMaxVal;
DrawThumbBarValue;
Hier...
//onEventChange
end;
bei
Hier...
//onEventChange
soll die Anwendung eine Procedure bekommen wie in einer
VCL Anwendung
wenn ich hier bsp.. onScroll einfügen würde.
Delphi-Quellcode:
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
end;
hoffe ist jetzt etwas besser erklärt.
@Peter1999
Sieht fast so aus als wenn es das ist was ich suche..
Werde es mal testen.
Danke!
EDIT:
Verstehe aber nicht warum ich noch Setter und getter definieren muss wenn ich diese schon habe.
Delphi-Quellcode:
procedure TSkinScrollBar.SetVal(Value: Single);
begin
Wird aus der Hauptanwendung übergeben
und soll dann aus dieser procedure an das OnEventChange in der HauptAnwendung weitergeleitet werden.
gruss