Macos OSX优胜美地和XE7 Firemonkey

Macos OSX优胜美地和XE7 Firemonkey,macos,firemonkey,readonly,locked,Macos,Firemonkey,Readonly,Locked,有人能告诉我如何在OSX firemonkey应用程序中,在C++Builder(或Delphi)XE7中使TTrackBar对象只读吗? 我尝试了“锁定”属性,但它似乎不起作用 干杯 dodo将启用属性设置为假锁定锁定轨迹栏在设计器中的位置,这样您就不会意外移动它。由于您的其他要求,这里还有另一个答案。没有“readonly”属性可使轨迹栏保持启用状态 您可以只使用TrackBar.OnChange事件,并在用户尝试更改时重置该值: procedure TForm1.TrackBar1Chan

有人能告诉我如何在OSX firemonkey应用程序中,在C++Builder(或Delphi)XE7中使TTrackBar对象只读吗? 我尝试了“锁定”属性,但它似乎不起作用

干杯


dodo

启用
属性设置为
<代码>锁定锁定轨迹栏在设计器中的位置,这样您就不会意外移动它。

由于您的其他要求,这里还有另一个答案。没有“readonly”属性可使轨迹栏保持启用状态

您可以只使用TrackBar.OnChange事件,并在用户尝试更改时重置该值:

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  TrackBar1.Value := 50;
end;
一种更高级的方法是使用观察者来获得真正的只读轨迹栏

TReadOnlyTrackObserver = class(TInterfacedObject, IEditLinkObserver, IObserver, ISingleCastObserver)
public
  procedure Removed;
  function GetActive: Boolean;
  procedure SetActive(Value: Boolean);
  function GetOnObserverToggle: TObserverToggleEvent;
  procedure SetOnObserverToggle(AEvent: TObserverToggleEvent);

  procedure Update;
  function Edit: Boolean;
  procedure Reset;
  procedure Modified;
  function IsModified: Boolean;
  function IsValidChar(AKey: Char): Boolean;
  function IsRequired: Boolean;
  function GetIsReadOnly: Boolean;
  procedure SetIsReadOnly(Value: Boolean);
  property IsReadOnly: Boolean read GetIsReadOnly write SetIsReadOnly;
  function GetIsEditing: Boolean;
  property IsEditing: Boolean read GetIsEditing;
  procedure BeginUpdate;
  procedure EndUpdate;
  function GetUpdating: Boolean;
  property Updating: Boolean read GetUpdating;
end;

function TReadOnlyTrackObserver.GetActive: Boolean;
begin
  Result := True;
end;

function TReadOnlyTrackObserver.GetIsReadOnly: Boolean;
begin
  Result := True;
end;

// todo: implement the other required functions of TReadOnlyTrackObserver 

var
  MyObserver: IEditLinkObserver;

  MyObserver := TReadOnlyTrackObserver.Create;
  TrackBar1.Observers.AddObserver(TObserverMapping.EditLinkID, MyObserver);

如果我设置enabled=false,我将无法再关注它,相反,我需要能够将焦点设置在它上。你应该真正更新你的问题的标题,以便更容易找到,例如“如何使轨迹栏只读?”。Thanx Sebatian,我刚刚实现了一种观察者方法!如果你喜欢的话,请便