Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#12

AW: Interface .. onchange onscroll

  Alt 25. Jul 2012, 20:52
Muss das Thema nochmal aufgreifen.

Zitat:
Na dann häng doch der Klasse noch ein weiteres Interface an und caste dahin.
Wie kann ich das verwirklichen ist mir nicht klar wie ich das machen soll.

Die ScrollBar ist fertig und die Listbox Flickerfrei beim Scrollen. Mein neues problem ist das wenn ich nun
zwei listboxen erstelle und diesen eine Scrollbar zuweise das die Callback auf beide Listboxen reagiert
und ich diese nicht auseinander halten kann.

Bekomme das irgendwie nicht gebacken.

Aktueller Status sieht so aus.

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 GetEnabled: BOOL;
    procedure SetEnabled(Value: BOOL);
    function GetVisible: BOOL;
    procedure SetVisible(Value: BOOL);
    function GetVal: single;
    procedure SetScrollBarCallBack(callback: SCROLLSTATE_CALLBACK); stdcall;
  end;

  TSkinScrollBar = class(TInterfacedPersistent, ISkinScrollBar)
  private
    FHScrollBar: HWND;
    ImgW, ImgH: cardinal;
    Style: DWORD;
    FLargeChange: single;
    FSmallChange: single;
    FDownSelectedFrame: Integer;
    FUPSelectedFrame: Integer;
    FThumbSelectedFrame: Integer;
    FMinVal: single;
    FMaxVal: single;
    FEnabled: BOOL;
    FVisible: BOOL;
    FVal: single;
    FBackgroundHeight: single;
    function GetHandle: hWnd;
    function GetLargeChange: single;
    function GetSmallChange: single;
    function GetMinVal: single;
    function GetMaxVal: single;
    function GetVal: single;
    function GetEnabled: BOOL;
    function GetVisible: BOOL;
    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 SetEnabled(Value: BOOL);
    procedure SetVisible(Value: BOOL);
    procedure CalculateThumbBarTop;
    procedure SetThumbBarHeight;
    procedure DrawBasicScrollBar;
    procedure PaintBar(FramePos: integer = 1);
    function ScrollBarProc(WinHandle: HWND; Msg: UINT; wP: WParam;
      lP: LParam): LRESULT; stdcall;
    function IsMouseOver(WinHandle: HWND): BOOL;
    function CheckValidPosition: BOOL;
    procedure ClientWndProc(var Message: TMessage);
    procedure OnMouseDown(WinHandle: HWND; Button: integer; x, y: integer);
    procedure onMouseUp(WinHandle: HWND; Button: integer; x, y: integer);
    procedure onMouseMove(WinHandle: HWND; Button: integer; x, y: integer);
    procedure DrawUPButton(FramePos: integer = 1);
    procedure DrawDownButton(FramePos: integer = 1);
    procedure SetScrollBarCallBack(callback: SCROLLSTATE_CALLBACK); stdcall;
    procedure RemoveScrollBarCallback; stdcall;
    procedure UpdateLastPosition;
    procedure ResizeWindow(WinHandle: HWND);
  public
    property Handle: HWND Read FHScrollBar;
    constructor Create(hOwner: HWND; PageImg, DownImg, UpImg, ThumpImg: WideString;
      x, y, yH, CtrlID, StateMax: integer);

    destructor Destroy; override;
  end;


gruss
  Mit Zitat antworten Zitat