结构定义为
type
  TF2Rec = record
    Caption: string;
    strTrans1: string;        //单选时的返回值
    strTrans2: string;        //单选时的返回值
    strTrans3: string;        //单选时的返回值
    strTrans4: string;        //单选时的返回值
    lpsltRet1:TStringList;       //多选时的返回值
    lpsltRet2:TStringList;       //多选时的返回值
    lpsltRet3:TStringList;       //多选时的返回值
    lpsltRet4:TStringList;       //多选时的返回值
    strKey: string; //起始值,用于过滤
    strFilter: string;          //用于特定条件过滤
  bMultiSelect:boolean;               //标志是否多选
  end;调用一个FORM的入口函数:
function F2Pattern(var F2Rec:TF2Rec):boolean;
var
  bFlag:boolean;
begin
  bFlag:=false;
  fmF2Pattern:=TfmF2Pattern.Create(application);
  fmF2Pattern.m_F2Rec:=F2Rec;
  if fmF2Pattern.ShowModal=mrOk then
  begin
    if F2Rec.bMultiSelect then
    begin
      if F2Rec.lpsltRet1.Count=0 then
        bFlag:=false
      else
        bFlag:=true;
    end
    else
    begin
      if F2Rec.strTrans1='' then
        bFlag:=false
      else
        bFlag:=true;
    end;
  end;
  fmF2Pattern.Free;
  Result:=bFlag;
end;
调用如下
procedure TfmPattern.cxDBButtonEdit2PropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
var
  F2rec:TF2rec;
begin
  inherited;
  F2rec.bMultiSelect:=false;
  if F2Flower(F2rec) then
  begin
    editdataset(tblBase);
    tblBasepflower.AsString:=F2rec.strTrans1;
  end;
end;
处理完以后发现F2Rec中的lpsltRet1值传递回来了,strTrans1却没有,百思不得其解,望高手解答,不胜感激!

解决方案 »

  1.   

    结构不能做变量用
    应该是:
    Var SSS : TF2Rec ;
      或
    F2Rec := TF2Rec.Create( Self ); <----我没试过
      

  2.   

    type
      TF2Rec = packed record
        Caption: string[100];
        strTrans1: string[100];        //单选时的返回值
        strTrans2: string[100];        //单选时的返回值
        strTrans3: string[100];        //单选时的返回值
        strTrans4: string[100];        //单选时的返回值
        lpsltRet1:TStringList;       //多选时的返回值
        lpsltRet2:TStringList;       //多选时的返回值
        lpsltRet3:TStringList;       //多选时的返回值
        lpsltRet4:TStringList;       //多选时的返回值
        strKey: string[100];//起始值,用于过滤
        strFilter: string[100];          //用于特定条件过滤
        bMultiSelect:boolean;               //标志是否多选
      end;
     TPF2Rec=^TF2Rec;function F2Pattern(var F2Rec:TPF2Rec):boolean;
    var
      bFlag:boolean;
    begin
      bFlag:=false;
      fmF2Pattern:=TfmF2Pattern.Create(nil);
      fmF2Pattern.m_F2Rec:=F2Rec^;
      if fmF2Pattern.ShowModal=mrOk then
      begin
        if F2Rec^.bMultiSelect then
        begin
          if F2Rec^.lpsltRet1.Count=0 then
            bFlag:=false
          else
            bFlag:=true;
        end
        else
        begin
          if F2Rec^.strTrans1='' then
            bFlag:=false
          else
            bFlag:=true;
        end;
      end;
      fmF2Pattern.Free;
      Result:=bFlag;
    end;
    var
      F2rec:TF2rec;
    begin
      inherited;
      F2rec.bMultiSelect:=false;
      if F2Flower(@F2rec) then
      begin
        editdataset(tblBase);
        tblBasepflower.AsString:=F2rec.strTrans1;
      end;
    end;