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

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

?? tflatchecklistboxunit.pas

?? 貨代程序
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
  // Draw the down arrow
  y := ClientRect.Bottom - 7;
  if (firstItem + maxItems + 1 <= FItems.Count) and Enabled then
  begin
    canvas.Brush.Color := FArrowColor;
    canvas.Pen.Color := FArrowColor;
    canvas.Polygon([Point(X + 4, Y), Point(X + 8, Y), Point(X + 6, Y + 2)]);
  end
  else
  begin
    canvas.Brush.Color := clWhite;
    canvas.Pen.Color := clWhite;
    Inc(x); Inc(y);
    canvas.Polygon([Point(X + 4, Y), Point(X + 8, Y), Point(X + 6, Y + 2)]);
    Dec(x); Dec(y);
    canvas.Brush.Color := clGray;
    canvas.Pen.Color := clGray;
    canvas.Polygon([Point(X + 4, Y), Point(X + 8, Y), Point(X + 6, Y + 2)]);
  end;
end;

procedure TFlatCheckListBox.DrawCheckRect (canvas: TCanvas; start: TPoint; checked: Boolean);
var
  CheckboxRect: TRect;
begin

  {$IFDEF DFS_COMPILER_4_UP}
  if BidiMode = bdRightToLeft then
    CheckboxRect := Rect(start.x - 14, start.y + 3, start.x - 3, start.y + 14)
  else
    CheckboxRect := Rect(start.x + 3, start.y + 3, start.x + 14, start.y + 14);
  {$ELSE}
  CheckboxRect := Rect(start.x + 3, start.y + 3, start.x + 14, start.y + 14);
  {$ENDIF}

  canvas.pen.style := psSolid;
  canvas.pen.width := 1;
  // Background
  canvas.brush.color := FItemsRectColor;
  canvas.pen.color := FItemsRectColor;

  canvas.FillRect(CheckboxRect);

  // Tick
  if Checked then
  begin
    canvas.pen.color := FCheckColor;

    canvas.penpos := Point(CheckboxRect.left+2, CheckboxRect.top+4);
    canvas.lineto(CheckboxRect.left+6, CheckboxRect.top+8);
    canvas.penpos := Point(CheckboxRect.left+2, CheckboxRect.top+5);
    canvas.lineto(CheckboxRect.left+5, CheckboxRect.top+8);
    canvas.penpos := Point(CheckboxRect.left+2, CheckboxRect.top+6);
    canvas.lineto(CheckboxRect.left+5, CheckboxRect.top+9);
    canvas.penpos := Point(CheckboxRect.left+8, CheckboxRect.top+2);
    canvas.lineto(CheckboxRect.left+4, CheckboxRect.top+6);
    canvas.penpos := Point(CheckboxRect.left+8, CheckboxRect.top+3);
    canvas.lineto(CheckboxRect.left+4, CheckboxRect.top+7);
    canvas.penpos := Point(CheckboxRect.left+8, CheckboxRect.top+4);
    canvas.lineto(CheckboxRect.left+5, CheckboxRect.top+7);
  end;
  // Border
  canvas.brush.color := FBorderColor;
  canvas.FrameRect(CheckboxRect);
end;

procedure TFlatCheckListBox.Paint;
var
  memoryBitmap: TBitmap;
  counterRect, counterItem: Integer;
  itemRect: ^TRect;
  Format: UINT;
begin
  {$IFDEF DFS_COMPILER_4_UP}
  if BidiMode = bdRightToLeft then
    Format := DT_RIGHT or DT_VCENTER or DT_SINGLELINE or DT_NOPREFIX
  else
    Format := DT_LEFT or DT_VCENTER or DT_SINGLELINE or DT_NOPREFIX;
  {$ELSE}
  Format := DT_LEFT or DT_VCENTER or DT_SINGLELINE or DT_NOPREFIX;
  {$ENDIF}

  // create memory-bitmap to draw flicker-free
  memoryBitmap := TBitmap.Create;
  try
    memoryBitmap.Height := ClientRect.Bottom;
    memoryBitmap.Width := ClientRect.Right;
    memoryBitmap.Canvas.Font.Assign(Self.Font);

    // Clear Background
    case FTransparent of
      tmAlways:
        DrawParentImage(Self, memoryBitmap.Canvas);
      tmNone:
        begin
          memoryBitmap.canvas.Brush.Color := FItemsRectColor;
          memoryBitmap.canvas.FillRect(ClientRect);
        end;
      tmNotFocused:
        if Focused then
        begin
          memoryBitmap.canvas.Brush.Color := FItemsRectColor;
          memoryBitmap.canvas.FillRect(ClientRect);
        end
        else
          DrawParentImage(Self, memoryBitmap.Canvas);
    end;

    // Draw Border
    memoryBitmap.canvas.Brush.Color := FBorderColor;
    memoryBitmap.canvas.FrameRect(ClientRect);

    // Draw ScrollBars
    if ScrollBars then
      DrawScrollBar(memoryBitmap.canvas);

    // Initialize the counter for the Items
    counterItem := firstItem;

    // Draw Items
    for counterRect := 0 to maxItems - 1 do
    begin
      itemRect := FItemsRect.Items[counterRect];
      if (counterItem <= FItems.Count - 1) then
      begin
        // Item is selected
        if counterItem = FSelected then
        begin
          // Fill ItemRect
          memoryBitmap.canvas.brush.color := FItemsSelectColor;
          memoryBitmap.canvas.FillRect(itemRect^);
          // Draw ItemBorder
          memoryBitmap.canvas.brush.color := FBorderColor;
          memoryBitmap.canvas.FrameRect(itemRect^);
        end;
        if counterItem in FChecked then
        {$IFDEF DFS_COMPILER_4_UP}
          if BidiMode = bdRightToLeft then
            DrawCheckRect(memoryBitmap.canvas, Point(itemRect^.Right, itemRect^.top), true)
          else
            DrawCheckRect(memoryBitmap.canvas, Point(itemRect^.left, itemRect^.top), true)
          {$ELSE}
          DrawCheckRect(memoryBitmap.canvas, Point(itemRect^.left, itemRect^.top), true)
          {$ENDIF}
        else
          {$IFDEF DFS_COMPILER_4_UP}
          if BidiMode = bdRightToLeft then
            DrawCheckRect(memoryBitmap.canvas, Point(itemRect^.Right, itemRect^.top), false)
          else
            DrawCheckRect(memoryBitmap.canvas, Point(itemRect^.left, itemRect^.top), false);
          {$ELSE}
          DrawCheckRect(memoryBitmap.canvas, Point(itemRect^.left, itemRect^.top), false);
          {$ENDIF}
        // Draw ItemText
        memoryBitmap.canvas.brush.style := bsClear;
        InflateRect(itemRect^, -19, 0);
        if Enabled then
          DrawText(memoryBitmap.canvas.Handle, PChar(FItems[counterItem]), Length(FItems[counterItem]), itemRect^, Format)
        else
          begin
            OffsetRect(itemRect^, 1, 1);
            memoryBitmap.canvas.Font.Color := clBtnHighlight;
            DrawText(memoryBitmap.canvas.Handle, PChar(FItems[counterItem]), Length(FItems[counterItem]), itemRect^, Format);
            OffsetRect(itemRect^, -1, -1);
            memoryBitmap.canvas.Font.Color := clBtnShadow;
            DrawText(memoryBitmap.canvas.Handle, PChar(FItems[counterItem]), Length(FItems[counterItem]), itemRect^, Format);
          end;
        InflateRect(itemRect^, 19, 0);
        Inc(counterItem);
      end;
    end;
    // Copy bitmap to screen
    canvas.CopyRect(ClientRect, memoryBitmap.canvas, ClientRect);
  finally
    // delete the memory bitmap
    memoryBitmap.free;
  end;
end;

procedure TFlatCheckListBox.MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  cursorPos: TPoint;
  counterRect: Integer;
  currentRect: ^TRect;
  checkRect: TRect;
begin
  GetCursorPos(cursorPos);
  cursorPos := ScreenToClient(cursorPos);

  if (FItems.Count > 0) and (Button = mbLeft) then
  begin
    for counterRect := 0 to FItemsRect.Count - 1 do
    begin
      currentRect := FItemsRect.Items[counterRect];
      {$IFDEF DFS_COMPILER_4_UP}
      if BidiMode = bdRightToLeft then
        checkRect := Rect(currentRect.right - 14, currentRect.top + 3, currentRect.right - 3, currentRect.Top + 14)
      else
        checkRect := Rect(currentRect.left + 3, currentRect.top + 3, currentRect.left + 14, currentRect.Top + 14);
      {$ELSE}
      checkRect := Rect(currentRect.left + 3, currentRect.top + 3, currentRect.left + 14, currentRect.Top + 14);
      {$ENDIF}
      if PtInRect(checkRect, cursorPos) then
      begin
        if (firstItem + counterRect) in FChecked then
          Exclude(FChecked, firstItem + counterRect)
        else
          Include(FChecked, firstItem + counterRect);
        SetFocus;
        if Assigned(FOnClickCheck) then
          FOnClickCheck(Self);
        Invalidate;
        Exit;
      end
      else
        if PtInRect(currentRect^, cursorPos) then
        begin
          FSelected := firstItem + counterRect;
          SetFocus;
          Invalidate;
          Exit;
        end;
    end;
  end;

  if ScrollBars then
  begin
    if PtInRect(Rect(ClientRect.Left, ClientRect.Top, ClientRect.Right, ClientRect.Top + 11), cursorPos) then
    begin
      if (firstItem - 1) < 0 then
        firstItem := 0
      else
        Dec(firstItem);
      SetFocus;
      Invalidate;
      scrollType := up;
      if ScrollTimer.Enabled then
        ScrollTimer.Enabled := False;
      ScrollTimer.OnTimer := ScrollTimerHandler;
      ScrollTimer.Enabled := True;
    end;
    if PtInRect(Rect(ClientRect.Left, ClientRect.Bottom - 11, ClientRect.Right, ClientRect.Bottom), cursorPos) then
    begin
      if firstItem + maxItems + 1 <= FItems.Count then
        Inc(firstItem);
      SetFocus;
      Invalidate;
      scrollType := down;
      if ScrollTimer.Enabled then
        ScrollTimer.Enabled := False;
      ScrollTimer.OnTimer := ScrollTimerHandler;
      ScrollTimer.Enabled := True;
    end;
  end;
  Inherited;
end;

procedure TFlatCheckListBox.MouseUp (Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ScrollTimer.Enabled := False;
  ScrollTimer.Interval := FTimerInterval;
  inherited MouseUp(Button, Shift, X, Y);
end;

procedure TFlatCheckListBox.ScrollTimerHandler (Sender: TObject);
begin
  ScrollTimer.Interval := FScrollSpeed;
  if scrollType = up then
    if (firstItem - 1) < 0 then
    begin
      firstItem := 0;
      ScrollTimer.Enabled := False;
    end
    else
      Dec(firstItem)
  else
    if firstItem + maxItems + 1 <= FItems.Count then
      Inc(firstItem)
    else
      ScrollTimer.Enabled := False;
  Invalidate;
end;

procedure TFlatCheckListBox.Loaded;
begin
  inherited;
  SetItemsRect;
end;

procedure TFlatCheckListBox.WMSize (var Message: TWMSize);
begin
  inherited;
  // Calculate the maximum items to draw
  if ScrollBars then
    maxItems := (Height - 24) div (FItemsHeight + 2)
  else
    maxItems := (Height - 4) div (FItemsHeight + 2);

  // Set the new Bounds
  if ScrollBars then
    SetBounds(Left, Top, Width, maxItems * (FItemsHeight + 2) + 24)
  else
    SetBounds(Left, Top, Width, maxItems * (FItemsHeight + 2) + 4);

  // Recalculate the itemRects
  SetItemsRect;
  if not (FTransparent = tmNone) then
    Invalidate;
end;

procedure TFlatCheckListBox.WMMove (var Message: TWMMove);
begin
  inherited;
  if not (FTransparent = tmNone) then
    Invalidate;
end;

procedure TFlatCheckListBox.CMEnabledChanged (var Message: TMessage);
begin
  inherited;
  Invalidate;
end;

procedure TFlatCheckListBox.CMSysColorChange (var Message: TMessage);
begin
  if FUseAdvColors then
  begin
    ParentColor := True;
    CalcAdvColors;
  end;
  Invalidate;
end;

procedure TFlatCheckListBox.CMParentColorChanged (var Message: TWMNoParams);
begin
  inherited;
  if FUseAdvColors then
  begin
    ParentColor := True;
    CalcAdvColors;
  end;
  Invalidate;
end;

procedure TFlatCheckListBox.Clear;
begin
  FItems.Clear;
  FChecked := FChecked - [0..High(Byte)];
  FSelected := -1;
  Invalidate;
end;

procedure TFlatCheckListBox.SetTransparent (const Value: TTransparentMode);
begin
  FTransparent := Value;
  Invalidate;
end;

procedure TFlatCheckListBox.WMKillFocus (var Message: TWMKillFocus);
begin
  inherited;
  FSelected := -1;
  Invalidate;
end;

procedure TFlatCheckListBox.WMSetFocus (var Message: TWMSetFocus);
begin
  inherited;
  if not (FTransparent = tmNone) then
    Invalidate;
end;

procedure TFlatCheckListBox.CNKeyDown (var Message: TWMKeyDown);
begin
  case Message.CharCode of
    VK_UP: 
      if (firstItem - 1) < 0 then
        firstItem := 0
      else
        Dec(firstItem);
    VK_DOWN:
      if firstItem + maxItems + 1 <= FItems.Count then
        Inc(firstItem);
    VK_PRIOR:
      if (firstItem - maxItems) < 0 then
        firstItem := 0
      else
        Dec(firstItem, maxItems);
    VK_NEXT:
      if firstItem + (maxItems * 2) <= FItems.Count then
        Inc(firstItem, maxItems)
      else
        firstItem := FItems.Count - maxItems;
    VK_SPACE:
      if FSelected in FChecked then
          Exclude(FChecked, FSelected)
        else
          Include(FChecked, FSelected);
  else                                          
    inherited;
  end;
  Invalidate;
end;

function TFlatCheckListBox.GetItemIndex: Integer;
begin
  Result := FSelected;
end;

procedure TFlatCheckListBox.SetItemIndex(Value: Integer);
begin
  if GetItemIndex <> Value then
  begin
    FSelected := Value;
    Invalidate;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线一区二区三区做爰视频网站| 国产精品久久久久婷婷| 日韩精品1区2区3区| 69堂亚洲精品首页| 水野朝阳av一区二区三区| 51久久夜色精品国产麻豆| 五月天国产精品| 欧美日韩一区二区三区四区五区| 夜色激情一区二区| 欧美狂野另类xxxxoooo| 亚洲国产乱码最新视频 | jizzjizzjizz欧美| 亚洲女同ⅹxx女同tv| 欧美日韩视频第一区| 亚洲成人激情自拍| 精品久久久久久久久久久久包黑料| 久久国产精品第一页| 久久精品视频在线看| 色爱区综合激月婷婷| 国产综合久久久久久鬼色 | 午夜精品久久久久影视| 2021久久国产精品不只是精品| 国产成人啪午夜精品网站男同| 亚洲免费在线电影| 欧美精品一区二区三区四区| 91一区二区在线观看| 亚欧色一区w666天堂| 国产精品久久久久国产精品日日| 欧美日韩的一区二区| 不卡视频一二三| 国产综合色在线| 日本美女视频一区二区| 亚洲精品乱码久久久久久日本蜜臀| 7777精品伊人久久久大香线蕉的| 成人免费看片app下载| 人人精品人人爱| 亚洲一区电影777| 亚洲人成精品久久久久| 中文字幕一区二区不卡| 亚洲国产精品高清| 久久女同性恋中文字幕| 欧美精品一区二区精品网| 日韩精品一区二区三区视频在线观看| 91视频一区二区三区| 99re这里都是精品| 99re这里只有精品首页| 成人精品免费看| 成人ar影院免费观看视频| 粗大黑人巨茎大战欧美成人| 国产精品亚洲第一| 成人免费高清在线| 国产成人免费网站| 99九九99九九九视频精品| 一本久久综合亚洲鲁鲁五月天 | 色先锋资源久久综合| 在线视频国内自拍亚洲视频| 在线观看一区二区视频| 久久亚洲春色中文字幕久久久| 欧美无砖砖区免费| 精品久久久久久久久久久院品网| 精品成人a区在线观看| 亚洲国产美女搞黄色| 国产天堂亚洲国产碰碰| 国产亚洲福利社区一区| 亚洲欧美另类综合偷拍| 成人免费一区二区三区视频 | 一区精品在线播放| 日韩国产欧美三级| 懂色av一区二区三区蜜臀| 欧美亚一区二区| 久久久久国产免费免费 | 国产清纯美女被跳蛋高潮一区二区久久w| 国产精品三级视频| 亚洲超丰满肉感bbw| 不卡的电影网站| 日韩一区二区在线观看视频 | 奇米精品一区二区三区在线观看| 国产最新精品免费| 欧美区视频在线观看| 国产欧美一区二区精品仙草咪| 亚洲国产日韩一区二区| 成人免费va视频| 精品国产一区二区三区久久影院 | 欧美系列在线观看| 欧美国产一区在线| 精品亚洲欧美一区| 欧美一区二区三区人| 一个色综合网站| jlzzjlzz亚洲日本少妇| 久久网站最新地址| 国产综合久久久久久久久久久久| 欧美日韩黄色影视| 国产在线精品一区二区| 91久久精品国产91性色tv| 国产精品日韩成人| 岛国av在线一区| 中文字幕日本乱码精品影院| 国产精品一区二区黑丝| 久久久久国产精品麻豆ai换脸| 美女视频黄免费的久久| 欧美日韩国产综合一区二区| 亚洲福利视频一区二区| 欧美日韩五月天| 天天综合天天做天天综合| 欧美一区二区三区视频在线观看 | 中文字幕精品一区二区三区精品| 久草精品在线观看| 久久久电影一区二区三区| 高潮精品一区videoshd| 亚洲素人一区二区| 欧美日韩中文字幕精品| 日韩高清不卡在线| 国产日韩欧美一区二区三区综合| 国产精品一卡二卡在线观看| 亚洲日本一区二区三区| 91麻豆精品国产综合久久久久久| 国产精品亚洲午夜一区二区三区| 综合在线观看色| 日韩欧美成人激情| 99久久精品国产精品久久| 视频在线观看一区二区三区| 久久久一区二区三区捆绑**| 一本一本大道香蕉久在线精品 | 欧美日韩中文字幕一区二区| 国产成人免费av在线| 日韩制服丝袜av| 亚洲码国产岛国毛片在线| 欧美精品一区二区三区很污很色的| 不卡的av中国片| 91高清视频在线| 国产麻豆成人传媒免费观看| 亚洲自拍偷拍麻豆| 亚洲三级电影全部在线观看高清| 亚洲精品一区二区三区蜜桃下载 | 五月天激情综合| 亚洲一区二区五区| 亚洲免费大片在线观看| 国产欧美日韩另类一区| 精品欧美一区二区在线观看| 欧美一区二区黄| 在线观看91av| 欧美日韩1区2区| 欧美美女bb生活片| 欧美日本一区二区三区四区| 欧美日韩在线播| 欧美三级视频在线观看| 欧美色窝79yyyycom| 在线亚洲免费视频| 欧美日韩在线直播| 欧美日韩在线播放一区| 欧美日韩专区在线| 日韩免费一区二区| 久久综合久色欧美综合狠狠| 久久欧美中文字幕| 亚洲图片另类小说| 午夜精品福利一区二区蜜股av| 老司机午夜精品99久久| 国产一区999| 日韩一级片在线观看| 精品奇米国产一区二区三区| 久久久电影一区二区三区| 国产精品久久精品日日| 亚洲国产成人av好男人在线观看| 日本成人在线一区| 色视频欧美一区二区三区| 欧美一区二区三区免费视频 | 欧美在线观看视频在线| 日韩精品一区二区三区蜜臀| 国产日韩欧美在线一区| 亚洲动漫第一页| 国产激情一区二区三区四区| 欧美三级视频在线观看| 国产调教视频一区| 日韩成人午夜精品| eeuss影院一区二区三区 | 99精品国产99久久久久久白柏| 欧美系列一区二区| 国产精品区一区二区三| 麻豆一区二区99久久久久| 91一区二区三区在线播放| 欧美一区二区免费视频| 亚洲精品视频在线| 不卡欧美aaaaa| 国产精品狼人久久影院观看方式| 日韩国产在线观看一区| 色婷婷综合激情| 中文字幕亚洲视频| 丰满少妇在线播放bd日韩电影| 4438成人网| 日韩二区三区四区| 欧美日韩一区 二区 三区 久久精品| 亚洲成人动漫精品| 成人免费看的视频| 一区在线观看免费| 色欧美日韩亚洲| 亚洲成人av在线电影| 97精品视频在线观看自产线路二| 又紧又大又爽精品一区二区| 欧美中文字幕一区二区三区亚洲| 中文字幕视频一区|