NSC_ActionGroup
今天做程序的时候发现Action多了不好控制于是做了一个类似dxBar.Group功能的东东继承自TCollection/TCollectionItem可以将一些TContainedAction作为一个组来控制当然,修改一下就可以将TComponent作为一个组来控制 :)写得比较简单如果哪位有时间可以给她做个属性编辑器,呵呵有哪位修改了也请给我发一份 :)sephil@163.comActionGroup.pas是源文件NSC_ComponentGroup.mpb是ModelMaker的工程文件其他的是Demo另外有个问题我不会就是如何将一个Event(比如TNotifyEvent)转换为TMethod我用的是变通的手段var FGroups: TNSC_ActionGroup;procedure TForm1.FormCreate(Sender: TObject);begin FGroups := TNSC_ActionGroup.Create(TNSC_ActionGroupItem); FGroups.Add.AddFromActionList(ActionList1, ‘1‘); FGroups.Add.AddFromActionList(ActionList1, ‘2‘); FGroups.Add.AddFromActionList(ActionList1, ‘3‘); FGroups.Add.AddFromActionList(ActionList1, ‘4‘);end;procedure TForm1.NewClick(Sender: TObject);begin ShowMessage(‘123‘);end;procedure TForm1.Action1Execute(Sender: TObject);var M: TMethod; C: TLabel;begin // Setup OnExecute event // I really don‘t know how to convert an event (such as TNotifyEvent) to TMethod C := TLabel.Create(nil); try C.OnClick := NewClick; M := TMethod(C.OnClick); finally C.Free; end; FGroups[0].SetProperty(‘OnExecute‘, M); FGroups[0].SetProperty(‘Caption‘, ‘11‘); FGroups[1].SetProperty(‘Caption‘, ‘Test‘); FGroups[2].SetProperty(‘Enabled‘, False); // Get OnExecute from gruop 1 and set to group 4 FGroups[0].GetProperty(‘OnExecute‘, M); FGroups[3].SetProperty(‘OnExecute‘, M); if FGroups[3].PropertyGrouped(‘Enabled‘) then ShowMessage(‘Group[3] ‘‘Enabled‘‘ property grouped‘); if not FGroups[3].PropertyGrouped(‘Enabled‘, False) then ShowMessage(‘Group[3] ‘‘Enabled‘‘ property not grouped to ‘‘False‘‘‘); if not FGroups[3].PropertyGrouped(‘Caption‘, ‘Action10‘) then ShowMessage(‘Group[3] ‘‘Caption‘‘ property not grouped to ‘‘Action10‘‘‘);end;
文件列表
200404130232154570.rar
(预估有个6文件)
Project1.exe
422KB
ActionGroup.PAS
11KB
Unit1.dfm
3KB
Unit1.pas
3KB
NSC_ComponentGroup.mpb
26KB
Project1.dpr
261B
暂无评论