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

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

?? sdbcombobox.pas

?? AlphaControls是一個Delphi標準控件的集合
?? PAS
字號:
unit sDBComboBox;
{$I sDefs.inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DBCtrls, sConst, sUtils, sGraphUtils,
  sGlyphUtils, math, sStyleEdits;

type
  TsDBComboBox = class(TDBComboBox)
  private
    FAlignment : TAlignment;
    FGlyphMode: TsGlyphMode;
    FButtonMargin: integer;

    function ButtonRect: TRect;
    procedure CNCommand (var Message: TWMCommand); message CN_COMMAND;
    procedure WMPaint (var Message: TWMPaint); message WM_PAINT;
    procedure WMNCPaint (var Message: TWMPaint); message WM_NCPAINT;

    procedure SetAlignment(const Value: TAlignment);
    procedure SetButtonMargin(const Value: integer);
  protected
    FActive : boolean;
    FCharsInCode : integer;
    FsStyle : TsStyle;
    FUseItemIndex : boolean;
    BorderStyle : TFormBorderStyle;
    FDefBmpName : string;

    procedure DropDown; override;
    function GetClientRect: TRect; override;

    procedure WndProc (var Message: TMessage); override;
    procedure CreateWnd; override;
  public
    FChildHandle: HWND;
    FDefListProc: Pointer;
    FListHandle: HWND;
    FListInstance: Pointer;
    FDropDown : boolean;

    constructor Create(AOwner:TComponent); override;
    destructor Destroy; override;

    property Color;
    procedure Invalidate; override;
    procedure InvalidateSelection;
    procedure PaintButton;
    function ButtonWidth : integer;
    function ButtonHeight : integer;

    procedure RedrawBorders;
    procedure WriteText;
    property Alignment : TAlignment read FAlignment write SetAlignment;
    property CharsInCode:integer read FCharsInCode write FCharsInCode;
    property UseItemIndex : boolean read FUseItemIndex write FUseItemIndex;
    property ButtonMargin : integer read FButtonMargin write SetButtonMargin default 3;
  published
    property sStyle:TsStyle read FsStyle write FsStyle;
    property GlyphMode : TsGlyphMode read FGlyphMode write FGlyphMode;
  end;

//var
//  COMBO, bTemp : TBitmap;

implementation

uses sCustomComboBox;

{ TsDBComboBox }

function TsDBComboBox.ButtonHeight: integer;
begin
  Result := bTemp.Height div 2;
end;

function TsDBComboBox.ButtonRect: TRect;
begin
  if GlyphMode.UseDefaultGlyph or (GlyphMode.Glyph.Width < 1) then begin
    bTemp := COMBO;
  end
  else begin
    bTemp := GlyphMode.Glyph;
  end;
  Result := Rect(Width - ButtonWidth - ButtonMargin,
                 (Height - ButtonHeight) div 2,
                 Width - ButtonMargin,
                 Height - (Height - ButtonHeight) div 2);
end;

function TsDBComboBox.ButtonWidth: integer;
begin
  Result := bTemp.Width div 3;
end;

procedure TsDBComboBox.CNCommand(var Message: TWMCommand);
begin
  Case Message.NotifyCode of
    CBN_CLOSEUP: begin
      DroppedDown := False;
    end;
  end;
  inherited;
end;

constructor TsDBComboBox.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle - [csFixedHeight, csFramed] + [csOpaque];
  TControlCanvas(Canvas).Control := self;
  FDropDown := False;

  ParentColor := False;

  FsStyle := TsStyle.Create(Self);
  FsStyle.COC := COC_TsDBComboBox;
  FButtonMargin := 3;

  FDefBmpName := 'SCO1';
  FGlyphMode := TsGlyphMode.Create(Self);

  OnKeyDown := sStyle.OnKeyDown;
  FDefListProc := nil;
  ItemHeight := 13;

  CharsInCode := 0;
  UseItemIndex := False;
  DropDownCount := 16;
  DoubleBuffered := True;
end;

procedure TsDBComboBox.CreateWnd;
begin
  inherited;
end;

destructor TsDBComboBox.Destroy;
begin
  FreeAndNil(FsStyle);
  FreeAndNil(FGlyphMode);
  inherited Destroy;
end;

procedure TsDBComboBox.DropDown;
begin
  FDropDown := True;
  inherited;
end;

function TsDBComboBox.GetClientRect: TRect;
begin
  Result := Rect(0, 0, Width, Height);
  InflateRect(Result, -4, - 4);
end;

procedure TsDBComboBox.Invalidate;
begin
  if (csDesigning in ComponentState) and Assigned(FsStyle) then begin
    FsStyle.BGChanged := True;
  end;
  Color := sStyle.GetActiveColor;
  inherited Invalidate;
end;

procedure TsDBComboBox.InvalidateSelection;
begin
//
end;

procedure TsDBComboBox.PaintButton;
var
  b : TBitmap;
  R : TRect;
  c : TsColor;
  tc : TColor;
  function CurrentMaskRect : TRect; begin
    if DroppedDown then begin
      Result := Rect(2 * ButtonWidth, 0, 3 * ButtonWidth - 1, ButtonHeight - 1);
    end
    else if sStyle.ControlIsActive then begin
      Result := Rect(ButtonWidth, 0, 2 * ButtonWidth - 1, ButtonHeight - 1);
    end
    else begin
      Result := Rect(0, 0, ButtonWidth - 1, ButtonHeight - 1);
    end;
  end;
begin
  c.C := sStyle.GetActiveColor;
  c.C := sStyle.GetActiveColor;

  // Painting on the bitmap B
  b := TBitmap.Create;
  try
    R := ButtonRect;

    b.PixelFormat := pf24Bit;
    b.Width := ButtonWidth;
    b.Height := ButtonHeight;

    b.Canvas.Brush.Color := c.c;
    b.Canvas.FillRect(Rect(0, 0, b.Width, b.Height));


    tc := bTemp.Canvas.Pixels[0, bTemp.Height - 1];
    CopyByMask(
               Rect(0, 0, bTemp.Width - 1, bTemp.Height - 1),
               CurrentMaskRect,
               b,
               bTemp, EmptyCI);

    tc := b.Canvas.Pixels[0, b.Height - 1];
    if Enabled then begin
      if not sStyle.ControlIsActive then begin
        if GlyphMode.Grayed then begin
          GrayScaleTrans(b, TsColor(tc));
        end;
        if GlyphMode.Blend > 0 then begin
          BlendTransBitmap(b, GlyphMode.Blend / 100, c, TsColor(tc));
        end;
      end;
    end
    else begin
      BlendTransBitmap(b, 0.75, c, TsColor(tc));
{
      DisBmpColor(b, tc);
      b.Transparent := True;
      b.TransparentColor := clFuchsia;
}
    end;


    R := ButtonRect;

    tc := b.Canvas.Pixels[0, b.Height - 1];
    Canvas.Draw(R.Left, R.Top, b);
  finally
    FreeAndNil(b);
  end;
end;

procedure TsDBComboBox.RedrawBorders;
var
  R{, rT}: TRect;
  c : TColor;
begin
  c := sStyle.GetActiveColor;
  if (Focused or sStyle.FFocused) then begin
    R := GetClientRect;
//    R := Rect(0, 0, Width, Height);
    InflateRect(R, 1, 1);
    dec(R.Top);
    dec(R.Left);
    if Style = csDropDownList then begin
      Canvas.Brush.Color := C;//clHighLight;
      Canvas.FillRect(R);
      Canvas.TextRect(R, R.Left + 1, R.Top + 1, Text);
      inc(R.Top);
      inc(R.Left);
    end
    else begin
      Canvas.Brush.Color := C;
      Canvas.FillRect(R);
      Canvas.TextRect(R, R.Left + 1, R.Top + 1, Text);
    end;
  end
  else begin
    WriteText;
  end;
  sStyle.RedrawBorder;
  if (Style <> csSimple) then PaintButton;
end;

procedure TsDBComboBox.SetAlignment(const Value: TAlignment);
begin
  if FAlignment <> Value then begin
    FAlignment := Value;
    sStyle.Invalidate;
  end;
end;

procedure TsDBComboBox.SetButtonMargin(const Value: integer);
begin
  if FButtonMargin <> Value then begin
    FButtonMargin := Value;
  end;
end;

procedure TsDBComboBox.WMNCPaint(var Message: TWMPaint);
begin
  Message.Result := 1;
end;

procedure TsDBComboBox.WMPaint(var Message: TWMPaint);
var
  R, bR: TRect;
  DC: HDC;
  PS: TPaintStruct;
  WinBrush: HBRUSH;
begin
  if (csDestroying in ComponentState) or (csLoading in ComponentState) then Exit;
  Color := sStyle.GetActiveColor;
  DC := BeginPaint(Handle, PS);
  try
    R := PS.rcPaint;
    R.Right := min(Width - 1, R.Right);
    WinBrush := CreateSolidBrush(ColorToRGB(sStyle.GetActiveColor));

    FillRect(DC, R, WinBrush);
    bR := ButtonRect;

    if IntersectRect(bR, bR, PS.rcPaint) then PaintButton;

    ExcludeClipRect(DC, Width - ButtonWidth - 2, 0, Width, Height);
    if (Style = csDropDown) and DroppedDown then begin
      R := ClientRect;
      InflateRect(R, -2, -2);
      R.Right := Width;
      Canvas.Brush.Color := sStyle.GetActiveColor;
      Canvas.FrameRect(R);
    end
    else begin
      if Style <> csDropDown then InvalidateSelection;
    end;
  finally
    EndPaint(Handle, PS);
  end;
  RedrawBorders;
  DeleteObject(WinBrush);
  Message.Result := 1;
end;

procedure TsDBComboBox.WndProc(var Message: TMessage);
begin
  if Assigned(FsStyle) then FsStyle.WndProc(Message);
  if Message.Result <> 1 then inherited;
end;

procedure TsDBComboBox.WriteText;
var
  Flags: Longint;
  R : TRect;
begin
  if Text <> '' then begin
    Flags := 0;
    Canvas.Font.Assign(Font);
    R := ClientRect;
    dec(R.Left);
    dec(R.Top);
    dec(R.Right, ButtonWidth);

    case Alignment of
      taLeftJustify : begin
        Flags := DT_LEFT;
      end;
      taRightJustify : begin
        Flags := DT_RIGHT;
      end;
      taCenter : begin
        Flags := DT_CENTER;
      end
    end;
    Flags := Flags or DT_EXPANDTABS or DT_VCENTER or DT_SINGLELINE;
    Flags := DrawTextBiDiModeFlags(Flags);

    Canvas.Pen.Style := psSolid;
    Canvas.Brush.Style := bsClear;
    DrawText(Canvas.Handle, PChar(Text), Length(Text), R, Flags);
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃久久久久久| 风间由美一区二区av101| 国产乱码精品一区二区三| av一区二区三区黑人| 91麻豆精品国产91久久久更新时间| 国产女主播视频一区二区| 亚洲综合久久久| 福利一区二区在线| 日韩一区二区精品| 亚洲一级二级三级在线免费观看| 国产一区二区h| 欧美一级片在线看| 亚洲电影欧美电影有声小说| 成人性色生活片免费看爆迷你毛片| 91精品婷婷国产综合久久 | 久久久久久夜精品精品免费| 亚洲自拍偷拍九九九| 波多野结衣在线一区| 精品国产乱码久久久久久免费| 日韩福利视频网| 欧美日韩国产bt| 亚洲一区二区三区美女| 一本大道久久a久久精二百| 国产精品理论在线观看| 成人一道本在线| 国产欧美日韩不卡免费| 国产.欧美.日韩| 国产网红主播福利一区二区| 极品少妇一区二区三区精品视频 | av在线这里只有精品| 久久美女艺术照精彩视频福利播放| 麻豆国产精品官网| 日韩欧美一级精品久久| 狠狠色狠狠色合久久伊人| 日韩美女一区二区三区| 国内精品第一页| 国产亚洲人成网站| 国产精品伊人色| 国产精品久久毛片| 99视频精品在线| 夜夜嗨av一区二区三区| 欧美性一二三区| 麻豆视频一区二区| 久久尤物电影视频在线观看| 国产精品一区二区久久不卡| 国产欧美一区二区精品忘忧草| 国产成人综合在线观看| 18欧美乱大交hd1984| 欧美性高清videossexo| 日本网站在线观看一区二区三区| 欧美α欧美αv大片| 懂色av一区二区三区免费看| 中文字幕一区在线| 欧美日韩www| 国产在线精品免费av| 亚洲欧美怡红院| 欧美丝袜自拍制服另类| 蜜乳av一区二区| 18涩涩午夜精品.www| 91精品久久久久久久久99蜜臂| 麻豆精品视频在线| 中文字幕永久在线不卡| 制服丝袜亚洲播放| 国产大陆亚洲精品国产| 午夜精品一区二区三区电影天堂| 欧美一级理论片| jvid福利写真一区二区三区| 天堂一区二区在线| 中文字幕va一区二区三区| 欧美主播一区二区三区| 国产资源在线一区| 亚洲国产精品一区二区www| 日韩欧美一级二级三级久久久| 不卡欧美aaaaa| 免费在线一区观看| 亚洲精品日韩一| 久久精品一区四区| 7777精品伊人久久久大香线蕉完整版 | 亚洲人成精品久久久久| 91精品国产全国免费观看| 国产成人av电影在线播放| 五月综合激情网| 国产精品麻豆一区二区 | 欧美三级电影在线观看| 成人av午夜影院| 久久福利资源站| 午夜久久久久久久久| 日韩美女精品在线| 欧美激情一区二区三区蜜桃视频| 欧美片网站yy| 色婷婷狠狠综合| 成人午夜精品在线| 国产在线国偷精品产拍免费yy| 丝袜亚洲另类欧美| 亚洲另类在线视频| 亚洲视频一区二区在线观看| 国产喷白浆一区二区三区| 精品剧情v国产在线观看在线| 欧美日韩亚洲综合一区| 在线观看视频一区二区欧美日韩| 国产91精品一区二区麻豆网站| 九九**精品视频免费播放| 婷婷综合另类小说色区| 亚洲一区欧美一区| 一区二区三区四区中文字幕| 中文字幕字幕中文在线中不卡视频| 国产欧美1区2区3区| 中文字幕av一区二区三区高| 久久久久久一二三区| 国产午夜精品福利| 中文字幕精品在线不卡| 国产精品国产三级国产三级人妇| 久久精品亚洲精品国产欧美| 久久久美女毛片| 国产欧美日韩中文久久| 欧美国产综合一区二区| 国产精品久久久久久久久图文区| 国产亚洲精品福利| 国产精品嫩草影院com| 国产精品久久久久久妇女6080| 国产精品麻豆视频| 成人欧美一区二区三区在线播放| 国产精品久久久久久妇女6080| 日韩理论片网站| 亚洲最新在线观看| 偷拍自拍另类欧美| 久久成人免费电影| 国产成人自拍网| 91色视频在线| 精品视频一区二区不卡| 日韩美女视频在线| 国产视频一区不卡| 中文字幕制服丝袜一区二区三区| 亚洲人精品一区| 日韩激情中文字幕| 国产精品一二三四| 欧美午夜电影网| 日韩欧美一卡二卡| 国产精品超碰97尤物18| 亚洲无线码一区二区三区| 美女任你摸久久| 成人sese在线| 欧美精品视频www在线观看| 欧美大片在线观看一区| 中文字幕在线一区二区三区| 美女任你摸久久 | 亚洲欧美偷拍卡通变态| 五月婷婷综合激情| 国产一区二区三区免费观看| av电影天堂一区二区在线| 欧美日韩你懂的| 国产女同互慰高潮91漫画| 亚洲一二三四在线| 国产在线精品视频| 欧美日韩成人在线一区| 国产精品日日摸夜夜摸av| 午夜国产不卡在线观看视频| 国产麻豆一精品一av一免费| 日本韩国欧美国产| 久久免费美女视频| 天堂资源在线中文精品| 99久久精品99国产精品 | 91精品国产综合久久香蕉麻豆 | 精品入口麻豆88视频| 一区二区三区小说| 成人黄页毛片网站| 欧美一级xxx| 亚洲aaa精品| 91麻豆免费视频| 国产调教视频一区| 日日夜夜免费精品| 日本高清不卡aⅴ免费网站| 欧美成人午夜电影| 视频在线观看一区二区三区| 成人av在线观| 日本一区二区三级电影在线观看| 视频一区中文字幕| 在线观看av一区二区| 亚洲天堂成人网| 福利视频网站一区二区三区| 欧美成人伊人久久综合网| 亚洲成av人**亚洲成av**| 99久久精品99国产精品| 久久精品人人做人人综合| 美国十次综合导航| 91精品国产日韩91久久久久久| 亚洲成人av一区二区三区| 91麻豆产精品久久久久久| 国产精品夫妻自拍| 国产成人午夜片在线观看高清观看| 日韩欧美高清dvd碟片| 日韩电影免费在线| 欧美麻豆精品久久久久久| 亚洲大片精品永久免费| 日本黄色一区二区| 亚洲一区二区欧美激情| 在线观看亚洲成人| 亚洲v精品v日韩v欧美v专区| 欧美色图片你懂的| 亚洲.国产.中文慕字在线|