综合午夜福利中文字幕人妻,国产日韩精品一区在线不卡,综合激情久久精品女人天堂,国产成人精品一区二区视频,欧美成人片一区二区三区,亚洲AV无码精品色欲av,国产精品亚洲欧美大片在线看 ,av草草久久久久久久久久久
| 項目咨詢 |積分體系 | 加入收藏 | 設為首頁 | RSS
您當前的位置:首頁 > 市場 > 百科 > 技術 > 夸父專欄

基于RICHVIEW的EMR開發文檔十二

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

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

   夸父
下面例子實現ms word風格的段落整體對齊功能,當在段落頭按下tab鍵時,段落整體向右收縮,當按下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;
//實現過程
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; // 內容為空,不作處理
    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;
來頂一下
返回首頁
返回首頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
欄目更新
欄目熱門
国产一线二线三线女| 欧美日韩人人模人人爽人人喊 | 成人精品视频一区二区在线 | 亚洲天堂av社区久久| 国产偷倩视频| 欧美区国产区| 日本高清视频www夜色资源| 亚洲综合色无码| 色婷婷久久一区二区三区| 亚洲 自拍 另类 欧美 综合| 欧美在线资源| 99久久久69精品一区二区三区| 蜜臀av免费一区二区三区| 米奇精品一区二区三区| 久久久久噜噜噜亚洲熟女综合| 丰满女人又爽又紧又丰满| 国产激情一区二区三区在线蜜臀| 中文字幕人妻互换av久久 | 日本a在线天堂| 少妇激情av一区二区三区| 欧美在线视频a| 久久久久久欧美精品se一二三四 | 婷婷成人综合激情在线视频播放| 国产69口爆吞精在线视频喝尿| 久久午夜伦鲁片免费无码| 天天视频黄网站在线观看| 久久国语露脸国产精品电影 | 亚洲中中文字幕第一页| 午夜成人鲁丝片午夜精品| 一区二区三区啪偷拍| 国产精品久久久久久久久久久久人四虎| 国产片免费福利片永久| 美女丝袜诱惑一区二区三区| 99久久超碰中文字幕伊人| 亚洲天堂免费| 首页 综合国产 亚洲 丝袜日本 | 久久综合久久鬼色| 内射人妻无码色AV天堂| 亚洲午夜性猛春交xxxx| 国内精品人妻无码久久久影院94 | 欧美全免费aaaaaa特黄在线|