У компоненты TcxSpinEdit нет возможности простым путём менять размеры кнопок.
Благодаря подсказке из
этой темы на форуме sql.ru удалось решить проблему.
Вот как можно увеличить (изменить) размер кнопок у компоненты TcxSpinEditДобавляем в проект новый модуль, вот его код.
unit uSpinEditHack;
interface
uses
cxEdit, cxSpinEdit, cxGraphics, Windows, Classes;
// этот модуль должен быть последним в верхнем списке USES
type
TMySpinEditViewData = class(TcxSpinEditViewData)
protected
procedure CalculateButtonsBounds(ACanvas: TcxCanvas; AViewInfo: TcxCustomEditViewInfo; var ButtonsRect: TRect); override;
end;
TMySpinEditProperties = class(TcxSpinEditProperties)
public
class function GetViewDataClass: TcxCustomEditViewDataClass; override;
end;
TMySpinEdit = class(TcxSpinEdit)
public
class function GetPropertiesClass: TcxCustomEditPropertiesClass; override;
end;
TcxSpinEdit = class(TMySpinEdit);
implementation
uses
uShares;
{ TMySpinEdit }
class function TMySpinEdit.GetPropertiesClass: TcxCustomEditPropertiesClass;
begin
Result := TMySpinEditProperties;
end;
{ TMySpinEditProperties }
class function TMySpinEditProperties.GetViewDataClass: TcxCustomEditViewDataClass;
begin
Result := TMySpinEditViewData;
end;
{ TMycxSpinEditViewData }
procedure TMySpinEditViewData.CalculateButtonsBounds(ACanvas: TcxCanvas;
AViewInfo: TcxCustomEditViewInfo; var ButtonsRect: TRect);
begin
with AViewInfo.ButtonsInfo[cxSpinForwardButtonIndex] do
begin
Bounds := Rect(ButtonsRect.Right - uShares.iSpinEditButtonSize , ButtonsRect.Top, ButtonsRect.Right, ButtonsRect.Bottom);
ButtonsRect.Right := Bounds.Left + 200;
end;
with AViewInfo.ButtonsInfo[cxSpinBackwardButtonIndex] do
begin
Bounds := Rect(ButtonsRect.Left, ButtonsRect.Top, ButtonsRect.Left + uShares.iSpinEditButtonSize, ButtonsRect.Bottom);
ButtonsRect.Left := Bounds.Right - 200;
end;
end;
end.
{iSpinEditButtonSize - это глобальная переменная, а где-то в другой форме меняем размер кнопок и присваиваем его этой переменной}
Теперь достаточно включить в USES (верхний, в тот, что в секции interface) этот модуль и размеры кнопок можно менять. только этот модуль (uSpinEditHack) должен быть последним в списке.
Ссылка на источник
https://www.devexpress.com/Support/Center/Question/Details/Q580764Если без хака, то работают такие странные условия.
Если менять значение всех четырёх кнопок, то изменение размера кнопок работает работает
cxSpinEdit1.Properties.Buttons[0].Width := 42;
cxSpinEdit1.Properties.Buttons[1].Width := 42;
если только двух, то не работает.
Есть зависимость размера кнопок от размера самой компоненты cxSpinEdit. Т.е. больше какого-то определённого значения размер кнопок не установить. Т.е. нужно отключить AutoSize, сделать высоту компоненты огромной и только тогда можно делать размеры кнопок побольше.