Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   acceder al dataset del TGrid en runtime (https://www.clubdelphi.com/foros/showthread.php?t=95618)

juank1971 19-03-2022 14:31:07

acceder al dataset del TGrid en runtime
 
saludos, como puedo acceder al dataset del Tgrid en run time, conectado a livebinding.


no encuentro en runtime la forma de llegar al LiveBindigs de tiempo de diseño.

juank1971 19-03-2022 21:41:13

Bueno mientras alguien me da otra idea voy resolviendo con esta por si la ven correcta
es una funcion que busca por el Formulario el componente TLinkGridToDataSource y dentro de este componente
esta el nombre del grid con esto se que TLinkGridToDataSource tiene el Grid y dentro

esta un TBindSourceDB que tiene a que dataset esta asociado .



reslueto el problema, en lugar de buscar partiendo de un Tgrid el dataset, hago lo contrario busco que
TLinkGridToDataSource tiene dentro el Tgrid que quiero y cuando lo encuentro se que Dataset es.


Con esta

Código Delphi [-]
function Tform1.GetDataSet(GridName: string): TDataset;
var
  i, j: Integer;
begin
  result := nil;
  for i := 0 to ComponentCount - 1 do
    for j := 0 to ChildrenCount - 1 do
      if Components[i] is TLinkGridToDataSource then
        if GridName = TGrid((Components[i] as TLinkGridToDataSource).GridControl).Name then
          result := TBindSourceDB((Components[i] as TLinkGridToDataSource).DataSource).DataSet;
end;

ElKurgan 21-03-2022 07:03:27

Gracias por compartir la solución

Saludos

Neftali [Germán.Estévez] 21-03-2022 17:54:37

Cita:

Empezado por juank1971 (Mensaje 546102)
Bueno mientras alguien me da otra idea ...

Puedes probar, pasando como parámetro el componente Grid (en lugar del nombre), que siempre es más seguroi y con un código como este:

Código Delphi [-]
var
  i:integer;
begin
  for i := 0 to (BindingsList1.BindCompCount - 1) do begin
    if (BindingsList1.BindComps[i] is TLinkGridToDataSource) then begin
      if (TLinkGridToDataSource(BindingsList1.BindComps[i]).GridControl = AGridComponent) then
        Result := TLinkGridToDataSource(BindingsList1.BindComps[i]).DataSource....

    end;

Se trata de recorrer todos los componentes de binding (si tuvieras más de uno) e identificar el que tienes aociado al grid que estás buscando (parámetro AGridComponent).

juank1971 21-03-2022 18:12:33

ok gracias


La franja horaria es GMT +2. Ahora son las 05:40:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi