是否可以从FMX TCalendar组件中禁用某些天?
例如周末
如果他们被高举,他们被禁用也是好的,例如第14天和第15天,如下图所示
我可以通过在打开命中测试的情况下在listboxitemstyle上添加一个矩形来禁用它 这就是我为上图所做的事情
startActivity(new Intent(this, SomeModuleAActivity.class));
但我不知道如何在创建项目时访问styleslistbox项目,即使这是我应该这样做的方式
答案 0 :(得分:2)
经过一段时间的挖掘,这是我发现的快速解释 Source code here
在文件夹中 \ Embarcadero公司\工作室\ 17.0 \源\ FMX 有一个FMX.Calendar.Style.pas文件
我已将该文件复制到与项目相同的位置,并将其重命名为My.FMX.Calendar.Style.pas
我还将TStyledCalendar重命名为TMyStyledCalendar,然后更改了初始化和终结
initialization
TPresentationProxyFactory.Current.Register(TCalendar, TControlType.Styled, TStyledPresentationProxy<TMyStyledCalendar>);
finalization
TPresentationProxyFactory.Current.Unregister(TCalendar, TControlType.Styled, TStyledPresentationProxy<TMyStyledCalendar>);
end.
initialization
TPresentationProxyFactory.Current.Unregister(TCalendar, TControlType.Styled, TStyledPresentationProxy<TStyledCalendar>);
TPresentationProxyFactory.Current.Register(TCalendar, TControlType.Styled, TStyledPresentationProxy<TMyStyledCalendar>);
finalization
TPresentationProxyFactory.Current.Unregister(TCalendar, TControlType.Styled, TStyledPresentationProxy<TMyStyledCalendar>);
还将FMX.Calendar.Style添加到使用部分
中
在FillDays程序中;创建了一个新程序
procedure ChangeStyle(aDay : TDateTime;Item: TDayItem);
var wDay : Word;
begin
wDay := DayOfWeek(aDay-1);
if (wDay = DaySaturday) or (wday = DaySunday) then begin
item.Enabled := false;
if (Item.StyleLookup <> 'MyListBoxItemstyle') then
Item.StyleLookup := 'MyListBoxItemstyle';
end else begin
if (Item.StyleLookup <> '') then
Item.StyleLookup := '';
end;
end;
并添加了ChangeStyle(Item.Date,Item);到以下FillDaysOfPreviousMonth; FillDaysOfCurrentMonth; FillDaysOfNextMonth;
添加了一个样式以匹配MyListBoxItemstyle