亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unit1.pas

?? TRichView/RichView 是一套地道的Delphi/C++Builder控件
?? PAS
字號:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RVStyle, RVScroll, RichView;

type
  TForm1 = class(TForm)
    RichView1: TRichView;
    RVStyle1: TRVStyle;
    RichView2: TRichView;
    procedure RVStyle1DrawStyleText(Sender: TRVStyle; const s: String;
      Canvas: TCanvas; StyleNo, SpaceBefore, Left, Top, Width,
      Height: Integer; DrawState: TRVTextDrawStates;
      var DoDefault: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure RVStyle1StyleHoverSensitive(Sender: TRVStyle;
      StyleNo: Integer; var Sensitive: Boolean);
    procedure RVStyle1DrawTextBack(Sender: TRVStyle; Canvas: TCanvas;
      StyleNo, Left, Top, Width, Height: Integer;
      DrawState: TRVTextDrawStates; var DoDefault: Boolean);
    procedure RVStyle1DrawCheckpoint(Sender: TRVStyle; Canvas: TCanvas; X,
      Y, ItemNo, XShift: Integer; RaiseEvent: Boolean; Control: TControl;
      var DoDefault: Boolean);
    procedure RVStyle1DrawPageBreak(Sender: TRVStyle; Canvas: TCanvas; Y,
      XShift: Integer; PageBreakType: TRVPageBreakType; Control: TControl; var DoDefault: Boolean);
    procedure RVStyle1DrawParaBack(Sender: TRVStyle; Canvas: TCanvas;
      ParaNo: Integer; ARect: TRect; var DoDefault: Boolean);
    procedure RichView2Paint(Sender: TCustomRichView; Canvas: TCanvas;
      Prepaint: Boolean);
    procedure RichView2RVMouseUp(Sender: TCustomRichView;
      Button: TMouseButton; Shift: TShiftState; ItemNo, X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{============================== DRAWING ROUTINES ==============================}

{$R-} // turning off range checking (required for DrawTrRect)
{------------------------------------------------------------------------------}
{ Drawing left to right arrow                                                  }
{------------------------------------------------------------------------------}
procedure DrawArrow(Canvas: TCanvas; Left, Top, Width, Height: Integer);
var midx,midy: Integer;
    one, two : Integer;
begin
   midx := Left+Width div 2;
   midy := Top+Height div 2;
   if Width>0 then begin
     one := 1;
     two := -2;
   end
   else begin
     one := -1;
     two := 2;
   end;
   Canvas.PolyLine([Point(Left+one,Top+3),
                    Point(midx,Top+3),
                    Point(midx,Top+1),
                    Point(Left+Width+two, midy),
                    Point(midx, Top+Height-2),
                    Point(midx, Top+Height-4),
                    Point(Left+one,Top+Height-4),
                    Point(Left+one,Top+3)
                    ]);
end;
{------------------------------------------------------------------------------}
{ Drawing an icon for page breaks                                              }
{------------------------------------------------------------------------------}
procedure DrawPageIcon(Canvas: TCanvas; Left, Top, Width, Height: Integer);
var LeftS, RightS: Integer;
begin
  LeftS := Left+2;
  RightS := Left+Width-4;
  Canvas.PolyLine([Point(RightS-3,Top),
                   Point(LeftS,Top),
                   Point(LeftS, Top+Height),
                   Point(RightS,Top+Height),
                   Point(RightS,Top+3),
                   Point(RightS-3,Top),
                   Point(RightS-3,Top+3),
                   Point(RightS,Top+3)
                   ]);
   Canvas.Pen.Style := psDot;
   Canvas.Pen.Color := clRed;
   Canvas.MoveTo(Left, Top+Height div 2);
   Canvas.LineTo(Left+Width, Top+Height div 2);
end;
{------------------------------------------------------------------------------}
{ Drawing a colored rectangle with specified degree of opacity (0..255)        }
{ (quite slow...)                                                              }
{------------------------------------------------------------------------------}
procedure DrawTrRect(Canvas: TCanvas; const ARect: TRect;
                     Color: TColor;
                     Opacity: Integer);
type
  RGBARR = array [0..0] of TRGBQUAD;
  PRGBARR = ^RGBARR;
var prgb: PRGBARR;
    rgb : TRGBQUAD;
   i,j: Integer;
   tr : Integer;
   Clr: LongInt;
   bmp: TBitmap;
begin
  Clr := ColorToRGB(Color);
  rgb.rgbRed      := Clr and $000000FF;
  rgb.rgbGreen    := (Clr and $0000FF00) shr 8;
  rgb.rgbBlue     := (Clr and $00FFFFFF) shr 16;
  rgb.rgbReserved := 0;

  bmp := TBitmap.Create;
  bmp.PixelFormat := pf32bit;
  bmp.Width := ARect.Right-ARect.Left;
  bmp.Height := ARect.Bottom-ARect.Top;
  bmp.Canvas.CopyRect(Rect(0,0,bmp.Width,bmp.Height), Canvas, ARect);

  tr := 255 - Opacity;
  for i := 0 to bmp.Height-1 do begin
    prgb := PRGBARR(bmp.ScanLine[i]);
    for j := 0 to bmp.Width-1 do
      with prgb[j] do begin
        rgbBlue  := (rgbBlue*tr  + rgb.rgbBlue*Opacity) div 255;
        rgbGreen := (rgbGreen*tr + rgb.rgbGreen*Opacity)div 255;
        rgbRed   := (rgbRed*tr   + rgb.rgbRed*Opacity) div 255;
      end;
  end;
  Canvas.Draw(ARect.Left, ARect.Top, bmp);
  bmp.Free;
end;
{------------------------------------------------------------------------------}
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
  RichView1.AddNL('Example',1,1);
  RichView1.AddNL('This is an example of the new feature - ',0,0);
  RichView1.AddNL('custom drawn text',3,-1);
  RichView1.AddNL('.',0,-1);
  RichView1.AddNL(' Hot link 1 ',4,1);
  RichView1.AddNL(' Hot link 2 ',5,1);
  RichView1.AddBreakEx(1, rvbsLine, clBtnShadow);
  RichView1.AddCheckpoint;
  RichView1.AddNL('Another example - a custom drawing of checkpoints.',0,0);
  RichView1.AddCheckpoint;
  RichView1.AddNL('For example, you can draw a little nice arrow instead of default dotted line.',0,0);
  RichView1.AddBreakEx(1, rvbsLine, clBtnShadow);
  RichView1.AddNL('One more example - a custom displaying of page break',0,0);
  RichView1.PageBreaksBeforeItems[RichView1.ItemCount-1] := True;
  RichView1.Format;

  RichView2.AddNL('Cool Effect - ',2,2);
  RichView2.SetAddParagraphMode(False);
  RichView2.AddNL('Transparent paragraph background.',2,2);
  RichView2.AddNL('example of custom painting of paragraph background',0,2);
  RichView2.SetAddParagraphMode(True);
  for i := 0 to 20 do
    RichView2.AddNL('This is the example how to use OnDrawParaBack and OnPaint events.',0,0);
  RichView2.Format;
end;
{------------------------------------------------------------------------------}
{ Should RichView repaint itself if mouse is over text of specified style?     }
{------------------------------------------------------------------------------}
procedure TForm1.RVStyle1StyleHoverSensitive(Sender: TRVStyle;
  StyleNo: Integer; var Sensitive: Boolean);
begin
  if StyleNo in [4,5] then
    Sensitive := True; // (default for other styles)
end;
{------------------------------------------------------------------------------}
{ Drawing a background of text                                                 }
{------------------------------------------------------------------------------}
procedure TForm1.RVStyle1DrawTextBack(Sender: TRVStyle; Canvas: TCanvas;
  StyleNo, Left, Top, Width, Height: Integer; DrawState: TRVTextDrawStates;
  var DoDefault: Boolean);
var r: TRect;
begin
  case StyleNo of
    5:
      begin
        // drawing a sunken edge for the 5th style
        r := Bounds(Left,Top, Width, Height);
        if rvtsHover in DrawState then
          DrawEdge(Canvas.Handle, r, BDR_SUNKENOUTER or BF_ADJUST, BF_RECT)
      end;
  end;
end;
{------------------------------------------------------------------------------}
{ Drawing a text                                                               }
{------------------------------------------------------------------------------}
procedure TForm1.RVStyle1DrawStyleText(Sender: TRVStyle; const s: String;
  Canvas: TCanvas; StyleNo, SpaceBefore, Left, Top, Width, Height: Integer;
  DrawState: TRVTextDrawStates; var DoDefault: Boolean);
begin
  if rvtsSelected in DrawState then
    exit; // default drawing for selected text
  inc(Left, SpaceBefore);
  case StyleNo of
    0:
      begin
        // sunken effect
        Canvas.Font.Color := clBtnHighlight;
        Canvas.TextOut(Left+1,Top+1, s);
        Canvas.Font.Color := clBtnShadow;
        Canvas.TextOut(Left,Top, s);
        DoDefault := False;
      end;
    3:
      begin
        // raised effect
        Canvas.Font.Color := clBtnHighlight;
        Canvas.TextOut(Left-1,Top-1, s);
        Canvas.Font.Color := clBtnShadow;
        Canvas.TextOut(Left+1,Top+1, s);
        DoDefault := False;
      end;
    4:
      begin
        if rvtsHover in DrawState then begin
          // hot glow effect
          Canvas.Font.Color := Sender.TextStyles[StyleNo].HoverColor;
          Canvas.TextOut(Left+1,Top+1, s);
          Canvas.TextOut(Left-1,Top-1, s);
          Canvas.Font.Color := Sender.TextStyles[StyleNo].Color;
          Canvas.TextOut(Left,Top, s);
          DoDefault := False;
        end;
      end;
  end;
end;
{------------------------------------------------------------------------------}
{ Drawing checkpoint as arrow icon                                             }
{------------------------------------------------------------------------------}
procedure TForm1.RVStyle1DrawCheckpoint(Sender: TRVStyle; Canvas: TCanvas;
  X, Y, ItemNo, XShift: Integer; RaiseEvent: Boolean; Control: TControl;
  var DoDefault: Boolean);
begin
  if RaiseEvent then
    Canvas.Pen.Color := Sender.CheckpointEvColor
  else
    Canvas.Pen.Color := Sender.CheckpointColor;
  DrawArrow(Canvas, -XShift+2, Y-5, RichView1.LeftMargin-4, 10);
  DoDefault := False;
end;
{------------------------------------------------------------------------------}
{ Drawing page break as icon                                                   }
{------------------------------------------------------------------------------}
procedure TForm1.RVStyle1DrawPageBreak(Sender: TRVStyle; Canvas: TCanvas;
  Y, XShift: Integer; PageBreakType: TRVPageBreakType; Control: TControl; var DoDefault: Boolean);
begin
  Canvas.Pen.Color := Sender.PageBreakColor;
  DrawPageIcon(Canvas, -XShift+2, Y-8, 16, 16);
  DoDefault := False;
end;
{------------------------------------------------------------------------------}
{ Drawing a background of paragraphs                                           }
{------------------------------------------------------------------------------}
procedure TForm1.RVStyle1DrawParaBack(Sender: TRVStyle; Canvas: TCanvas;
  ParaNo: Integer; ARect: TRect; var DoDefault: Boolean);
begin
  if ParaNo=2 then begin
    // semi-transparent background for second paragraph style
    DrawTrRect(Canvas, ARect, Sender.ParaStyles[ParaNo].Background.Color, 150);
    DoDefault := False;
  end;
end;
{------------------------------------------------------------------------------}
{ Drawing unscrollable picture                                                 }
{------------------------------------------------------------------------------}
procedure TForm1.RichView2Paint(Sender: TCustomRichView; Canvas: TCanvas;
  Prepaint: Boolean);
var x,y: Integer;
    r: TRect;
begin
  Canvas.Pen.Color := clRed;
  Canvas.Pen.Width := 3;
  Canvas.Brush.Color := clBlack;
  x := Sender.ClientWidth-10;
  y := Sender.ClientHeight-10;
  Canvas.Ellipse(x-10, y-10, x+10, y+10);
  r := Bounds(x-10, y-10, 20, 20);
  Canvas.Brush.Style := bsClear;
  Canvas.Font.Color := clRed;
  Canvas.Font.Name  := 'Arial';
  Canvas.Font.Style := [fsBold];
  Canvas.Font.Size := 12;  
  DrawText(Canvas.Handle, '!', 1, r, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
end;

procedure TForm1.RichView2RVMouseUp(Sender: TCustomRichView;
  Button: TMouseButton; Shift: TShiftState; ItemNo, X, Y: Integer);
begin
  if (x>Sender.ClientWidth-20) and (y>Sender.ClientHeight-20) then
    Application.MessageBox('!','!', MB_OK or MB_ICONINFORMATION);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性生交片4| 一级做a爱片久久| 日日夜夜免费精品| 欧美性淫爽ww久久久久无| 欧美国产精品中文字幕| 国产成人在线视频播放| 亚洲欧美日韩中文字幕一区二区三区| 免费黄网站欧美| 日韩三级在线观看| 日本特黄久久久高潮| 91精品久久久久久久91蜜桃| 蜜桃免费网站一区二区三区| 欧美成人综合网站| 精品一区二区免费| 久久久久久麻豆| 精品久久久久一区| 日本一区二区不卡视频| 成人av综合一区| 国产成a人亚洲| 亚洲精品v日韩精品| 欧美日韩免费观看一区二区三区| 亚洲午夜免费电影| 欧美tk—视频vk| jlzzjlzz亚洲日本少妇| 亚洲成人免费影院| 久久午夜羞羞影院免费观看| 99久久精品免费观看| 日韩不卡手机在线v区| 国产亚洲女人久久久久毛片| 成人av电影免费在线播放| 色菇凉天天综合网| 狠狠色丁香婷婷综合| 成人激情文学综合网| 成人黄色在线视频| 亚洲最色的网站| 精品国产凹凸成av人网站| 99re视频精品| 美女脱光内衣内裤视频久久网站| 国产欧美日韩卡一| 欧美精品高清视频| av网站免费线看精品| 免费在线观看日韩欧美| 亚洲欧洲99久久| 亚洲精品在线免费观看视频| 日本精品视频一区二区| 久久99精品国产| 婷婷国产在线综合| 国产精品成人一区二区艾草| 欧美xxxxx牲另类人与| 欧美日韩午夜在线| 久久aⅴ国产欧美74aaa| 国产91高潮流白浆在线麻豆 | 丁香婷婷综合激情五月色| 婷婷开心激情综合| 亚洲资源中文字幕| 亚洲蜜臀av乱码久久精品蜜桃| 精品福利一区二区三区免费视频| 亚洲欧美日韩国产手机在线| 国产精品成人在线观看| 亚洲视频在线一区| 自拍偷自拍亚洲精品播放| 久久精品视频在线看| 亚洲精品一区二区三区在线观看| 日韩一级片在线观看| 欧美一级日韩一级| 亚洲欧美另类小说视频| 国产一区二区在线观看免费| 日一区二区三区| 日韩中文字幕麻豆| 蜜桃视频一区二区| 久久精品国产第一区二区三区| 麻豆精品新av中文字幕| 精品亚洲欧美一区| 国产精品自拍三区| 成人爱爱电影网址| 91国在线观看| 欧美一区二区三区公司| 久久久午夜精品理论片中文字幕| 中文字幕av一区二区三区| 中文字幕综合网| 亚洲电影在线播放| 精品一区二区国语对白| 99久久婷婷国产综合精品| 欧美日韩一级二级三级| www.久久精品| 91麻豆精品国产自产在线| 欧美一级一级性生活免费录像| 欧美精品v国产精品v日韩精品| 午夜久久久久久久久久一区二区| 4438x亚洲最大成人网| 久久亚洲一区二区三区明星换脸| 成人免费在线视频| 久热成人在线视频| 91日韩一区二区三区| 欧美一区二区三区思思人| 亚洲欧美中日韩| 韩国女主播成人在线| 欧美午夜精品久久久| 欧美激情艳妇裸体舞| 日本美女视频一区二区| 91丨九色丨黑人外教| 久久亚洲精精品中文字幕早川悠里| 精品蜜桃在线看| 亚洲视频 欧洲视频| 理论电影国产精品| 欧美日韩精品免费| 成人免费高清在线观看| 欧美电影免费观看高清完整版在 | 欧美日韩大陆在线| 亚洲男人都懂的| 成人的网站免费观看| 久久一二三国产| 国产精品18久久久久久vr| 91精品国产综合久久蜜臀| 亚洲va国产天堂va久久en| 91年精品国产| 欧美国产一区二区| 国产激情视频一区二区三区欧美| 欧美一区二区三区视频在线| 亚洲成av人在线观看| 26uuu久久综合| 欧美精品1区2区| 亚洲国产一区在线观看| 一本大道av伊人久久综合| 日韩美女视频一区二区| 色综合中文字幕国产 | 欧美丝袜自拍制服另类| 一区二区三区高清不卡| 日本电影亚洲天堂一区| 亚洲美女免费在线| 欧美日韩国产中文| 美女视频黄 久久| 国产偷国产偷精品高清尤物| 美女视频一区二区三区| 久久99国产精品免费网站| 精品国产sm最大网站| 精品一二三四在线| 国产精品传媒视频| 欧美日韩国产免费一区二区| 日韩国产精品91| 久久久精品免费网站| 色综合一个色综合| 午夜精品一区二区三区电影天堂 | 亚洲一区二区三区在线| 日韩亚洲欧美成人一区| 国产成人综合在线观看| 亚洲最大色网站| 久久丝袜美腿综合| 欧美日韩一二三区| 国产精品亚洲视频| 国产偷国产偷亚洲高清人白洁| 成人免费毛片片v| 日韩精品三区四区| 1000部国产精品成人观看| 日韩精品在线一区二区| 成人av中文字幕| 激情综合五月天| 日一区二区三区| 亚洲国产乱码最新视频 | 日韩精品一区二区三区四区| 91同城在线观看| 国产高清不卡二三区| 日韩av一级片| 亚洲综合在线电影| 亚洲免费av观看| 国产精品免费视频网站| 精品美女在线播放| 91精品国产欧美日韩| 欧美巨大另类极品videosbest| 色婷婷激情久久| 91在线视频观看| 成人国产电影网| 99久久国产综合精品麻豆| 国产99精品国产| 欧美不卡一区二区三区| 91在线精品一区二区| 国产成人免费在线视频| 国产一区视频网站| 久88久久88久久久| 精品一区二区免费| 国产一本一道久久香蕉| 日产精品久久久久久久性色| 五月天一区二区| 日本特黄久久久高潮| 蜜臀91精品一区二区三区 | 粉嫩aⅴ一区二区三区四区| 国产精品亚洲人在线观看| 粉嫩一区二区三区在线看| 成人黄色片在线观看| 一本大道综合伊人精品热热| 欧美三级韩国三级日本一级| 欧美伦理影视网| 26uuu国产在线精品一区二区| 国产色综合一区| 亚洲欧美日本在线| 福利一区在线观看| 天堂在线亚洲视频| 激情五月婷婷综合| aa级大片欧美| 欧美视频中文字幕|