skyjacker
版主
茶农
UID 2239
Digest Posts
9
Credits 617
Posts 269
点点分 617
Reading Access 100
Registered 2006-6-8
Status Offline
|
|
小小 actionlist,门道不少
小小 actionlist,门道不少
1、http://dn.codegear.com/article/27058 Effectively Using Action Lists
简介:
这篇文章详细的描述了如何在一个应用程序中使用 actions 和 actionlist
Action List 在 Delphi4 中已经被介绍。然而,它作为 Delphi 的一个强大的功能并没有被充分利用,并且被许多程序员滥用。
当然,这篇文章最重要的目的是指引大家如何在应用程序中有效的使用 Action 。
以一个模拟 CD Player 的界面来说明。
2、http://www.sicool.net/article/delphitechnic/200607/406.html Action高级开发
3、CnPack CnWizard SimpleWizards\CnComponentSelector.pas 组件选择工具
没看懂:
(1)、只在actSelInvert 中定义事件 procedure TCnComponentSelectorForm.DoActionListUpdate(Sender: TObject);
// Action 更新
procedure TCnComponentSelectorForm.DoActionListUpdate(Sender: TObject);
begin
actAdd.Enabled := lbSource.SelCount > 0;
actAddAll.Enabled := lbSource.Items.Count > 0;
actDelete.Enabled := lbDest.SelCount > 0;
actDeleteAll.Enabled := lbDest.Items.Count > 0;
actSelAll.Enabled := lbSource.SelCount < lbSource.Items.Count;
actSelNone.Enabled := lbSource.SelCount > 0;
actSelInvert.Enabled := lbSource.Items.Count > 0;
actMoveToTop.Enabled := lbDest.SelCount > 0;
actMoveToBottom.Enabled := lbDest.SelCount > 0;
actMoveUp.Enabled := lbDest.SelCount > 0;
actMoveDown.Enabled := lbDest.SelCount > 0;
end;
(2)、利用 procedure UpdateControls; 更新窗体控件
// 更新列表和控件状态
procedure TCnComponentSelectorForm.DoUpdateListControls(Sender: TObject);
begin
UpdateControls;
UpdateList;
end;
没看到在哪里调用 DoUpdateListControls 阿
// 更新控件状态
procedure TCnComponentSelectorForm.UpdateControls;
begin
if cbbFilterControl.ItemIndex < 0 then cbbFilterControl.ItemIndex := 0;
if cbbByClass.ItemIndex < 0 then cbbByClass.ItemIndex := 0;
if cbbByTag.ItemIndex < 0 then cbbByTag.ItemIndex := 0;
if cbbSourceOrderStyle.ItemIndex < 0 then cbbSourceOrderStyle.ItemIndex := 0;
if cbbSourceOrderDir.ItemIndex < 0 then cbbSourceOrderDir.ItemIndex := 0;
cbbFilterControl.Enabled := rbSpecControl.Checked;
cbIncludeChildren.Enabled := not rbCurrForm.Checked;
edtByName.Enabled := cbByName.Checked;
cbSubClass.Enabled := cbByClass.Checked;
cbbByClass.Enabled := cbByClass.Checked;
cbbByTag.Enabled := cbByTag.Checked;
seTagStart.Enabled := cbByTag.Checked;
seTagEnd.Enabled := cbByTag.Checked;
seTagEnd.Visible := cbbByTag.ItemIndex = 3;
lblTag.Visible := cbbByTag.ItemIndex = 3;
end;
(3)、Form 区
这三处居然没有找到在何处调用
procedure DoUpdateSourceOrder(Sender: TObject);
procedure DoUpdateListControls(Sender: TObject);
procedure DoUpdateList(Sender: TObject);
Action 与 窗体控件之间的关系,表面简单但是内部却并不清晰。
要搞明白也不是件易事阿。
[ 本帖最后由 skyjacker 于 2007-3-16 10:14 编辑 ]
|
一壶清茶煮青春.
|
|
|