Macos OSX优胜美地和XE7 Firemonkey
有人能告诉我如何在OSX firemonkey应用程序中,在C++Builder(或Delphi)XE7中使TTrackBar对象只读吗? 我尝试了“锁定”属性,但它似乎不起作用 干杯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
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,我刚刚实现了一种观察者方法!如果你喜欢的话,请便