Перейти к содержанию
Fire Monkey от А до Я
  • 0

SpinBox не отображается в TColumn


Razmir

Вопрос

Всем доброго, вопрос такой.

RAD Studio 11.2 Нашел как создать свой тип ячейки таким образом:

 

type
  TSpinBoxCell = class(TSpinBox)
  private
...............................
  protected
    constructor Create(AOwner: TComponent); override;
  end;
 
...............................
 
constructor TSpinBoxCell.Create(AOwner: TComponent);
begin
  inherited;
...............................
end;
 
procedure TForm1.StringGrid1CreateCustomEditor(Sender: TObject;
  const Column: TColumn; var Control: TStyledControl);
var
  XSpin: TSpinbox;
begin
  if Column.Index=5
  then 
  begin
    XSpin:= TSpinBoxCell.Create(nil);
    XSpin.TagObject := Column;
    XSpin.text:='1';
    Control := XSpin;
  end;
end;

 

Проблема в том, что spinbox не отображается пока не кликнешь по ячейке 2 раза, ну и после перехода на другую ячеку он опять исчезает и соответственно не видно результата. Что надо сделать, чтобы это исправить? Заранее благодарю.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
type
 TSpinBoxEx=class(TSpinBox)
 protected
   procedure SetData(const Value: TValue); override;
 end;

{ TSpinBoxEx }

procedure TSpinBoxEx.SetData(const Value: TValue);
begin
  if Value.IsType<string> then
   Self.Value := StrToFloatDef(Value.AsString,0)
  else
    inherited SetData(Value);
end;

procedure TForm1.StringGrid1CreateCustomEditor(Sender: TObject; const Column: TColumn; var Control: TStyledControl);
begin
  if Column.Index=1 then
    Control:=TSpinBoxEx.Create(self);
end;

 

Ссылка на комментарий
  • 0
37 минут назад, Slym сказал:
type
 TSpinBoxEx=class(TSpinBox)
 protected
   procedure SetData(const Value: TValue); override;
 end;

{ TSpinBoxEx }

procedure TSpinBoxEx.SetData(const Value: TValue);
begin
  if Value.IsType<string> then
   Self.Value := StrToFloatDef(Value.AsString,0)
  else
    inherited SetData(Value);
end;

procedure TForm1.StringGrid1CreateCustomEditor(Sender: TObject; const Column: TColumn; var Control: TStyledControl);
begin
  if Column.Index=1 then
    Control:=TSpinBoxEx.Create(self);
end;

 

Спасибо, но ровно то же самое, появляется только после 2х кликов

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...