Cocoa: improve Direction in TUpDown #41792

This commit is contained in:
rich2014 2025-08-09 18:49:29 +08:00
parent 7cdf29515d
commit 06df910f7f
2 changed files with 47 additions and 10 deletions

View File

@ -143,25 +143,59 @@ end;
procedure TCocoaStepper.stepperAction(sender: NSObject); procedure TCocoaStepper.stepperAction(sender: NSObject);
var var
newval : Double;
allowChange : Boolean; allowChange : Boolean;
updownpress : Boolean; updownpress : Boolean;
function upOrDownWithoutWrap: Boolean;
begin
if self.doubleValue > self.lastValue then begin
Result:= True;
end else if self.doubleValue > self.lastValue then begin
Result:= False;
end else begin
if self.doubleValue = self.maxValue then
Result:= True
else
Result:= False;
end;
end;
function upOrDownWithWrap: Boolean;
begin
if (self.doubleValue=self.minValue) and (self.lastValue=self.maxValue) then
Result:= True
else if (self.doubleValue=self.maxValue) and (self.lastValue=self.minValue) then
Result:= False
else if self.doubleValue > self.lastValue then
Result:= True
else
Result:= False;
end;
function upOrDown: Boolean;
begin
if self.valueWraps then
Result:= upOrDownWithWrap
else
Result:= upOrDownWithoutWrap;
end;
begin begin
newval := doubleValue; allowChange:= true;
allowChange := true; updownpress:= upOrDown;
updownpress := newval > lastValue;
if Assigned(callback) then begin if Assigned(callback) then begin
callback.BeforeChange(allowChange); callback.BeforeChange( allowChange );
callback.Change(newval, updownpress, allowChange); callback.Change(self.doubleValue, updownpress, allowChange);
end; end;
if not allowChange then if not allowChange then
setDoubleValue(lastValue) setDoubleValue( self.lastValue )
else else
lastValue := doubleValue; self.lastValue:= doubleValue;
if Allowchange and Assigned(callback) then callback.UpdownClick(updownpress); if allowChange and Assigned(callback) then
callback.UpdownClick( updownpress );
end; end;
procedure TCocoaStepper.mouseDown(event: NSEvent); procedure TCocoaStepper.mouseDown(event: NSEvent);

View File

@ -221,7 +221,10 @@ begin
//lResult.setControlSize(NSSmallControlSize); //lResult.setControlSize(NSSmallControlSize);
lResult.setTarget(lResult); lResult.setTarget(lResult);
lResult.setAction(objcselector('stepperAction:')); lResult.setAction(objcselector('stepperAction:'));
lResult.setMinValue( 0 );
lResult.setMaxValue( 100 );
lResult.setValueWraps( False );
lResult.setAutorepeat( True );
end; end;
Result := TLCLHandle(lResult); Result := TLCLHandle(lResult);
end; end;