Ver Mensaje Individual
  #1  
Antiguo 27-02-2007
calogero calogero is offline
Miembro
 
Registrado: oct 2006
Ubicación: Los Mochis, Sinaloa, México
Posts: 76
Reputación: 18
calogero Va por buen camino
TCxGrid, OnGetGridView

Hola, que tal:


Estoy trabajando con un componente que se llama cxGrid, en el cual tengo dos niveles cada nivel con un dbTable, y un nivel dentro del otro, en pocas palabras es un maestro detalle les paso el siguiente codigo:

Este codigo lo bajé de esta página: https://www.devexpress.com/Support/C...3-52dd97577823
el archivo se llama:
dxKB_388.zip


Código:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit,
  cxGridCustomTableView, cxGridTableView, cxClasses, cxControls,
  cxGridCustomView, cxGridLevel, cxGrid, cxDataStorage;

const
  CM_GETGRIDVIEW = WM_USER + 1;

type
  TForm1 = class(TForm)
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    cxGrid1Level2: TcxGridLevel;
    cxGrid1TableView1: TcxGridTableView;
    cxGrid1TableView1Column1: TcxGridColumn;
    cxGrid1TableView1Column2: TcxGridColumn;
    cxGrid1TableView1Column3: TcxGridColumn;
    cxGrid1TableView2: TcxGridTableView;
    cxGrid1TableView2Column1: TcxGridColumn;
    cxGrid1TableView2Column2: TcxGridColumn;
    procedure FormCreate(Sender: TObject);
    procedure cxGrid1Level2GetGridView(Sender: TcxGridLevel;
      AMasterRecord: TcxCustomGridRecord;
      var AGridView: TcxCustomGridView);
  private
    procedure CmGetGridView(var Msg: TMessage); message CM_GETGRIDVIEW;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  with cxGrid1TableView1 do
  begin
    for I := 0 to DataController.ItemCount - 1 do
      Items[i].DataBinding.ValueTypeClass := TcxStringValueType;
    DataController.RecordCount := 2;
    DataController.Values[0, 0] := 'Value 0';
    DataController.Values[0, 1] := 'Value 0 Column 1';
    DataController.Values[0, 2] := 'Value 0 Column 2';
    DataController.Values[1, 0] := 'Value 1';
    DataController.Values[1, 1] := 'Value 1 Column 1';
    DataController.Values[1, 2] := 'Value 1 Column 2';
  end;

  with cxGrid1TableView2 do
    for I := 0 to DataController.ItemCount - 1 do
      Items[i].DataBinding.ValueTypeClass := TcxStringValueType;
end;

procedure TForm1.cxGrid1Level2GetGridView(Sender: TcxGridLevel;
  AMasterRecord: TcxCustomGridRecord; var AGridView: TcxCustomGridView);
begin
  PostMessage(handle, CM_GETGRIDVIEW, Integer(AMasterREcord), Integer
(AGridView));
end; procedure TForm1.CmGetGridView(var Msg: TMessage); var I, J: Integer; AMasterRecord: TcxCustomGridRecord; AGridView: TcxGridTableView; AClone: TcxCustomGridView; begin if not ((TObject(Msg.WParam) is TcxCustomGridRecord) and (TObject
(Msg.LParam) is TcxGridTableView)) then
Exit; AMasterRecord := TcxCustomGridRecord(Msg.WParam); AGridView := TcxGridTableView(Msg.LParam); AClone := AGridView.Clones[AGridView.CloneCount - 1]; AClone.BeginUpdate; try with AClone.DataController do begin RecordCount := (AMasterRecord.Index + 1) * 5; for I := 0 to RecordCount - 1 do for J := 0 to AGridView.ColumnCount - 1 do if J = 0 then Values[I, J] := 'Value ' + IntToStr(AMasterRecord.Index) else Values[I, J] := Format('Value %d Record %d Column %d',
AMasterRecord.Index, I, J])
end finally AClone.EndUpdate; end; end; end.

Si abren este codigo en delphi y establecen las siguientes propiedades del grid:

Align: alNone
Width: 300

y ejecutan el codigo, al abrir uno de los dos gridview maestro, se darán cuenta que si usan la barra de desplazamiento horizontal perteneciente al cxgrid principal y no al gridview detalle o al gridview maestro solo se moverá o desplazará hacia los lados el gridview maestro pero no el gridview detalle.

¿ Cómo puedo hacer para que se desplacen los dos al mismo tiempo el maestro y el detalle ?

Si alguien tiene alguna sugerencia agradezco su ayuda, o si alguien sabe algún mejor modo de hacerlo.
Archivos Adjuntos
Tipo de Archivo: zip dxKB_388[OnGetGridView].zip (3,0 KB, 24 visitas)
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
Responder Con Cita