Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

andreybear

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

// pas
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
  cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxGridCustomView,
  cxGridCustomTableView, cxGridTableView, cxGridBandedTableView, cxClasses,
  cxGridLevel, cxGrid, ComCtrls, dxtree, Classes, cxGridCommon;
 
type
  TBandHeaderMovingObjectChild = class(TcxGridBandHeaderMovingObject);
  TForm1 = class(TForm)
    Tree: TdxTreeView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    View: TcxGridBandedTableView;
    procedure TreeMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ViewDragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    procedure ViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure ViewMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    FMovObj: TBandHeaderMovingObjectChild;
    FMovBandID: integer;
    FDropAccepted: boolean;
  public
     
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.TreeMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    Tree.BeginDrag(false);
end;
 
procedure TForm1.ViewDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
// Здесь Sender и Source - (). Не понятно почему.
var band: TcxGridBand;
    bandRect: TRect;
    bandClientPos: TPoint;
    bandScreenPos: TPoint;
    headerViewInfo: TcxGridBandHeaderViewInfo;
    hitTest: TcxCustomGridHitTest;
begin
  if ((State = dsDragEnter) and (Tree.Dragging)) then
  begin
    Tree.EndDrag(false);
    Accept := true;
    band := View.Bands.Add;
    band.Caption := Tree.Selected.Text;
    band.Index := 0;
    FMovBandID := band.ID;
    headerViewInfo := View.ViewInfo.HeaderViewInfo.BandsViewInfo.Items[band.Index].HeaderViewInfo;
    headerViewInfo.State := gcsPressed;
    bandRect := headerViewInfo.Bounds;
    bandClientPos.X := bandRect.Right - Round((bandRect.Right - bandRect.Left)/2);
    bandClientPos.Y := bandRect.Bottom - Round((bandRect.Bottom - bandRect.Top)/2);
    hitTest := headerViewInfo.GetHitTest(bandClientPos);
    FMovObj := TBandHeaderMovingObjectChild.Create(View.Site);
    bandScreenPos := View.Site.ClientToScreen(bandClientPos);
    FMovObj.Init(bandScreenPos,hitTest);
    FMovObj.CurMousePos := Mouse.CursorPos;
    FMovObj.BeginDragAndDrop;
  end;
end;
 
procedure TForm1.ViewMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Assigned(FMovObj) then
  begin
    FMovObj.CurMousePos := View.Site.ClientToScreen(Point(X,Y));
    FMovObj.DragAndDrop(Point(X,Y),FDropAccepted);
  end;
end;
 
procedure TForm1.ViewMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var band: TcxGridBand;
begin
  if Assigned(FMovObj) then
  begin
    // Здесь bag в случае, когда FDropAccepted = false
    FMovObj.EndDragAndDrop(FDropAccepted);
    if FDropAccepted then
      FDropAccepted := false
    else
      begin
        band := View.Bands.FindItemID(FMovBandID);
        if Assigned(band) then
          View.Bands.Delete(band.Index);
      end;
    FreeAndNil(FMovObj);
    FMovBandID := -1;
  end;
end;
 
end.
 
 
// dfm
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 464
  ClientWidth = 695
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Tree: TdxTreeView
    Left = 0
    Top = 0
    Width = 185
    Height = 464
    ShowNodeHint = True
    ReadOnly = True
    Indent = 19
    Items.NodeData = {
      0101000000250000000000000000000000FFFFFFFFFFFFFFFF00000000040000
      00061A043E04400435043D044C04250000000000000000000000FFFFFFFFFFFF
      FFFF00000000000000000612043504420432044C043100250000000000000000
      000000FFFFFFFFFFFFFFFF00000000000000000612043504420432044C043200
      250000000000000000000000FFFFFFFFFFFFFFFF000000000000000006120435
      04420432044C043300250000000000000000000000FFFFFFFFFFFFFFFF000000
      00000000000612043504420432044C043400}
    Align = alLeft
    ParentColor = False
    SelectedIndex = -1
    TabOrder = 0
    OnMouseDown = TreeMouseDown
  end
  object cxGrid1: TcxGrid
    Left = 185
    Top = 0
    Width = 510
    Height = 464
    Align = alClient
    TabOrder = 1
    LookAndFeel.Kind = lfUltraFlat
    object View: TcxGridBandedTableView
      OnDragOver = ViewDragOver
      OnMouseMove = ViewMouseMove
      OnMouseUp = ViewMouseUp
      NavigatorButtons.ConfirmDelete = False
      DataController.Summary.DefaultGroupSummaryItems = <>
      DataController.Summary.FooterSummaryItems = <>
      DataController.Summary.SummaryGroups = <>
      OptionsBehavior.DragFocusing = dfDragOver
      Bands = <
        item
        end>
    end
    object cxGrid1Level1: TcxGridLevel
      GridView = View
    end
  end
end

Всего записей: 132 | Зарегистр. 21-07-2011 | Отправлено: 13:07 30-12-2011
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru