唉,不得已修改别人的代码。请大哥们给个修改方案。
代码如下:procedure TMainSaleForm.CreateMainMenu;
Var
I1,I2,I3,i0T0,i0T1,i0T2,i0T3 : Integer;
iPosition,iTreeNodeCount,iTreeLevelOneCount : Integer;
s1T1,s1T2,s1T3,s1T4,s2T1,s2T2,s2T3,s2T4,s3T1,s3T2,s3T3,s3T4 : String; miItem1,miItem2,miItem3 : TMenuItem;
trnNode1,trnNode2,trnNode3:TTreeNode;
fcNode1,fcNode2,fcNode3: TfcTreeNode;begin MainMenu.Items.Clear;
TreeViewMain.items.Clear;
fcTreeCombo.text := '快捷菜单';
fcTreeCombo.items.clear; iTreeNodeCount := 0;
iTreeLevelOneCount := 0; fcNode1 := fcTreeCombo.items.add(nil,'');
fcNode2 := fcTreeCombo.items.add(nil,'');
fcNode3 := fcTreeCombo.items.add(nil,''); for I1 := 0 to P_slItem1.Count-1 do
begin
i0T0 := Length(P_slItem1[I1]);
i0T1 := Pos(',',P_slItem1[I1]);
i0T2 := i0T1+Pos(',',Copy(P_slItem1[I1],i0T1+1,i0T0));
i0T3 := i0T2+Pos(',',Copy(P_slItem1[I1],i0T2+1,i0T0)); s1T1 := Copy(P_slItem1[I1],1,i0T1-1);
s1T2 := Copy(P_slItem1[I1],i0T1+1,i0T2-i0T1-1);
s1T3 := Copy(P_slItem1[I1],i0T2+1,i0T3-i0T2-1);
s1T4 := Copy(P_slItem1[I1],i0T3+1,i0T0-i0T3); miItem1 := TMenuItem.Create(Self); if (Copy(s1T1,3,1) = '-') and (s1T2 <> '-') then
miItem1.onClick := MenuItemClick; if (s1T4 <> '') and (Copy(s1T1,3,1)='-') and (s1T2 <> '-') then
miItem1.Action := ActionListMain.Actions[StrToInt(s1T4)]; if s1T3 <> '' then
miItem1.ShortCut := ShortCut(StrToInt(Copy(s1T3,4,3)),TranslateShortCutState(Copy(s1T3,1,3))); miItem1.Caption := s1T2;
miItem1.Name := 'N' + Copy(s1T1,1,2);
miItem1.Tag := StrToInt(Copy(s1T1,1,2)); if ((copy(s1T1,1,2) = '01') or (copy(s1T1,1,2) = '02')) and (copy(s1T1,3,1) = '+') then
begin
miItem1.Visible := MenuItemVisible(copy(s1T1,1,2)); if miItem1.Visible then
begin
trnNode1 := TreeViewMain.items.add(nil,'');
iPosition := pos('(',s1T2);
trnNode1.text := copy(s1T2,1,iPosition-1);
trnNode1.ImageIndex := 0;
trnNode1.SelectedIndex := 0;
inc(iTreeLevelOneCount);
setlength(L_trnTreeLevelOne,iTreeLevelOneCount);
setlength(L_fcTreeLevelOne,iTreeLevelOneCount);
L_trnTreeLevelOne[iTreeLevelOneCount-1] := trnNode1; fcNode1 := fcTreeCombo.items.add(nil,'');
iPosition := pos('(',s1T2);
fcNode1.text := copy(s1T2,1,iPosition-1);
L_fcTreeLevelOne[iTreeLevelOneCount-1] := fcNode1;
end;
end; MainMenu.Items.Add(miItem1); if Copy(s1T1,3,1)='+' then
begin
for I2 := 0 to P_slItem2.Count - 1 do
begin
i0T0 := Length(P_slItem2[I2]);
i0T1 := Pos(',',P_slItem2[I2]);
i0T2 := i0T1+Pos(',',Copy(P_slItem2[I2],i0T1 + 1,i0T0));
i0T3 := i0T2+Pos(',',Copy(P_slItem2[I2],i0T2 + 1,i0T0)); s2T1 := Copy(P_slItem2[I2],1,i0T1 - 1);
s2T2 := Copy(P_slItem2[I2],i0T1+1,i0T2-i0T1 - 1);
s2T3 := Copy(P_slItem2[I2],i0T2+1,i0T3-i0T2 - 1);
s2T4 := Copy(P_slItem2[I2],i0T3+1,i0T0-i0T3); if Copy(s2T1,1,2) = Copy(s1T1,1,2) then
begin
miItem2 := TMenuItem.Create(Self); if (Copy(s2T1,5,1)='-') and (s2T2 <> '-') then
miItem2.onClick := MenuItemClick; if (s2T4 <> '') and (Copy(s2T1,5,1)='-') and (s2T2 <> '-') then
miItem2.Action := ActionListMain.Actions[StrToInt(s2T4)]; if s2T3 <> '' then
miItem2.ShortCut := ShortCut(StrToInt(Copy(s2T3,4,3)),TranslateShortCutState(Copy(s2T3,1,3))); miItem2.Caption := s2T2;
miItem2.Name := 'N'+Copy(s2T1,1,4);
miItem2.Tag := StrToInt(Copy(s2T1,1,4));
代码如下:procedure TMainSaleForm.CreateMainMenu;
Var
I1,I2,I3,i0T0,i0T1,i0T2,i0T3 : Integer;
iPosition,iTreeNodeCount,iTreeLevelOneCount : Integer;
s1T1,s1T2,s1T3,s1T4,s2T1,s2T2,s2T3,s2T4,s3T1,s3T2,s3T3,s3T4 : String; miItem1,miItem2,miItem3 : TMenuItem;
trnNode1,trnNode2,trnNode3:TTreeNode;
fcNode1,fcNode2,fcNode3: TfcTreeNode;begin MainMenu.Items.Clear;
TreeViewMain.items.Clear;
fcTreeCombo.text := '快捷菜单';
fcTreeCombo.items.clear; iTreeNodeCount := 0;
iTreeLevelOneCount := 0; fcNode1 := fcTreeCombo.items.add(nil,'');
fcNode2 := fcTreeCombo.items.add(nil,'');
fcNode3 := fcTreeCombo.items.add(nil,''); for I1 := 0 to P_slItem1.Count-1 do
begin
i0T0 := Length(P_slItem1[I1]);
i0T1 := Pos(',',P_slItem1[I1]);
i0T2 := i0T1+Pos(',',Copy(P_slItem1[I1],i0T1+1,i0T0));
i0T3 := i0T2+Pos(',',Copy(P_slItem1[I1],i0T2+1,i0T0)); s1T1 := Copy(P_slItem1[I1],1,i0T1-1);
s1T2 := Copy(P_slItem1[I1],i0T1+1,i0T2-i0T1-1);
s1T3 := Copy(P_slItem1[I1],i0T2+1,i0T3-i0T2-1);
s1T4 := Copy(P_slItem1[I1],i0T3+1,i0T0-i0T3); miItem1 := TMenuItem.Create(Self); if (Copy(s1T1,3,1) = '-') and (s1T2 <> '-') then
miItem1.onClick := MenuItemClick; if (s1T4 <> '') and (Copy(s1T1,3,1)='-') and (s1T2 <> '-') then
miItem1.Action := ActionListMain.Actions[StrToInt(s1T4)]; if s1T3 <> '' then
miItem1.ShortCut := ShortCut(StrToInt(Copy(s1T3,4,3)),TranslateShortCutState(Copy(s1T3,1,3))); miItem1.Caption := s1T2;
miItem1.Name := 'N' + Copy(s1T1,1,2);
miItem1.Tag := StrToInt(Copy(s1T1,1,2)); if ((copy(s1T1,1,2) = '01') or (copy(s1T1,1,2) = '02')) and (copy(s1T1,3,1) = '+') then
begin
miItem1.Visible := MenuItemVisible(copy(s1T1,1,2)); if miItem1.Visible then
begin
trnNode1 := TreeViewMain.items.add(nil,'');
iPosition := pos('(',s1T2);
trnNode1.text := copy(s1T2,1,iPosition-1);
trnNode1.ImageIndex := 0;
trnNode1.SelectedIndex := 0;
inc(iTreeLevelOneCount);
setlength(L_trnTreeLevelOne,iTreeLevelOneCount);
setlength(L_fcTreeLevelOne,iTreeLevelOneCount);
L_trnTreeLevelOne[iTreeLevelOneCount-1] := trnNode1; fcNode1 := fcTreeCombo.items.add(nil,'');
iPosition := pos('(',s1T2);
fcNode1.text := copy(s1T2,1,iPosition-1);
L_fcTreeLevelOne[iTreeLevelOneCount-1] := fcNode1;
end;
end; MainMenu.Items.Add(miItem1); if Copy(s1T1,3,1)='+' then
begin
for I2 := 0 to P_slItem2.Count - 1 do
begin
i0T0 := Length(P_slItem2[I2]);
i0T1 := Pos(',',P_slItem2[I2]);
i0T2 := i0T1+Pos(',',Copy(P_slItem2[I2],i0T1 + 1,i0T0));
i0T3 := i0T2+Pos(',',Copy(P_slItem2[I2],i0T2 + 1,i0T0)); s2T1 := Copy(P_slItem2[I2],1,i0T1 - 1);
s2T2 := Copy(P_slItem2[I2],i0T1+1,i0T2-i0T1 - 1);
s2T3 := Copy(P_slItem2[I2],i0T2+1,i0T3-i0T2 - 1);
s2T4 := Copy(P_slItem2[I2],i0T3+1,i0T0-i0T3); if Copy(s2T1,1,2) = Copy(s1T1,1,2) then
begin
miItem2 := TMenuItem.Create(Self); if (Copy(s2T1,5,1)='-') and (s2T2 <> '-') then
miItem2.onClick := MenuItemClick; if (s2T4 <> '') and (Copy(s2T1,5,1)='-') and (s2T2 <> '-') then
miItem2.Action := ActionListMain.Actions[StrToInt(s2T4)]; if s2T3 <> '' then
miItem2.ShortCut := ShortCut(StrToInt(Copy(s2T3,4,3)),TranslateShortCutState(Copy(s2T3,1,3))); miItem2.Caption := s2T2;
miItem2.Name := 'N'+Copy(s2T1,1,4);
miItem2.Tag := StrToInt(Copy(s2T1,1,4));
解决方案 »
- 如何使第三方程序作为我的程序的mdi子窗体运行
- Access violation错误,请问有没办法直接根据地址定位到出错行
- WebUIValidation.js 报错
- tcp通讯问题续续delphi6相关问题
- 在DELPHI 中通ADO 取vfp 表後,更新vfp一字段時用updaterecord,post,updatebatch (),大部分更新沒問題,極小一部分更新有問題
- 关于chart的滤波?
- 这句有关日期的SQL语句如何写?在线等待.....
- 请教拷屏打印问题
- forgot2000的散分帖,同时有两件事给大家说一下。
- Delphi 7中 TIdUDPServer 的接收端怎么写代码?
- 数据库问题,请各位高手帮小第一个小忙.
- paradox 中如何用SQL语句实现一次插入多条语句
begin
miItem2.Visible := MenuItemVisible(copy(s2T1,1,4)); if miItem2.Visible then
begin
OutBar.Panels.Add;
OutBar.Panels.Items[iOutBar1].Text := copy(s2T2,1,iPosition-1);
Inc(iOutBar1); trnNode2 := TreeViewMain.items.addchild(trnNode1,'');
iPosition := pos('(',s2T2);
trnNode2.text := copy(s2T2,1,iPosition-1);
trnNode2.ImageIndex := 1;
trnNode2.SelectedIndex := 1; fcNode2 := fcTreeCombo.Items.addchild(fcNode1,'');
fcNode2.text := copy(s2T2,1,iPosition-1);
fcNode2.ImageIndex := 1;
fcNode2.SelectedIndex := 1;
end;
end; miItem1.Add(miItem2); if Copy(s2T1,5,1)='+' then
begin
for I3 := 0 to P_slItem3.Count-1 do
begin
i0T0 := Length(P_slItem3[I3]);
i0T1 := Pos(',',P_slItem3[I3]);
i0T2 := i0T1+Pos(',',Copy(P_slItem3[I3],i0T1 + 1,i0T0));
i0T3 := i0T2+Pos(',',Copy(P_slItem3[I3],i0T2 + 1,i0T0));
s3T1 := Copy(P_slItem3[I3],1,i0T1 - 1);
s3T2 := Copy(P_slItem3[I3],i0T1 + 1,i0T2 - i0T1 - 1);
s3T3 := Copy(P_slItem3[I3],i0T2 + 1,i0T3 - i0T2 - 1);
s3T4 := Copy(P_slItem3[I3],i0T3 + 1,i0T0 - i0T3); if Copy(s3T1,1,4)=Copy(s2T1,1,4) then
begin
miItem3 := TMenuItem.Create(Self); if (s3T2 <> '-') then
miItem3.onClick := MenuItemClick; if (s3T4 <> '') and (s3T2 <> '-') then
miItem3.Action := ActionListMain.Actions[StrToInt(s3T4)]; if s3T3 <> '' then
miItem3.ShortCut := ShortCut(StrToInt(Copy(s3T3,4,3)),TranslateShortCutState(Copy(s3T3,1,3))); miItem3.Caption := s3T2;
miItem3.Name := 'N'+s3T1;
miItem3.Tag := StrToInt(s3T1); if (copy(s1T1,1,2)='01')or(copy(s1T1,1,2)='02') then
begin miItem3.Visible := MenuItemVisible(copy(s3T1,1,6)); if miItem3.Visible then
begin
trnNode3 := TreeViewMain.Items.AddChild(trnNode2,''); inc(iTreeNodeCount);
SetLength(L_iTreeNodeData,iTreeNodeCount);
L_iTreeNodeData[iTreeNodeCount-1] := copy(s3T1,1,6);
trnNode3.data := pchar(L_iTreeNodeData[iTreeNodeCount-1]);
iPosition := pos('(',s3T2);
trnNode3.text := copy(s3T2,1,iPosition-1);
trnNode3.ImageIndex := 2;
trnNode3.SelectedIndex := 3; fcNode3 := fcTreeCombo.Items.AddChild(fcNode2,'');
fcNode3.data := pchar(L_iTreeNodeData[iTreeNodeCount-1]);
fcNode3.text := copy(s3T2,1,iPosition-1);
fcNode3.ImageIndex := 2;
fcNode3.SelectedIndex := 3; end;
end; miItem2.Add(miItem3);
end;
end;
end;
end;
end;
end;
end;
end;首先声明,不是我写的。我才不会干这种傻事,用三层循环嵌套来干四件事情:建立菜单,建立树型结构,建立组合框树型结构,判断使用权限,然后隐藏部分。大哥们不用帮我修改代码,只要给一些解决方案就可以了。多谢了。这个代码,给我的感觉就是蚂蚁搬家,一点点地搬。并且另一个感觉就是,写这个的家伙,不懂数据结构!