vladman
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Код: .pas ------- unit Unit20; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles, dxSkinsCore, dxSkinMcSkin, dxSkinscxPCPainter, cxCustomData, cxTL, cxTextEdit, cxTLdxBarBuiltInMenu, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxSplitter, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridBandedTableView, cxGridDBBandedTableView, cxInplaceContainer, cxClasses, cxGridLevel, cxGrid; type TForm20 = class(TForm) cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; cxTreeList1: TcxTreeList; cxTreeList1Column1: TcxTreeListColumn; SplitterMain: TcxSplitter; cxGrid1DBBandedTableView1: TcxGridDBBandedTableView; procedure cxGrid1DBBandedTableView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure cxGrid1DBBandedTableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure cxGrid1DBBandedTableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private FDragAccept: Boolean; FNewBand: TcxGridBand; FGridBandHeaderMovingObject: TcxGridBandHeaderMovingObject; FBandDragAccept: Boolean; FDraggedBandID: Integer; FOgrigY: Integer; public end; type TcxGridBandHeaderMovingObjectAccess = class(TcxGridBandHeaderMovingObject); var Form20: TForm20; implementation {$R *.dfm} procedure TForm20.cxGrid1DBBandedTableView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var a: Boolean; begin a := true; Accept := Source = cxTreeList1; FDragAccept := Accept; if not Accept then Exit; if not Assigned(FGridBandHeaderMovingObject) then begin FOgrigY := Y; FNewBand := cxGrid1DBBandedTableView1.Bands.Add; FNewBand.Caption := cxTreeList1.FocusedNode.Values[0]; FNewBand.Index := 0; FNewBand.Width := 100; FDraggedBandID := FNewBand.ID; FGridBandHeaderMovingObject := TcxGridBandHeaderMovingObject.Create(TcxGridSite(Sender)); cxTreeList1.EndDrag(False); FGridBandHeaderMovingObject.Init(Mouse.CursorPos, cxGrid1DBBandedTableView1.ViewInfo.GetHitTest(10, 10)); TcxGridBandHeaderMovingObjectAccess(FGridBandHeaderMovingObject).BeginDragAndDrop; cxGrid1DBBandedTableView1.Controller.PressedBand := FNewBand; end; end; procedure TForm20.cxGrid1DBBandedTableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Assigned(FGridBandHeaderMovingObject) then begin FGridBandHeaderMovingObject.CurMousePos := cxGrid1.ClientToScreen(Point(X, Y + FOgrigY)); TcxGridBandHeaderMovingObjectAccess(FGridBandHeaderMovingObject).DragAndDrop( cxGrid1.ScreenToClient(Mouse.CursorPos), FBandDragAccept); end; end; procedure TForm20.cxGrid1DBBandedTableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Assigned(FGridBandHeaderMovingObject) then begin TcxGridBandHeaderMovingObjectAccess(FGridBandHeaderMovingObject).EndDragAndDrop(FBandDragAccept); FreeAndNil(FGridBandHeaderMovingObject); if not FBandDragAccept then cxGrid1DBBandedTableView1.Bands.Delete(cxGrid1DBBandedTableView1.Bands.FindItemID(FDraggedBandID).Index); end; end; end. .dfm ------- object Form20: TForm20 Left = 0 Top = 0 Caption = 'Form20' ClientHeight = 503 ClientWidth = 889 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object cxGrid1: TcxGrid Left = 255 Top = 0 Width = 634 Height = 503 Align = alClient TabOrder = 2 object cxGrid1DBBandedTableView1: TcxGridDBBandedTableView OnDragOver = cxGrid1DBBandedTableView1DragOver OnMouseMove = cxGrid1DBBandedTableView1MouseMove OnMouseUp = cxGrid1DBBandedTableView1MouseUp DataController.Summary.DefaultGroupSummaryItems = <> DataController.Summary.FooterSummaryItems = <> DataController.Summary.SummaryGroups = <> OptionsView.GroupByBox = False Bands = < item Caption = #1054#1073#1098#1077#1082#1090' 1' Width = 189 end item Caption = #1054#1073#1098#1077#1082#1090' 2' Width = 143 end item Caption = #1054#1073#1098#1077#1082#1090' 3' Width = 169 end> end object cxGrid1Level1: TcxGridLevel GridView = cxGrid1DBBandedTableView1 end end object cxTreeList1: TcxTreeList Left = 0 Top = 0 Width = 250 Height = 503 Align = alLeft Bands = < item end> DragMode = dmAutomatic OptionsData.Editing = False OptionsData.Deleting = False OptionsData.Inserting = True OptionsView.Headers = False TabOrder = 0 Data = { 00000500490100000F00000044617461436F6E74726F6C6C6572310100000012 000000546378537472696E6756616C75655479706505000000445855464D5400 00060000001A043E04400435043D044C04445855464D54000007000000120435 04420432044C0420003100445855464D5400000700000012043504420432044C 0420003200445855464D5400000700000012043504420432044C042000330044 5855464D5400000700000012043504420432044C042000340001000000000000 001200040000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0100000008 000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0200000008000000000000 000000FFFFFFFFFFFFFFFFFFFFFFFF0300000008000000000000000000FFFFFF FFFFFFFFFFFFFFFFFF0400000008020000000000000000FFFFFFFFFFFFFFFFFF FFFFFF0A0001000000} object cxTreeList1Column1: TcxTreeListColumn DataBinding.ValueType = 'String' Position.ColIndex = 0 Position.RowIndex = 0 Position.BandIndex = 0 Summary.FooterSummaryItems = <> Summary.GroupFooterSummaryItems = <> end end object SplitterMain: TcxSplitter Left = 250 Top = 0 Width = 5 Height = 503 ResizeUpdate = True Control = cxTreeList1 end end | | Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 21:34 29-12-2011 | Исправлено: vladman, 21:35 29-12-2011 |
|