ich weiß der beitrag ist schon etwas älter aber, erst jetzt habe ich alles hinbekommen wie es sollte bis auf eins und zwar das nur wenn ich drüke der balken mit der maus verschoben wird...
das hauptproblem ist warscheinlich das ich nur mit windows nachrichten arbeite also nicht onMouseMouse oder so sondern WM_MOUSEMOUVE das problem ist jetzt einfach der balken soll nur verschoben werden wen ich klick und ich dachte das könnte so funktionieren:
Delphi-Quellcode:
case message.msg of
WM_MOUSEMOVE: begin
GetKeyboardState(Keyboard);
Shift := KeyboardStateToShiftState(Keyboard);
mx:=( Message.lParam and $FFFF);
mY:=((Message.lParam shr 16) and $FFFF);
// mY:=mY-posy;
issel:=ScrollBL.GetSel(mx,my);
if (ssleft in shift) and (issel = True) then begin
issel:=True;
mY:=mY-posy;
m:=0;
if ry - sh >=0then m:=sh;
index1:=((items.Count-displaycount) * my) div ry-m;
// if index1 = -1 then index1:=0;
if (index1 >=0) and (index1+getm<=items.count-1) then
Gruppenindex:=index1;
draw;
end
die funktion GetSel funktioniert !!! dort ist folgender code:
[delphi]
function TMycaption.GetSel(x,y:Integer):boolean;
var
px,py:Integer;
begin
if self <> NIL then begin
// if x > -1 then
// px:=x
// else
px:=fpos.x;
// if y > -1 then
// py:=y
// else
py:=fpos.y;
issel:=PtInRect(Rect(px,py, px+fsize.x,py+fsize.y),Point(x,y));
result:=isSel;
end;
end; // getSel
/delphi]
das scrollen geht inzwischen prima mit mit gedrückter maustaste und auch per tastertur....
(Nochmals vielen dank für dein tip mit dem scrollen: Gandalfus)
seit taten probiere ich es hinzubekommen !!