借宝地一用:如果对TmxButton的Data定义一个数据指针,且按钮是动态生成的. 怎样才能取得该指针对应的数据呢,我的代码如下://数据结构定义如下: type TFData=^FData; FData=Record UID:string; UNAME:string; IMGINDEX:Integer; STATUSINDEX:integer; UIP:string; end;//以下是动态产生mxButton,并给Data赋值: for i:=0 to ClientDataSet.RecordCount-1 do begin mxBtm:=mxOutlookBar.Headers[0].AddButton; mxBtm.Caption:= Trim(ClientDataSet.FieldByName('uName').Asstring); mxBtm.Name:='mxBtm'+inttostr(mxOutlookBar.Headers[0].ButtonCount+1); New(FData); FData.UID:=Trim(ClientDataSet.FieldByName('UID').Asstring); FData.UNAME:=Trim(ClientDataSet.FieldByName('uName').Asstring); FData.IMGINDEX:=ClientDataSet.FieldByName('IMGINDEX').Value; FData.STATUSINDEX:=ClientDataSet.FieldByName('STATUSINDEX').Value; FData.UIP:=Trim(ClientDataSet.FieldByName('LOCALIP').Asstring); mxBtm.Data:=FData; mxBtm.OnClick:= mxBtnDBClick; ClientDataSet.Next; end; //以下是自定义点击事件,用来取得Data的数据:procedure TChatFrm.mxBtnDBClick(Sender:TObject); var xData:TFData; mxBtm:TmxButton; begin if Sender is TmxButton then begin mxBtm:= TmxButton(Sender).Data; //showmessage(mxBtm.Caption); MsgEditFrm:= TMsgEditFrm.Create(Application); with MsgEditFrm do begin //初始化参数 xData:= TFData(mxBtm.Data); uID.Caption:= xData^.UNAME+' '+xData^.UID;//报错 IpLabel.Caption:='对方IP: '+xData^.UIP;//报错 ShowModal; end; end; end;请大家帮忙.
是mxoutlookbarpro,要是我会修改它就不会在这里问了啊.
mxOutLookBarPro自带有例子的,看着学吧
例子里也是这样的。
怎样才能取得该指针对应的数据呢,我的代码如下://数据结构定义如下:
type
TFData=^FData;
FData=Record
UID:string;
UNAME:string;
IMGINDEX:Integer;
STATUSINDEX:integer;
UIP:string;
end;//以下是动态产生mxButton,并给Data赋值: for i:=0 to ClientDataSet.RecordCount-1 do
begin
mxBtm:=mxOutlookBar.Headers[0].AddButton;
mxBtm.Caption:= Trim(ClientDataSet.FieldByName('uName').Asstring);
mxBtm.Name:='mxBtm'+inttostr(mxOutlookBar.Headers[0].ButtonCount+1);
New(FData); FData.UID:=Trim(ClientDataSet.FieldByName('UID').Asstring);
FData.UNAME:=Trim(ClientDataSet.FieldByName('uName').Asstring);
FData.IMGINDEX:=ClientDataSet.FieldByName('IMGINDEX').Value;
FData.STATUSINDEX:=ClientDataSet.FieldByName('STATUSINDEX').Value;
FData.UIP:=Trim(ClientDataSet.FieldByName('LOCALIP').Asstring); mxBtm.Data:=FData;
mxBtm.OnClick:= mxBtnDBClick;
ClientDataSet.Next;
end;
//以下是自定义点击事件,用来取得Data的数据:procedure TChatFrm.mxBtnDBClick(Sender:TObject);
var
xData:TFData;
mxBtm:TmxButton;
begin
if Sender is TmxButton
then begin
mxBtm:= TmxButton(Sender).Data;
//showmessage(mxBtm.Caption);
MsgEditFrm:= TMsgEditFrm.Create(Application);
with MsgEditFrm do
begin
//初始化参数
xData:= TFData(mxBtm.Data);
uID.Caption:= xData^.UNAME+' '+xData^.UID;//报错
IpLabel.Caption:='对方IP: '+xData^.UIP;//报错
ShowModal;
end;
end;
end;请大家帮忙.