色人妻超碰,日韩在线视频网站,亚汌国产一区二区三区,国产经典免费视频在线观看 ,久久久精品国产亚洲麻色欲,国产大片喷水在线在线视频,亚洲一区二区成人,女人18一级毛片免费观看
| 項目咨詢 |積分體系 | 加入收藏 | 設(shè)為首頁 | RSS
您當(dāng)前的位置:首頁 > 市場 > 百科 > 技術(shù) > 夸父專欄

基于RICHVIEW的EMR開發(fā)文檔十二

時間:2013-10-08 20:45:54  來源:  作者:
更多

 http://blog.sina.com.cn/game7788

   夸父
下面例子實現(xiàn)ms word風(fēng)格的段落整體對齊功能,當(dāng)在段落頭按下tab鍵時,段落整體向右收縮,當(dāng)按下backspace鍵時,段落整體向左收縮
//定義向右收縮樣式
ChangeFirstIndentConversion(Sender: TCustomRichViewEdit;
  StyleNo, UserData: Integer; AppliedToText: Boolean;
  var NewStyleNo: Integer);
var ParaStyle: TParaInfo;
begin
  ParaStyle := TParaInfo.Create(nil);
  ParaStyle.Assign(Sender.Style.ParaStyles[StyleNo]);
  ParaStyle.FirstIndent := UserData;
  ParaStyle.Standard := False;
  NewStyleNo := Sender.Style.ParaStyles.FindSuchStyle(StyleNo, ParaStyle,
    RVAllParaInfoProperties);
  if NewStyleNo<0 then begin
    Sender.Style.ParaStyles.Add.Assign(ParaStyle);
    NewStyleNo := Sender.Style.ParaStyles.Count-1;
  end;
  ParaStyle.Free;
end;
//定義向左收縮樣式
ChangeLeftIndentConversion(Sender: TCustomRichViewEdit;
  StyleNo, UserData: Integer; AppliedToText: Boolean;
  var NewStyleNo: Integer);
var ParaStyle: TParaInfo;
begin
  ParaStyle := TParaInfo.Create(nil);
  ParaStyle.Assign(Sender.Style.ParaStyles[StyleNo]);
  ParaStyle.LeftIndent := UserData;
  if ParaStyle.LeftIndent=0 then
    ParaStyle.FirstIndent := 0;
  ParaStyle.Standard := False;
  NewStyleNo := Sender.Style.ParaStyles.FindSuchStyle(StyleNo, ParaStyle,
    RVAllParaInfoProperties);
  if NewStyleNo<0 then begin
    Sender.Style.ParaStyles.Add.Assign(ParaStyle);
    NewStyleNo := Sender.Style.ParaStyles.Count-1;
  end;
  ParaStyle.Free;
end;
//實現(xiàn)過程
function ChangeIndent(rve: TCustomRichViewEdit;
  Step, Max: Integer): Boolean;
var OldParaStyleConversion: TRVStyleConversionEvent;
    FirstIndent, LeftIndent: Integer;
    ListNo, ListLevel, StartFrom: Integer;
    Reset: Boolean; 
begin
  Result := False;
  OldParaStyleConversion := rve.OnParaStyleConversion;
  try
    rve := rve.TopLevelEditor; 
    if rve.SelectionExists then
      exit;
    if (Step>0) and (rve.OffsetInCurItem<=rve.GetOffsBeforeItem(rve.CurItemNo)) and
       (rve.CurItemNo>0) and (rve.GetItemStyle(rve.CurItemNo-1)=rvsListMarker) then begin
       // 改變段落位置
       rve.GetListMarkerInfo(rve.CurItemNo, ListNo, ListLevel, StartFrom, Reset);
       if (ListNo>=0) and (ListNo<rve.Style.ListStyles.Count) and
          (ListLevel+1<rve.Style.ListStyles[ListNo].Levels.Count) then begin
         rve.ChangeListLevels(+1);
         Result := True;
       end;
       exit;
    end;
 
    if (rve.OffsetInCurItem>rve.GetOffsBeforeItem(rve.CurItemNo)) or
      not rve.IsParaStart(rve.CurItemNo) then
      exit; // 不在段落開頭不作處理
    if (rve.OffsetInCurItem>=rve.GetOffsAfterItem(rve.CurItemNo)) and
      ((rve.CurItemNo=rve.ItemCount-1) or rve.IsParaStart(rve.CurItemNo)) then
      exit; // 內(nèi)容為空,不作處理
    FirstIndent := rve.Style.ParaStyles[rve.GetItemPara(rve.CurItemNo)].FirstIndent;
    LeftIndent  := rve.Style.ParaStyles[rve.GetItemPara(rve.CurItemNo)].LeftIndent;
    if Step>0 then begin
      if FirstIndent=0 then begin
        rve.OnParaStyleConversion := ChangeFirstIndentConversion;
        rve.ApplyParaStyleConversion(Step);
        Result := True;
        end
      else begin
        inc(LeftIndent, Step);
        if LeftIndent>Max then
          LeftIndent := Max;
        if LeftIndent>rve.Style.ParaStyles[rve.GetItemPara(rve.CurItemNo)].LeftIndent then begin
          rve.OnParaStyleConversion := ChangeLeftIndentConversion;
          rve.ApplyParaStyleConversion(LeftIndent);
          Result := True;
        end;
      end
      end
    else begin
     if FirstIndent>0 then begin 
        rve.OnParaStyleConversion := ChangeFirstIndentConversion;
        rve.ApplyParaStyleConversion(0);
        Result := True;
        end
      else begin
        inc(LeftIndent, Step);
        if LeftIndent<0 then
          LeftIndent := 0;
        if (LeftIndent
           (FirstIndent<>0) then begin
          rve.OnParaStyleConversion := ChangeLeftIndentConversion;
          rve.ApplyParaStyleConversion(LeftIndent);
          Result := True;
        end;
      end;
    end;
  finally
    rve.OnParaStyleConversion := OldParaStyleConversion;
  end;
end;
//最后在keypress下面處理
var step: Integer;
  begin
  if Key=#9 then begin
    step := 48;
    if GetAsyncKeyState(VK_SHIFT)and$8000<>0 then
      step := -step;
    if ChangeIndent(TCustomRichViewEdit(Sender), step, 480) then
      Key := #0;
  end;
  end;
來頂一下
返回首頁
返回首頁
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欄目更新
欄目熱門
主站蜘蛛池模板: 手机在线免费不卡一区二| 88av在线| 国产第一色| 人妻21p大胆| 伊人久久影视| 亚洲男人天堂网址| 亚洲成人动漫在线观看| 在线观看国产小视频| 无码精油按摩潮喷在线播放| 国产午夜福利片在线观看| 国产亚洲欧美在线中文bt天堂| 免费高清a毛片| 青青青亚洲精品国产| 亚洲全网成人资源在线观看| 99精品热视频这里只有精品7| 看国产一级毛片| 亚洲系列无码专区偷窥无码| 色婷婷成人| 国产天天射| 国产亚洲精品在天天在线麻豆| 国产综合欧美| 午夜毛片福利| 亚洲va精品中文字幕| 亚洲天堂久久| 国产乱子伦视频在线播放| 91青青在线视频| 成年av福利永久免费观看| 人妻丰满熟妇av五码区| 国产真实自在自线免费精品| 日本免费一区视频| 久久综合丝袜日本网| 久久国产精品夜色| 国产视频自拍一区| 亚洲天堂啪啪| 无码中文字幕精品推荐| 久久精品女人天堂aaa| 久久一级电影| 91色国产在线| 免费国产黄线在线观看| 91成人在线观看视频| 久久窝窝国产精品午夜看片| 亚洲中文字幕久久精品无码一区| 欧美成人免费午夜全| 亚洲综合经典在线一区二区| 国产主播福利在线观看| 日韩免费成人| 91无码视频在线观看| 91精品人妻一区二区| 国产AV无码专区亚洲A∨毛片| 九九热精品免费视频| 国产一区二区精品福利| 91小视频版在线观看www| 日本免费福利视频| 亚洲欧洲日产无码AV| 青青操国产| 亚洲手机在线| 久久美女精品国产精品亚洲| 无码精品国产dvd在线观看9久| 亚洲另类第一页| 免费女人18毛片a级毛片视频| 精品久久香蕉国产线看观看gif | 日韩精品无码免费专网站| 欧美激情一区二区三区成人| 欧美不卡二区| 波多野结衣中文字幕一区二区| 男女猛烈无遮挡午夜视频| 小说 亚洲 无码 精品| 国产区在线观看视频| 毛片免费网址| 国产又粗又猛又爽视频| 国产精品无码一区二区桃花视频| 精品视频一区二区三区在线播| 久久国产精品波多野结衣| 免费国产无遮挡又黄又爽| 一区二区三区成人| 国产一区二区三区在线精品专区 | 鲁鲁鲁爽爽爽在线视频观看 | 久久动漫精品| 自拍偷拍欧美日韩| 天天做天天爱夜夜爽毛片毛片| 婷婷伊人久久| 欧美激情视频在线观看一区|