能不能写成这样:procedure TForm1.OnclickItem(Sender: TObject);
begin
case (Sender as TRzGroupItem).Tag or (Sender as TMenuItem).Tag of
1005: OpenForm(TProduct, Product, Self);
1006: OpenForm(TProductCatena, ProductCatena, Self);
1007: OpenForm(TPart, Part, Self);
1008: OpenForm(TValve, Valve, Self);
2001: OpenForm(Tbtj, btj, Self);
2002: OpenForm(TProjectDayRpt, ProjectDayRpt, Self);
2005: OpenForm(TCheckZCP, CheckZCP, Self);
2006: OpenForm(TCheckZZP, CheckZZP, Self);
2007: OpenForm(TPartCheck, PartCheck, Self);
2008: OpenForm(TLingLiao, LingLiao, Self);
2009: OpenForm(TBuPinBuLiang, BuPinBuLiang, Self);
3004: OpenForm(TTaiZhang, TaiZhang, Self);
5001: OpenForm(TBackup, Backup, Self);
5002: OpenForm(TUser, User, Self);
5003: OpenForm(TLoginLog, LoginLog, Self);
5004: OpenForm(TCheckDate, CheckDate, Self);
else
Exit;
end;
end;我的菜单和TRzGroup导航兰都是动态创建的,每个Item得tag都是一样的,
这段代码我不想写两边,因为除了case头部,其他都是一样的。
begin
case (Sender as TRzGroupItem).Tag or (Sender as TMenuItem).Tag of
1005: OpenForm(TProduct, Product, Self);
1006: OpenForm(TProductCatena, ProductCatena, Self);
1007: OpenForm(TPart, Part, Self);
1008: OpenForm(TValve, Valve, Self);
2001: OpenForm(Tbtj, btj, Self);
2002: OpenForm(TProjectDayRpt, ProjectDayRpt, Self);
2005: OpenForm(TCheckZCP, CheckZCP, Self);
2006: OpenForm(TCheckZZP, CheckZZP, Self);
2007: OpenForm(TPartCheck, PartCheck, Self);
2008: OpenForm(TLingLiao, LingLiao, Self);
2009: OpenForm(TBuPinBuLiang, BuPinBuLiang, Self);
3004: OpenForm(TTaiZhang, TaiZhang, Self);
5001: OpenForm(TBackup, Backup, Self);
5002: OpenForm(TUser, User, Self);
5003: OpenForm(TLoginLog, LoginLog, Self);
5004: OpenForm(TCheckDate, CheckDate, Self);
else
Exit;
end;
end;我的菜单和TRzGroup导航兰都是动态创建的,每个Item得tag都是一样的,
这段代码我不想写两边,因为除了case头部,其他都是一样的。
n: Integer;
begin
if Sender is TMenuItem then
n := TMenuItem(Sender).Tag
else if Sender is TRzGroupItem then
n := TRzGroupItem(Sender).Tag
else
n := 0;
case n of:
......
end;
或者直接
case TComponent(Sender).Tag of:
不知是啥原因?
TRZGroupItem的OnClick事件可以指向同一个功能的MenuItem的OnClick事件。
var
n: Integer;
begin
if Sender is TComponent then
n := TMenuItem(Sender).Tag
else if Sender is TRzGroupItem then --非TComponent的子类
n := TRzGroupItem(Sender).Tag
else
n := 0;
case n of:
......
end;
var
n: Integer;
begin
if Sender is TComponent then
n := TComponent (Sender).Tag
else if Sender is TRzGroupItem then //非TComponent的子类
n := TRzGroupItem(Sender).Tag
else
n := 0;
case n of:
......
end;