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

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

?? dbgrideh.pas

?? Delphi控件源碼
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
                      Alignment: TAlignment; // Text alignment
                      Layout: TTextLayout;   // Text layout
                      MultyL:Boolean;        // Word break
                      EndEllipsis:Boolean;   // Truncate long text by ellipsis
                      LeftMarg,              // Left margin
                      RightMarg:Integer);    // Right margin

implementation

uses DBConsts, Dialogs, Comctrls, CommCtrl, DBGridEhImpExp, Clipbrd;

{$R DBGRIDEH.RES}


const
  bmArrow = 'DBGARROWEH';
  bmEdit = 'DBEDITEH';
  bmInsert = 'DBINSERTEH';
  bmMultiDot = 'DBMULTIDOTEH';
  bmMultiArrow = 'DBMULTIARROWEH';
//ddd
  bmSmDown = 'DBSMDOWNEH';
  bmSmUp = 'DBSMUPEH';
  bmEditWhite = 'DBGARROWEHW';
  hcrDownCurEh:HCursor = 0;
  hcrRightCurEh:HCursor = 0;
//\\\

  MaxMapSize = (MaxInt div 2) div SizeOf(Integer);  { 250 million }


var
  FCheckBoxWidth, FCheckBoxHeight: Integer;

procedure GetCheckSize;
begin
  with TBitmap.Create do
    try
      Handle := LoadBitmap(0, PChar(32759));
      FCheckBoxWidth := Width div 4;
      FCheckBoxHeight := Height div 3;
    finally
      Free;
    end;
end;

{ Error reporting }


procedure RaiseGridError(const S: string);
begin
  raise EInvalidGridOperation.Create(S);
end;

procedure KillMessage(Wnd: HWnd; Msg: Integer);
// Delete the requested message from the queue, but throw back
// any WM_QUIT msgs that PeekMessage may also return
var
  M: TMsg;
begin
  M.Message := 0;
  if PeekMessage(M, Wnd, Msg, Msg, pm_Remove) and (M.Message = WM_QUIT) then
    PostQuitMessage(M.wparam);
end;

//ddd

//Pure RX
type
  //ddd
  TCharSet = Set of Char;
  //\\\

function ExtractWord(N: Integer; const S: string; WordDelims: TCharSet): string; forward;

function GetDefaultSection(Component: TComponent): string;
var
  F: TCustomForm;
  Owner: TComponent;
begin
  if Component <> nil then begin
    if Component is TCustomForm then Result := Component.ClassName
    else begin
      Result := Component.Name;
      if Component is TControl then begin
        F := GetParentForm(TControl(Component));
        if F <> nil then Result := F.ClassName + Result
        else begin
          if TControl(Component).Parent <> nil then
            Result := TControl(Component).Parent.Name + Result;
        end;
      end
      else begin
        Owner := Component.Owner;
        if Owner is TForm then
          Result := Format('%s.%s', [Owner.ClassName, Result]);
      end;
    end;
  end
  else Result := '';
end;

function Max(A, B: Longint): Longint;
begin
  if A > B then Result := A
  else Result := B;
end;

function Min(A, B: Longint): Longint;
begin
  if A < B then Result := A
  else Result := B;
end;

function iif(Condition:Boolean;V1,V2:Integer):Integer;
begin
  if (Condition) then Result := V1 else Result := V2;
end;

//\\\

procedure GridInvalidateRow(Grid: TCustomDBGridEh; Row: Longint);
var
  I: Longint;
begin
  for I := 0 to Grid.ColCount - 1 do Grid.InvalidateCell(I, Row);
end;

{function DefineCursor(Identifier: PChar): TCursor;
var Handle:HCursor;
begin
  Handle := LoadCursor(hInstance, Identifier);
  if Handle = 0 then raise EOutOfResources.Create('Cannot load cursor resource');
  for Result := 1 to High(TCursor) do
    if Screen.Cursors[Result] = Screen.Cursors[crArrow]  then
    begin
      Screen.Cursors[Result] := Handle;
      Exit;
    end;
  raise EOutOfResources.Create('Too many user-defined cursors');
end;}

function GetTextWidth(Canvas:TCanvas; Text:String):Integer;
var ARect:TRect;
    uFormat:Integer;
begin
  uFormat := DT_CALCRECT or DT_LEFT or DT_NOPREFIX;
  ARect := Rect(0,0,1,0);
  DrawText(Canvas.Handle, PChar(Text), Length(Text), ARect, uFormat);
  Result := ARect.Right - ARect.Left;
end;

function PointInGridRect(Col, Row: Longint; const Rect: TGridRect): Boolean;
begin
  Result := (Col >= Rect.Left) and (Col <= Rect.Right) and (Row >= Rect.Top)
    and (Row <= Rect.Bottom);
end;

{ TDBGridInplaceEdit }

{ TDBGridInplaceEdit adds support for a button on the in-place editor,
  which can be used to drop down a table-based lookup list, a stringlist-based
  pick list, or (if button style is esEllipsis) fire the grid event
  OnEditButtonClick.  }

type
  TEditStyle = (esSimple, esEllipsis, esPickList, esDataList, esDateCalendar ,esUpDown, esDropDown);
  TPopupListbox = class;
  TPopupMonthCalendar = class;

  TDBGridInplaceEdit = class(TInplaceEdit)
  private
    FButtonWidth: Integer;
    FDataList: TDBLookupListBox;
    FPickList: TPopupListbox;
    FActiveList: TWinControl;
    FLookupSource: TDatasource;
    FEditStyle: TEditStyle;
    FListVisible: Boolean;
    FTracking: Boolean;
    FPressed: Boolean;
    //ddd
    FPopupMonthCalendar: TPopupMonthCalendar;
    FWordWrap: Boolean;
    FUpDown:TUpDown;
    procedure ListMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure ListMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure UpDownChanging (Sender: TObject; var AllowChange: Boolean);
    procedure UpDownClick(Sender: TObject; Button: TUDBtnType);
    //\\\
    procedure ListMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure SetEditStyle(Value: TEditStyle);
    procedure StopTracking;
    procedure TrackButton(X,Y: Integer);
    procedure CMCancelMode(var Message: TCMCancelMode); message CM_CancelMode;
    procedure WMCancelMode(var Message: TMessage); message WM_CancelMode;
    procedure WMKillFocus(var Message: TMessage); message WM_KillFocus;
    procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message wm_LButtonDblClk;
    procedure WMPaint(var Message: TWMPaint); message wm_Paint;
    procedure WMSetCursor(var Message: TWMSetCursor); message WM_SetCursor;
    procedure SetWordWrap(const Value: Boolean);
  protected
    procedure BoundsChanged; override;
    procedure CloseUp(Accept: Boolean);
    //ddd
    procedure CreateParams(var Params: TCreateParams); override;
    //\\\
    procedure DoDropDownKeys(var Key: Word; Shift: TShiftState);
    procedure DropDown;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure PaintWindow(DC: HDC); override;
    procedure UpdateContents; override;
    procedure WndProc(var Message: TMessage); override;
    //ddd
    procedure KeyPress(var Key: Char); override;
    property WordWrap: Boolean read FWordWrap write SetWordWrap;
    //\\\
    property  EditStyle: TEditStyle read FEditStyle write SetEditStyle;
    property  ActiveList: TWinControl read FActiveList write FActiveList;
    property  DataList: TDBLookupListBox read FDataList;
    property  PickList: TPopupListbox read FPickList;
  public
    constructor Create(Owner: TComponent); override;
  end;

{ TPopupListbox }

  TPopupListbox = class(TCustomListbox)
  private
    FSearchText: String;
    FSearchTickCount: Longint;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure CreateWnd; override;
    procedure KeyPress(var Key: Char); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
  end;

//ddd
{ TPopupMonthCalendar }
  TPopupMonthCalendar = class(TMonthCalendar)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure CreateWnd; override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
  end;
//\\\

procedure TPopupListBox.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    Style := Style or WS_BORDER;
    ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST;
    WindowClass.Style := CS_SAVEBITS;
  end;
end;

procedure TPopupListbox.CreateWnd;
begin
  inherited CreateWnd;
  Windows.SetParent(Handle, 0);
  CallWindowProc(DefWndProc, Handle, wm_SetFocus, 0, 0);
end;

procedure TPopupListbox.Keypress(var Key: Char);
var
  TickCount: Integer;
begin
  case Key of
    #8, #27: FSearchText := '';
    #32..#255:
      begin
        TickCount := GetTickCount;
        if TickCount - FSearchTickCount > 2000 then FSearchText := '';
        FSearchTickCount := TickCount;
        if Length(FSearchText) < 32 then FSearchText := FSearchText + Key;
        SendMessage(Handle, LB_SelectString, WORD(-1), Longint(PChar(FSearchText)));
        Key := #0;
      end;
  end;
  inherited Keypress(Key);
end;

procedure TPopupListbox.MouseUp(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  inherited MouseUp(Button, Shift, X, Y);
  TDBGridInPlaceEdit(Owner).CloseUp((X >= 0) and (Y >= 0) and
      (X < Width) and (Y < Height));
end;

//ddd

procedure TPopupMonthCalendar.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    Style := Style or WS_BORDER;
    ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST;
    WindowClass.Style := CS_SAVEBITS;
  end;
end;

procedure TPopupMonthCalendar.CreateWnd;
begin
  inherited CreateWnd;
  Windows.SetParent(Handle, 0);
  CallWindowProc(DefWndProc, Handle, wm_SetFocus, 0, 0);
end;

procedure TPopupMonthCalendar.MouseUp(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
var MCHInfo:TMCHitTestInfo;
begin
  inherited MouseUp(Button, Shift, X, Y);
  MCHInfo.cbSize := SizeOf(TMCHitTestInfo);
  MCHInfo.pt.x := X;
  MCHInfo.pt.y := Y;
  MonthCal_HitTest(Handle,MCHInfo

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天精品一区二区三区| 偷拍日韩校园综合在线| 欧美r级在线观看| 在线不卡一区二区| 欧美四级电影在线观看| 欧美视频在线观看一区二区| 91丨porny丨蝌蚪视频| 日本久久精品电影| 色94色欧美sute亚洲线路一久 | 亚洲香肠在线观看| 一区二区不卡在线播放 | 欧美在线观看一区二区| 日本黄色一区二区| 欧美日韩精品一区二区天天拍小说 | 国产精品久久久久久久久久免费看| 欧美一级二级三级蜜桃| 日韩一级大片在线观看| 精品国产在天天线2019| 精品久久久久久久人人人人传媒 | 日韩限制级电影在线观看| 欧美精品丝袜久久久中文字幕| 欧美精品日韩一区| 久久综合九色综合97_久久久| 国产欧美精品一区aⅴ影院| 综合久久久久久久| 日本成人在线看| 国产一区在线视频| 91国产成人在线| 日韩一级在线观看| 中文字幕电影一区| 亚洲国产精品天堂| 狠狠色狠狠色综合日日91app| 高清日韩电视剧大全免费| 欧美四级电影在线观看| 久久综合狠狠综合久久综合88| 成人免费在线视频观看| 亚洲一二三区在线观看| 黑人精品欧美一区二区蜜桃| 一本色道综合亚洲| 久久久久青草大香线综合精品| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲国产色一区| 国产精品1024| 欧美人xxxx| 亚洲欧洲精品一区二区三区| 免费看日韩精品| 91麻豆免费看| 国产午夜精品理论片a级大结局| 亚洲精品va在线观看| 国产尤物一区二区| 欧美精品乱码久久久久久| 国产精品久久午夜| 久久狠狠亚洲综合| 欧美视频完全免费看| 中文字幕欧美三区| 精品一二线国产| 欧美日韩免费在线视频| 中文字幕一区二区三区精华液| 日韩综合小视频| 91一区二区三区在线观看| 久久久久久久久免费| 青青草精品视频| 欧美日韩一本到| 亚洲婷婷在线视频| 成人午夜私人影院| 国产调教视频一区| 国内久久精品视频| 欧美va天堂va视频va在线| 视频一区二区三区在线| 欧美日韩小视频| 亚洲综合丁香婷婷六月香| 色偷偷成人一区二区三区91 | av一区二区三区| 中文字幕av资源一区| 国产一区二区三区观看| 精品99一区二区三区| 久久国产福利国产秒拍| 欧美一区二区三区免费在线看| 性感美女极品91精品| 欧美日韩一区二区在线观看| 亚洲国产精品天堂| 欧美精品在线观看播放| 亚洲h动漫在线| 91精品国产综合久久精品性色 | 国产一区二区三区不卡在线观看 | 亚洲欧洲韩国日本视频| av午夜一区麻豆| 亚洲精选视频在线| 欧美嫩在线观看| 美国一区二区三区在线播放| 日韩免费视频线观看| 韩国女主播成人在线观看| 欧美国产一区在线| 色综合一区二区| 亚洲国产一区视频| 日韩欧美国产精品| 国产+成+人+亚洲欧洲自线| 18欧美亚洲精品| 精品视频资源站| 精品一区精品二区高清| 国产精品久久国产精麻豆99网站| 一本色道a无线码一区v| 亚洲成av人影院| 欧美精品一区二区三区蜜桃| 成人av综合在线| 亚洲成人动漫在线免费观看| 欧美一级欧美三级在线观看| 国产不卡在线一区| 亚洲午夜久久久久久久久电影院| 91精品国产色综合久久ai换脸| 精品系列免费在线观看| 国产精品国产三级国产专播品爱网 | 色乱码一区二区三区88| 日韩av高清在线观看| 国产欧美一区二区精品久导航| 91成人国产精品| 国产成人免费视频一区| 亚洲午夜在线观看视频在线| 久久精品亚洲乱码伦伦中文| 色狠狠一区二区| 韩国三级中文字幕hd久久精品| 一区二区三区视频在线看| 精品国产区一区| 在线亚洲一区二区| 国产成人午夜99999| 三级亚洲高清视频| 亚洲桃色在线一区| 国产亚洲成av人在线观看导航| 欧美午夜精品久久久久久孕妇| 国产精品一区二区免费不卡| 天天综合日日夜夜精品| 中文字幕亚洲精品在线观看| 欧美成人高清电影在线| 91成人在线精品| 91在线视频播放地址| 国产精品77777竹菊影视小说| 视频一区视频二区中文| 一区二区三区四区av| 亚洲欧美在线视频| 国产欧美日韩另类视频免费观看 | 中文字幕不卡的av| 久久久久久9999| 欧美电影免费观看高清完整版| 欧美日韩中文国产| 一本色道久久综合精品竹菊| 99视频精品免费视频| 高清视频一区二区| 国产在线播放一区三区四| 久久精品国产秦先生| 蜜臀久久99精品久久久画质超高清 | 国产99久久精品| 精品一区二区三区免费播放| 美女视频第一区二区三区免费观看网站| 亚洲男同性恋视频| 一区二区三区在线免费观看| 综合中文字幕亚洲| 亚洲丝袜制服诱惑| 一区二区久久久久| 午夜激情久久久| 日韩高清欧美激情| 麻豆91免费看| 国产一区二区三区高清播放| 国产乱理伦片在线观看夜一区| 国产又黄又大久久| 粉嫩av亚洲一区二区图片| 国产宾馆实践打屁股91| 成人精品视频一区二区三区| 北条麻妃一区二区三区| 91网页版在线| 欧美在线一区二区| 日韩一区二区三区免费观看| 日韩精品一区二区三区中文精品| 精品噜噜噜噜久久久久久久久试看| 欧美精品一区二区三区很污很色的| 久久你懂得1024| 日韩一区在线播放| 亚洲国产wwwccc36天堂| 美女视频黄a大片欧美| 成人午夜短视频| 欧美日韩精品高清| 欧美大片在线观看一区二区| 国产精品久线在线观看| 亚洲福利一区二区| 精品一区二区三区在线播放| www.性欧美| 91精品国产一区二区| 国产午夜精品在线观看| 亚洲国产精品久久久久秋霞影院 | 五月综合激情婷婷六月色窝| 精油按摩中文字幕久久| 色综合久久99| 久久久久久久久久看片| 一区二区三区在线观看动漫| 久久精品噜噜噜成人av农村| 99麻豆久久久国产精品免费优播| 7777精品久久久大香线蕉| 久久久久久久综合日本| 亚洲午夜视频在线观看| 国产成人在线视频播放| 一本大道久久a久久综合|