Firemonkey TSpinBox высота - PullRequest
0 голосов
/ 01 мая 2020

Я использую C ++ Builder 10.3, и мое приложение предназначено для Android, . Обратите внимание, я очень плохо знаком с C ++ Builder

Я пытаюсь изменить размер шрифта и высота TSpinBox, но я не могу изменить высоту.

Я попытался наилучшим образом перенести следующее Delphi решение
Firemonkey TEdit высота , но без радости и Я проиграл. AdjustFixedSize объявлен закрытым, я не думаю, что он был переопределен, я также попытался создать установщик и вызвать его, но снова я не смог заставить его работать. Самая большая проблема, с которой я столкнулся, - это отсутствие знаний C ++ Builder.

Заголовок

class TMySpinBox : public TSpinBox{

public:
protected:
virtual void AdjustFixedSize(const TControl Ref) ;

};

CPP

TMySpinBox::TMySpinBox() : TSpinBox(0){};
void TMySpinBox::AdjustFixedSize(const TControl Ref){
  SetAdjustType(TAdjustType::None);

Код

TMySpinBox* SpinBox1 = new TMySpinBox();

SpinBox1->ControlType=TControlType::Platform;
SpinBox1->Parent=Panel1->Parent;
SpinBox1->Position->Y=16.0;
SpinBox1->Position->X=16.0;
SpinBox1->Min=2;
SpinBox1->Max=99;
SpinBox1->Font->Size=48;
SpinBox1->Visible=true;
SpinBox1->Value=2;

SpinBox1->Align=TAlignLayout::None;
SpinBox1->Height=100;
Width=100;

1 Ответ

0 голосов
/ 06 мая 2020

Я попробовал и переместил несколько вещей - в основном в конструктор настроенных TSpinBox. Я пропустил, используя AdjustFixedSize, поскольку это не кажется необходимым.

myspinbox.h

#ifndef myspinboxH
#define myspinboxH
//---------------------------------------------------------------------------
#include <FMX.SpinBox.hpp>

class TMySpinBox : public TSpinBox {
protected:
    // The correct signature but commented out since I didn't use it:
    //void __fastcall AdjustFixedSize(TControl* const ReferenceControl) override;
public:
    // C++ Builder constructors can be virtual and override which is not
    // standard C++. This is afaik only important if you make a custom component
    // to integrate with the IDE to support streaming it, but I'll make it
    // virtual anyway.

    // This component sets Owner and Parent to the same component. You can change that if
    // you'd like to keep them separate.
    virtual __fastcall TMySpinBox(Fmx::Types::TFmxObject* OwnerAndParent);
};

#endif

myspinbox. cpp

#pragma hdrstop

#include "myspinbox.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)

__fastcall TMySpinBox::TMySpinBox(Fmx::Types::TFmxObject* OwnerAndParent) :
    TSpinBox(OwnerAndParent) // set owner
{
    // set properties
    this->Parent = OwnerAndParent;

    this->Position->Y = 16.0;
    this->Position->X = 16.0;
    this->Min = 2;
    this->Max = 99;
    this->Value = this->Min;

    this->Height = 100;
    this->Width = 100;

    // Remove the styled setting for Size to enable setting our own font size
    this->StyledSettings >>= Fmx::Types::TStyledSetting::Size;

    this->Font->Size = 48;
}

Код

// Let Panel1 own and contain the spinbox and destroy it when it itself is destroyed

TMySpinBox* SpinBox1 = new TMySpinBox(Panel1);

Отказ от ответственности: проверено только на Windows

...