Class TCastleButton

Unit

Declaration

type TCastleButton = class(TCastleUserInterfaceFont)

Description

Clickable button.

This is TCastleUserInterface descendant, so to use it just add it to the TCastleWindow.Controls or TCastleControl.Controls list. You will also usually want to adjust position (TCastleButton.Left, TCastleButton.Bottom), TCastleButton.Caption, and assign TCastleButton.OnClick (or ovevrride TCastleButton.DoClick).

Hierarchy

Overview

Fields

Public nested const DefaultImageMargin = 10;
Public nested const DefaultPaddingHorizontal = 10;
Public nested const DefaultPaddingVertical = 10;
Public nested const DefaultLineSpacing = 2;
Public nested const DefaultTextAlignment = hpMiddle;

Methods

Protected procedure SetPressed(const Value: boolean); virtual;
Protected procedure UIScaleChanged; override;
Protected procedure PreferredSize(var PreferredWidth, PreferredHeight: Single); override;
Protected function GetInternalText: String; override;
Protected procedure SetInternalText(const Value: String); override;
Protected procedure TranslateProperties(const TranslatePropertyEvent: TTranslatePropertyEvent); override;
Public constructor Create(AOwner: TComponent); override;
Public destructor Destroy; override;
Public procedure Render; override;
Public function Press(const Event: TInputPressRelease): boolean; override;
Public function Release(const Event: TInputPressRelease): boolean; override;
Public function Motion(const Event: TInputMotion): boolean; override;
Public procedure FontChanged; override;
Public procedure Update(const SecondsPassed: Single; var HandleInput: boolean); override;
Public procedure VisibleChange(const Changes: TCastleUserInterfaceChanges; const ChangeInitiatedByChildren: boolean = false); override;
Public procedure EditorAllowResize(out ResizeWidth, ResizeHeight: Boolean; out Reason: String); override;
Public function PropertySections(const PropertyName: String): TPropertySections; override;
Public procedure DoClick; virtual;
Public procedure SetFocused(const Value: boolean); override;

Properties

Public property TintPressed : TCastleColor read FTintPressed write FTintPressed;
Public property TintDisabled: TCastleColor read FTintDisabled write FTintDisabled;
Public property TintFocused : TCastleColor read FTintFocused write FTintFocused;
Public property TintNormal : TCastleColor read FTintNormal write FTintNormal;
Public property CustomTextColor: TCastleColor read FCustomTextColor write FCustomTextColor;
Public property CustomColorPressed: TCastleColor read FCustomColorPressed write SetCustomColorPressed;
Public property CustomColorDisabled: TCastleColor read FCustomColorDisabled write SetCustomColorDisabled;
Public property CustomColorFocused: TCastleColor read FCustomColorFocused write SetCustomColorFocused;
Public property CustomColorNormal: TCastleColor read FCustomColorNormal write SetCustomColorNormal;
Published property MinImageWidth: Single read FMinImageWidth write FMinImageWidth default 0;
Published property MinImageHeight: Single read FMinImageHeight write FMinImageHeight default 0;
Published property TextAlignment: THorizontalPosition read FTextAlignment write SetTextAlignment default DefaultTextAlignment;
Published property Alignment: THorizontalPosition read FAlignment write SetAlignment default hpMiddle;
Published property VerticalAlignment: TVerticalPosition read FVerticalAlignment write SetVerticalAlignment default vpMiddle;
Published property LineSpacing: Single read FLineSpacing write SetLineSpacing default DefaultLineSpacing;
Published property Html: boolean read FHtml write SetHtml default false;
Published property CustomBackground: boolean read FCustomBackground write FCustomBackground default false;
Published property Image: TCastleImagePersistent read FImage;
Published property ImageScale: Single read FImageScale write SetImageScale default 1.0;
Published property CustomBackgroundPressed: TCastleImagePersistent read FCustomBackgroundPressed;
Published property CustomBackgroundDisabled: TCastleImagePersistent read FCustomBackgroundDisabled;
Published property CustomBackgroundFocused: TCastleImagePersistent read FCustomBackgroundFocused;
Published property CustomBackgroundNormal: TCastleImagePersistent read FCustomBackgroundNormal;
Published property CustomTextColorUse: boolean read FCustomTextColorUse write FCustomTextColorUse default false;
Published property PaddingHorizontal: Single read FPaddingHorizontal write SetPaddingHorizontal default DefaultPaddingHorizontal;
Published property PaddingVertical: Single read FPaddingVertical write SetPaddingVertical default DefaultPaddingVertical;
Published property AutoSize: boolean read FAutoSize write SetAutoSize default true;
Published property AutoSizeWidth: boolean read FAutoSizeWidth write SetAutoSizeWidth default true;
Published property AutoSizeHeight: boolean read FAutoSizeHeight write SetAutoSizeHeight default true;
Published property MinWidth: Single read FMinWidth write SetMinWidth default 0;
Published property MinHeight: Single read FMinHeight write SetMinHeight default 0;
Published property OnClick: TNotifyEvent read FOnClick write FOnClick;
Published property Caption: string read FCaption write SetCaption;
Published property CaptionTranslate: Boolean read FCaptionTranslate write FCaptionTranslate default true;
Published property Toggle: boolean read FToggle write FToggle default false;
Published property Pressed: boolean read FPressed write SetPressed default false;
Published property ImageLayout: TCastleButtonImageLayout read FImageLayout write SetImageLayout default ilLeft;
Published property ImageMargin: Single read FImageMargin write SetImageMargin default DefaultImageMargin;
Published property Enabled: boolean read FEnabled write SetEnabled default true;
Published property EnableParentDragging: boolean read FEnableParentDragging write FEnableParentDragging default false;
Published property TintPressedPersistent: TCastleColorPersistent read FTintPressedPersistent ;
Published property TintDisabledPersistent: TCastleColorPersistent read FTintDisabledPersistent ;
Published property TintFocusedPersistent: TCastleColorPersistent read FTintFocusedPersistent ;
Published property TintNormalPersistent: TCastleColorPersistent read FTintNormalPersistent ;
Published property CustomTextColorPersistent: TCastleColorPersistent read FCustomTextColorPersistent ;
Published property CustomColorPressedPersistent: TCastleColorPersistent read FCustomColorPressedPersistent ;
Published property CustomColorDisabledPersistent: TCastleColorPersistent read FCustomColorDisabledPersistent ;
Published property CustomColorFocusedPersistent: TCastleColorPersistent read FCustomColorFocusedPersistent ;
Published property CustomColorNormalPersistent: TCastleColorPersistent read FCustomColorNormalPersistent ;

Description

Fields

Public nested const DefaultImageMargin = 10;

This item has no description.

Public nested const DefaultPaddingHorizontal = 10;

This item has no description.

Public nested const DefaultPaddingVertical = 10;

This item has no description.

Public nested const DefaultLineSpacing = 2;

This item has no description.

Public nested const DefaultTextAlignment = hpMiddle;

This item has no description.

Methods

Protected procedure SetPressed(const Value: boolean); virtual;

This item has no description.

Protected procedure UIScaleChanged; override;

This item has no description.

Protected procedure PreferredSize(var PreferredWidth, PreferredHeight: Single); override;

This item has no description. Showing description inherited from TCastleUserInterface.PreferredSize.

Controls that have a preferred size should override this. By default this contains values derived from Width, WidthFraction, Height, HeightFraction, with Border subtracted.

Note that the arguments should be already scaled, i.e. multiplied by UIScale, i.e. expressed in final device pixels.

Note that the returned PreferredWidth and PreferredHeight must not include the space for Border. Border size will be added later.

Protected function GetInternalText: String; override;

This item has no description.

Protected procedure SetInternalText(const Value: String); override;

This item has no description.

Protected procedure TranslateProperties(const TranslatePropertyEvent: TTranslatePropertyEvent); override;

This item has no description. Showing description inherited from TCastleComponent.TranslateProperties.

Enumerate all properties that are possible to translate in this component. E.g. in TCastleLabel it will return TCastleLabel.Caption, in TCastleEdit it will return TCastleEdit.Text and TCastleEdit.Placeholder.

Returns only non-empty properties, thus assuming that if current (by convention, English) text is empty, then there is no point in translating it. Moreover descendants may define boolean properties to exclude particular text from translating, e.g. TCastleLabel.CaptionTranslate, TCastleEdit.TextTranslate, TCastleEdit.PlaceholderTranslate.

It is not recursive (it doesn't enumerate children properties). Use global TranslateProperties procedure to call this on a hierarchy of TComponent.

You usually don't want to call this method (it is called by other engine routines). But you may find it useful to override this, if you define new component.

Public constructor Create(AOwner: TComponent); override;

This item has no description.

Public destructor Destroy; override;

This item has no description.

Public procedure Render; override;

This item has no description. Showing description inherited from TCastleUserInterface.Render.

Render a control. Called only when Exists and GLInitialized, you can depend on it in the implementation of this method.

Do not explicitly call this method. Instead, render controls by adding them to the TCastleContainer.Controls list, or render them explicitly (for off-screen rendering) by TCastleContainer.RenderControl. This is method should only be overridden in your own code.

Before calling this method we always set some OpenGL state, and you can depend on it (and you can carelessly change it, as it will be reset again before rendering other control).

OpenGL state always set:

  • Viewport is set to include whole container.

  • Depth test is off.

  • (For fixed-function pipeline:) The 2D orthographic projection is always set at the beginning. Useful for 2D controls, 3D controls can just override projection matrix, e.g. use CastleRenderContext.PerspectiveProjection.

  • (For fixed-function pipeline:) The modelview matrix is set to identity. The matrix mode is always modelview.

  • (For fixed-function pipeline:) The raster position is set to (0,0). The (deprecated) WindowPos is also set to (0,0).

  • (For fixed-function pipeline:) Texturing, lighting, fog is off.

Beware that GLSL RenderContext.CurrentProgram has undefined value when this is called. You should always set it, before making direct OpenGL drawing calls (all the engine drawing routines of course do it already, this is only a concern if you make direct OpenGL / OpenGLES calls).

Public function Press(const Event: TInputPressRelease): boolean; override;

This item has no description. Showing description inherited from TCastleUserInterface.Press.

Handle press or release of a key, mouse button or mouse wheel. Return True if the event was somehow handled, which prevents from passing this event to other UI controls.

When implementing in descendants it is best to override it like this:

function TMyControl.Press(const Event: TInputPressRelease): boolean;
begin
  Result := inherited;
  if Result then Exit; // exit if ancestor already handled event

  if Event.IsKey(keyEnter) then
  begin
    // do something in reaction on Enter
    Exit(ExclusiveEvents); // ExclusiveEvents is true by default
  end;

  if Event.IsMouseButton(buttonLeft) then
  begin
    // do something in reaction on Enter
    Exit(ExclusiveEvents); // ExclusiveEvents is true by default
  end;
end;

Note that releasing of the mouse wheel is not reported now by any backend. Only releasing of keys and mouse buttons is reported.

The events PreviewPress and PreviewRelease are passed first to the parent control, before children have a chance to process this event. Overriding them makes sense if you draw something in TCastleUserInterface.RenderOverChildren.

The events Press and Release are passed to the parent only after the children had a chance to process this event. Overriding them makes sense if you draw something in TCastleUserInterface.Render. This is usually more natural, and adviced.

Public function Release(const Event: TInputPressRelease): boolean; override;

This item has no description.

Public function Motion(const Event: TInputMotion): boolean; override;

This item has no description. Showing description inherited from TCastleUserInterface.Motion.

Motion of mouse or touch.

Public procedure FontChanged; override;

This item has no description. Showing description inherited from TCastleUserInterfaceFont.FontChanged.

Force considering font changed (font instance, or glyphs, or sizes changed).

Usually, you don't need to call this explicitly from the outside. Changing font, like CustomFont or TCastleContainer.DefaultFont or UIFont, or any property that may affect the font is automatically applied.

But there are exceptions: right now, if you call Load on a font, it's measurements will change but some controls using it will not recalculate sizes automatically. In this case, call this method.

Public procedure Update(const SecondsPassed: Single; var HandleInput: boolean); override;

This item has no description. Showing description inherited from TCastleUserInterface.Update.

Control may do here anything that must be continuously repeated. E.g. camera handles here falling down due to gravity, rotating model in Examine mode, and many more.

This method may be used, among many other things, to continuously react to the fact that user pressed some key (or mouse button). For example, if holding some key should move some 3D object, you should do something like:

if HandleInput then
begin
  if Container.Pressed[keyArrowRight] then
    Transform.Position := Transform.Position + Vector3(SecondsPassed * 10, 0, 0);
  HandleInput := not ExclusiveEvents;
end;

Instead of directly using a key code, consider also using TInputShortcut that makes the input key nicely configurable. See engine tutorial about handling inputs.

Multiplying movement by SecondsPassed makes your operation frame-rate independent. Object will move by 10 units in a second, regardless of how many FPS your game has.

The code related to HandleInput is important if you write a generally-useful control that should nicely cooperate with all other controls, even when placed on top of them or under them. The correct approach is to only look at pressed keys/mouse buttons if HandleInput is True. Moreover, if you did check that HandleInput is True, and you did actually handle some keys, then you have to set HandleInput := not ExclusiveEvents. As ExclusiveEvents is True in normal circumstances, this will prevent the other controls (behind the current control) from handling the keys (they will get HandleInput = False). And this is important to avoid doubly-processing the same key press, e.g. if two controls react to the same key, only the one on top should process it.

Note that to handle a single press / release (like "switch light on when pressing a key") you should rather use Press and Release methods. Use this method only for continuous handling (like "holding this key makes the light brighter and brighter").

To understand why such HandleInput approach is needed, realize that the "Update" events are called differently than simple mouse and key events like "Press" and "Release". "Press" and "Release" events return whether the event was somehow "handled", and the container passes them only to the controls under the mouse (decided by TCastleUserInterface.CapturesEventsAtPosition). And as soon as some control says it "handled" the event, other controls (even if under the mouse) will not receive the event.

This approach is not suitable for Update events. Some controls need to do the Update job all the time, regardless of whether the control is under the mouse and regardless of what other controls already did. So all controls (well, all controls that exist, in case of TCastleUserInterface, see TCastleUserInterface.Exists) receive Update calls.

So the "handled" status is passed through HandleInput. If a control is not under the mouse, it will receive HandleInput = False. If a control is under the mouse, it will receive HandleInput = True as long as no other control on top of it didn't already change it to False.

Public procedure VisibleChange(const Changes: TCastleUserInterfaceChanges; const ChangeInitiatedByChildren: boolean = false); override;

This item has no description. Showing description inherited from TCastleUserInterface.VisibleChange.

Called always when something important inside this control (or it's children) changed. To be more precise, this is called when something mentioned among the TCastleUserInterfaceChange enumerated items changed.

This is always called with Changes <> [] (non-empty set).

Public procedure EditorAllowResize(out ResizeWidth, ResizeHeight: Boolean; out Reason: String); override;

This item has no description. Showing description inherited from TCastleUserInterface.EditorAllowResize.

Override this to prevent resizing some dimension in CGE editor.

Public function PropertySections(const PropertyName: String): TPropertySections; override;

This item has no description. Showing description inherited from TCastleComponent.PropertySections.

Section where to show property in the editor.

Public procedure DoClick; virtual;

Called when user clicks the button. In this class, simply calls OnClick callback.

Public procedure SetFocused(const Value: boolean); override;

This item has no description. Showing description inherited from TCastleUserInterface.SetFocused.

Called when this control becomes or stops being focused, that is: under the mouse cursor and will receive events.

This updates Focused property. This also calls OnInternalMouseEnter / OnInternalMouseLeave.

Properties

Public property TintPressed : TCastleColor read FTintPressed write FTintPressed;

Color tint when button is pressed (regardless if enabled or disabled). Opaque white by default.

Public property TintDisabled: TCastleColor read FTintDisabled write FTintDisabled;

Color tint when button is disabled (and not pressed). Opaque white by default.

Public property TintFocused : TCastleColor read FTintFocused write FTintFocused;

Color tint when button is focused. Opaque white by default.

Public property TintNormal : TCastleColor read FTintNormal write FTintNormal;

Color tint when button is enabled, but neither pressed nor focused. Opaque white by default.

Public property CustomTextColor: TCastleColor read FCustomTextColor write FCustomTextColor;

Text color to use if CustomTextColorUse is True. Black by default, just like Theme.TextColor.

Public property CustomColorPressed: TCastleColor read FCustomColorPressed write SetCustomColorPressed;

Button colors used when CustomBackground is True, but CustomBackgroundXxx images (like CustomBackgroundNormal) are left empty.

By default they are all transparent black, so actually the button is completely transparent in this case.

They are affected by tint (see TintPressed, TintDisabled, TintFocused, TintNormal). The tint color is simply multiplied component-wise with these colors. By default all tint colors are opaque white, so the multiplication by tint actually doesn't change anything.

Public property CustomColorDisabled: TCastleColor read FCustomColorDisabled write SetCustomColorDisabled;

This item has no description.

Public property CustomColorFocused: TCastleColor read FCustomColorFocused write SetCustomColorFocused;

This item has no description.

Public property CustomColorNormal: TCastleColor read FCustomColorNormal write SetCustomColorNormal;

This item has no description.

Published property MinImageWidth: Single read FMinImageWidth write FMinImageWidth default 0;

Auto-size routines (see AutoSize) may treat the image like always having at least these minimal sizes. Even if the Image is empty (Nil). This is useful when you have a row of buttons (typical for toolbar), and you want them to have the same height, and their captions to be displayed at the same level, regardless of their images sizes.

Published property MinImageHeight: Single read FMinImageHeight write FMinImageHeight default 0;

This item has no description.

Published property TextAlignment: THorizontalPosition read FTextAlignment write SetTextAlignment default DefaultTextAlignment;

For multi-line Caption, the horizontal alignment of the lines.

Published property Alignment: THorizontalPosition read FAlignment write SetAlignment default hpMiddle;

Horizontal alignment of the text+image within button area, useful in case you don't use AutoSize.

We align text+image within the available area inside the button (which is determined by button size, without paddings determined by PaddingHorizontal, PaddingVertical).

Published property VerticalAlignment: TVerticalPosition read FVerticalAlignment write SetVerticalAlignment default vpMiddle;

Vertical alignment of the text+image within button area, useful in case you don't use AutoSize.

We align text+image within the available area inside the button (which is determined by button size, without paddings determined by PaddingHorizontal, PaddingVertical).

Published property LineSpacing: Single read FLineSpacing write SetLineSpacing default DefaultLineSpacing;

For multi-line Caption, the extra spacing between lines. May also be negative to squeeze lines tighter.

Published property Html: boolean read FHtml write SetHtml default false;

Enable HTML tags in the Caption. This allows to easily change colors or use bold, italic text.

See the example examples/fonts/html_text.lpr and examples/fonts/html_text_demo.html for a demo of what HTML tags can do. See TCastleAbstractFont.PrintStrings documentation for a list of support HTML markup.

Note that to see the bold/italic font variants in the HTML markup, you need to set the font to be TCastleFontFamily with bold/italic variants. See the example mentioned above, examples/fonts/html_text.lpr, for a code how to do it.

Published property CustomBackground: boolean read FCustomBackground write FCustomBackground default false;

Use custom background images. If True, we use properties

They are affected by tint (see TintPressed, TintDisabled, TintFocused, TintNormal).

Published property Image: TCastleImagePersistent read FImage;

Optional image displayed on the button.

Published property ImageScale: Single read FImageScale write SetImageScale default 1.0;

Scaling of Image.

Published property CustomBackgroundPressed: TCastleImagePersistent read FCustomBackgroundPressed;

Background image on the pressed button. See CustomBackground for details.

Published property CustomBackgroundDisabled: TCastleImagePersistent read FCustomBackgroundDisabled;

Background image on the disabled button. See CustomBackground for details.

Published property CustomBackgroundFocused: TCastleImagePersistent read FCustomBackgroundFocused;

Background image on the focused button. See CustomBackground for details.

Published property CustomBackgroundNormal: TCastleImagePersistent read FCustomBackgroundNormal;

Background image on the normal button. See CustomBackground for details.

Published property CustomTextColorUse: boolean read FCustomTextColorUse write FCustomTextColorUse default false;

Should we use custom text color in CustomTextColor instead of Theme.TextColor or Theme.DisabledTextColor.

Published property PaddingHorizontal: Single read FPaddingHorizontal write SetPaddingHorizontal default DefaultPaddingHorizontal;

Horizontal distance between text or Image and the button border.

Published property PaddingVertical: Single read FPaddingVertical write SetPaddingVertical default DefaultPaddingVertical;

Vertical distance between text or Image and the button border.

Published property AutoSize: boolean read FAutoSize write SetAutoSize default true;

When AutoSize is True (the default) then button sizes are automatically calculated when you change the Caption and Image. The calculated size takes into account the Caption text size (with current font), and Image size, plus some margin to make it look nice.

Width is auto-calculated only when AutoSize and AutoSizeWidth (otherwise we use Width, WidthFraction and similar properties). Likewise, Height is calculated only when AutoSize and AutoSizeHeight (otherwise we use Height, HeightFraction and similar properties). This way you can turn off auto-sizing in only one dimension if you want (and when you don't need such flexibility, leave AutoSizeWidth = AutoSizeHeight = True and control both by simple AutoSize).

If needed, you can query the resulting button size with the standard TCastleUserInterface methods like TCastleUserInterface.EffectiveWidth and TCastleUserInterface.EffectiveHeight. Note that they may not be available before the button is actually added to the container, and the container size is initialized (we need to know the size of container, for UI scaling to determine the font size).

Published property AutoSizeWidth: boolean read FAutoSizeWidth write SetAutoSizeWidth default true;

This item has no description.

Published property AutoSizeHeight: boolean read FAutoSizeHeight write SetAutoSizeHeight default true;

This item has no description.

Published property MinWidth: Single read FMinWidth write SetMinWidth default 0;

When auto-size is in effect, these properties may force a minimal width/height of the button. This is useful if you want to use auto-size (to make sure that the content fits inside), but you want to force filling some space.

Published property MinHeight: Single read FMinHeight write SetMinHeight default 0;

This item has no description.

Published property OnClick: TNotifyEvent read FOnClick write FOnClick;

This item has no description.

Published property Caption: string read FCaption write SetCaption;

Caption to display on the button. The text may be multiline (use the LineEnding or NL constants to mark newlines).

Published property CaptionTranslate: Boolean read FCaptionTranslate write FCaptionTranslate default true;

Should the Caption be localized (translated into other languages). Determines if the property is enumerated by TCastleComponent.TranslateProperties, which affects the rest of localization routines.

Published property Toggle: boolean read FToggle write FToggle default false;

Can the button be permanently pressed. Good for making a button behave like a checkbox, that is indicate a boolean state. When Toggle is True, you can set the Pressed property, and the clicks are visualized a little differently.

Published property Pressed: boolean read FPressed write SetPressed default false;

Is the button pressed down. If Toggle is True, you can read and write this property to set the pressed state.

When not Toggle, this property isn't really useful to you. The pressed state is automatically managed then to visualize user clicks. In this case, you can read this property, but you cannot reliably set it.

Published property ImageLayout: TCastleButtonImageLayout read FImageLayout write SetImageLayout default ilLeft;

Where the Image is drawn on a button.

Published property ImageMargin: Single read FImageMargin write SetImageMargin default DefaultImageMargin;

Distance between text and Image. Unused if Image not set.

Published property Enabled: boolean read FEnabled write SetEnabled default true;

Enabled button can be focused and clicked, is not grayed-out.

Published property EnableParentDragging: boolean read FEnableParentDragging write FEnableParentDragging default false;

Enable to drag a parent control, for example to drag a TCastleScrollView that contains this button. To do this, you need to turn on TCastleScrollView.EnableDragging, and set EnableParentDragging=True on all buttons inside. In effect, buttons will cancel the click operation once you start dragging, which allows the parent to handle all the motion events for dragging.

Published property TintPressedPersistent: TCastleColorPersistent read FTintPressedPersistent ;

TintPressed that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write TintPressed directly.

See also
TintPressed
Color tint when button is pressed (regardless if enabled or disabled).
Published property TintDisabledPersistent: TCastleColorPersistent read FTintDisabledPersistent ;

TintDisabled that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write TintDisabled directly.

See also
TintDisabled
Color tint when button is disabled (and not pressed).
Published property TintFocusedPersistent: TCastleColorPersistent read FTintFocusedPersistent ;

TintFocused that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write TintFocused directly.

See also
TintFocused
Color tint when button is focused.
Published property TintNormalPersistent: TCastleColorPersistent read FTintNormalPersistent ;

TintNormal that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write TintNormal directly.

See also
TintNormal
Color tint when button is enabled, but neither pressed nor focused.
Published property CustomTextColorPersistent: TCastleColorPersistent read FCustomTextColorPersistent ;

CustomTextColor that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write CustomTextColor directly.

See also
CustomTextColor
Text color to use if CustomTextColorUse is True.
Published property CustomColorPressedPersistent: TCastleColorPersistent read FCustomColorPressedPersistent ;

CustomColorPressed that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write CustomColorPressed directly.

See also
CustomColorPressed
Button colors used when CustomBackground is True, but CustomBackgroundXxx images (like CustomBackgroundNormal) are left empty.
Published property CustomColorDisabledPersistent: TCastleColorPersistent read FCustomColorDisabledPersistent ;

CustomColorDisabled that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write CustomColorDisabled directly.

See also
CustomColorDisabled
Published property CustomColorFocusedPersistent: TCastleColorPersistent read FCustomColorFocusedPersistent ;

CustomColorFocused that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write CustomColorFocused directly.

See also
CustomColorFocused
Published property CustomColorNormalPersistent: TCastleColorPersistent read FCustomColorNormalPersistent ;

CustomColorNormal that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write CustomColorNormal directly.

See also
CustomColorNormal

Generated by PasDoc 0.16.0.