TDemo 备注文本的二种存贮方式

TDemo 备注纯文本的二种存贮方式

     数据库使用过程中,对于TDeme控件,对应数据库的分为nvarchar(n)类型字段。

     一、通常使用二种格式的文本:

     (1)单纯文本

     (2)带换行符的文本

     这二种格式,在TDBGrid中,显示的都一样,显示一行文本。

     在TMemo中,显示的不一样了:

     带换行符的文本:

      单纯文本:

      在实际使用时,编辑期间可以,偬需要,使用这二种格式的TDemo文字类型。

      二、操作要点

      1、字段类型设置长度小于255,即 nvarchar(n),n<255,这样, 在TDBGrid中,显示的都一行,不显示换行。如果设置为nvarchar(MAX),那么TDBGrid中,不能显示文字,只能在TDemo中显示文字。

      2、二种格式文本的相互转换

    (1)单纯文本转换这换行符文本

function StrToListStr(s:string):WideString;
var S1,S2,SS:WideString;
    Top1,i:integer;
begin
  Result :='';
  SS:='';
  S1:=S;
  Top1:=1;
  for i:=1 to Length(S1) do
  begin
    S2:=Copy(S1,i,1);
    if S2='、' then
    begin
      SS:=SS+Copy(S1,Top1,i-Top1)+#13#10;
      Top1:=i+1;
    end;
  end;
  SS:=SS+Copy(S1,Top1,Length(S1)-Top1+1);
  Result:=SS;
end;

    (2)在读取时,加入换行字符 

procedure TBB_6_Frm.Button11Click(Sender: TObject);
var SQL,S:string;
    MyList:TStringList;
    i:integer;
    T:boolean;
begin
  MyList:=TStringList.Create;
  ClientDataSet1.DisableControls;
  with ClientDataSet1 do
  begin
    First;
    while not Eof do
    begin
      MyList.Clear;
      S:=ClientDataSet1.FieldByName('姓名').AsString;
      SQL:='select * from 入院_健康状况 where (分支='+#39+sFCID+#39+') and (姓名='#39+S+#39+') '+
           'and ((分类=''既往'') or (分类=''现有'')) order by 排序';
      DataModule1.ClientDataSet1.Active:=False;
      DataModule1.ClientDataSet1.DataRequest(SQL);
      DataModule1.ClientDataSet1.Active:=True;
      with DataModule1.ClientDataSet1 do
      begin
        First;
        while Not Eof do
        begin
          if FieldByName('选择').AsBoolean then
          begin
            T:=False;
            S:=FieldByName('疾病').AsString;
            for i:=0 to Mylist.Count-1 do
              if S=MyList.Strings[i] then T:=True;
            if Not T then MyList.Add(S);
          end;
          Next;
        end;
        First;
      end;
      DataModule1.ClientDataSet1.Active:=False;
      S:='';
      for i:=0 to Mylist.Count-1 do
        if i<>Mylist.Count-1 then S:=S+MyList.Strings[i]+','+#13#10
                             else S:=S+MyList.Strings[i];
      if Length(S)>1 then
      begin
        ClientDataSet1.Edit;
        ClientDataSet1.FieldByName('诊断').AsString:=S+'。';
        ClientDataSet1.Post;
      end;
      Next;
    end;
  end;
  ClientDataSet1.First;
  ClientDataSet1.EnableControls;
  MyList.Free;
end;

    (3)换行符文本转换为单纯文本

  

function Text_DelTemp(Text:String):String;      // 删除字符中  回车 Tab  空格 无效字符
var S:String;
begin
  Result := '';
  S:= Trim(Text);
  S:=StringReplace(S, chr(13)+chr(10), '', [rfReplaceAll]);   // 删除回车
  S:=StringReplace(S, ' ', '', [rfReplaceAll]);               // 删除空格
  S:=StringReplace(S, chr(9), '', [rfReplaceAll]);            // 删除Tab
  Result := S;
end;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值