十万火急,求助动态赋事件!(50分)

  • 主题发起人 zpselect
  • 开始时间
Z

zpselect

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure FormCreate(Sender: TObject);
procedure vOnClick(sender: TObject);
procedure vOpen(Sender: TObject);
procedure vClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
private
PData: PNodeData;
vRzPageCotrolItem: TRzTabSheet;
vRzPageCotrol: TRzPageControl;
vRzGroup: TRzGroup;
{ Private declarations }
public
{ Public declarations }
end;

var
frm_Mainform: Tfrm_Mainform;
implementation
{$R *.dfm}
{ Tfrm_Mainform }

procedure Tfrm_Mainform.vOnClick(sender: TObject);
begin
ShowMessage('00000');
end;

procedure Tfrm_Mainform.vOpen(Sender: TObject);
begin
// ShowMessage(vRzPageCotrol.Name);
if vRzPageCotrol.Align= alClient then
begin
vRzPageCotrol.Align:=alNone;
vRzPageCotrol.Left:=333
end
else
vRzPageCotrol.Align := alClient;
vRzPageCotrol.BringToFront;
end;

procedure Tfrm_Mainform.vClick(Sender: TObject);
begin
vRzPageCotrol.Align := alClient;
end;

procedure Tfrm_Mainform.FormCreate(Sender: TObject);
var
vBtn: TfcShapeBtn;
vRzGItem: TRzGroupItem;
vImageIndex: Integer;
begin
Master.Open;
Detail.Open;
Detail.Filtered := true;
try
Master.DisableControls;
vImageIndex := 0;
Master.First;
while not Master.Eofdo
begin
inc(vImageIndex);
vRzPageCotrol := TRzPageControl.Create(nil);
// 1.创建pagecontrol
vRzPageCotrol.Top := 128 + (vImageIndex * vImageIndex * 80);
vRzPageCotrol.Left := 200;
vRzPageCotrol.Width := 300;
vRzPageCotrol.Align := alNone;
vRzPageCotrol.Name :='page'+Master.Fieldbyname('fr_FrmName').Text;
vRzPageCotrol.Parent := Panel1;
vRzPageCotrol.OnClick:=vClick;
vRzPageCotrolItem := TRzTabSheet.Create(nil);
//2.在pagecotrol中加一个tabsheet
vRzPageCotrolItem.Caption := Master.Fieldbyname('fr_Model').Text + '流程图';
vRzPageCotrolItem.PageControl := vRzPageCotrol;


vBtn := TfcShapeBtn.Create(nil);
//3.然后在tabsheet中加一个按钮
vBtn.Left := 211;
vBtn.Top := 138 + (vImageIndex * vImageIndex * 70);
vBtn.Caption := '人事' + inttostr(vImageIndex);
vBtn.Height := 60;
vBtn.Width := 60;
vBtn.Glyph.LoadFromFile('E:/Program/HSLL/tupian/nwepritue/test.bmp');
vBtn.Parent := vRzPageCotrolItem;

vRzGroup := TRzGroup.Create(nil);
RzGroupBar1.AddGroup(vRzGroup);
vRzGroup.Hint := Master.Fieldbyname('fr_FrmName').Text;
//name
vRzGroup.Caption := Master.Fieldbyname('fr_Model').Text;
//caption
vRzGroup.OnDblClick := vOpen;
New(PData);
PData.RzPG := vRzPageCotrol;
PData.RzPGName := Master.Fieldbyname('fr_FrmName').Text;
//loadFlow();
Master.Next;
end;
finally
Master.EnableControls;
end;

end;
为何点击任一个动态创建的rzGroup都执行同一个事件?
 
老大,你哪個什麽RZGROUP 的都指向了 vOpen 這個事件,當然都執行同個時間啦!
vRzGroup.OnDblClick := vOpen;
 
我的思路是这样的
grroup1 ----------> pagecontrol1
grroup2 ----------> pagecontrol2
grroup3 ----------> pagecontrol3
group and pagecontrol 都是动态创建的
我所需要的功能是:点击某个 group 时将某个pagecontrol.brontfont(置前)
现在是怎样在grroup1创建时写事件去关联pagecontrol1,以此类推。
 
無語…………………………
 
你這不叫事件關聯啊。
你在單擊Group 的時候,直接調用pagecontrol 不就行了!
 
你在 vOpen 事件裡面直接 RzPageControl1.ActivePageIndex := 你要的頁數值 ~~~~~~~~~~
搞定~~~
 
記住,頁數值是從 0 開始的!
 
注意两点。
1。用上tag属性。
2。用上sender
 
[red]procedure Tfrm_Mainform.vOpen(Sender: TObject);
begin
// ShowMessage(TRzPageControl(TRzGroup(Sender).Tag).Name);
if TRzPageControl(TRzGroup(Sender).Tag).Align= alClient then
begin
TRzPageControl(TRzGroup(Sender).Tag).Align:=alNone;
TRzPageControl(TRzGroup(Sender).Tag).Left:=333
end
else
TRzPageControl(TRzGroup(Sender).Tag).Align := alClient;
TRzPageControl(TRzGroup(Sender).Tag).BringToFront;
end;
[/red]
procedure Tfrm_Mainform.FormCreate(Sender: TObject);
var
vBtn: TfcShapeBtn;
vRzGItem: TRzGroupItem;
vImageIndex: Integer;
begin
Master.Open;
Detail.Open;
Detail.Filtered := true;
try
Master.DisableControls;
vImageIndex := 0;
Master.First;
while not Master.Eofdo
begin
inc(vImageIndex);
vRzPageCotrol := TRzPageControl.Create(nil);
// 1.创建pagecontrol
vRzPageCotrol.Top := 128 + (vImageIndex * vImageIndex * 80);
vRzPageCotrol.Left := 200;
vRzPageCotrol.Width := 300;
vRzPageCotrol.Align := alNone;
vRzPageCotrol.Name :='page'+Master.Fieldbyname('fr_FrmName').Text;
vRzPageCotrol.Parent := Panel1;
vRzPageCotrol.OnClick:=vClick;
vRzPageCotrolItem := TRzTabSheet.Create(nil);
//2.在pagecotrol中加一个tabsheet
vRzPageCotrolItem.Caption := Master.Fieldbyname('fr_Model').Text + '流程图';
vRzPageCotrolItem.PageControl := vRzPageCotrol;


vBtn := TfcShapeBtn.Create(nil);
//3.然后在tabsheet中加一个按钮
vBtn.Left := 211;
vBtn.Top := 138 + (vImageIndex * vImageIndex * 70);
vBtn.Caption := '人事' + inttostr(vImageIndex);
vBtn.Height := 60;
vBtn.Width := 60;
vBtn.Glyph.LoadFromFile('E:/Program/HSLL/tupian/nwepritue/test.bmp');
vBtn.Parent := vRzPageCotrolItem;

vRzGroup := TRzGroup.Create(nil);
[red] vRzGroup.Tag := Integer(vRzPageCotrol);[/red] RzGroupBar1.AddGroup(vRzGroup);
vRzGroup.Hint := Master.Fieldbyname('fr_FrmName').Text;
//name
vRzGroup.Caption := Master.Fieldbyname('fr_Model').Text;
//caption
vRzGroup.OnDblClick := vOpen;
New(PData);
PData.RzPG := vRzPageCotrol;
PData.RzPGName := Master.Fieldbyname('fr_FrmName').Text;
//loadFlow();
Master.Next;
end;
finally
Master.EnableControls;
end;
 
判断Sender的值啊!
if Sender is mmmm then
if (Sender as mmmm).name='' then
 
可以了,我用指针搞定,谢谢各位了!散分!
 
顶部