Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   fluent livebindings, No list control editor available for TstringGrid (https://www.delphipraxis.net/206039-fluent-livebindings-no-list-control-editor-available-tstringgrid.html)

bernhard_LA 12. Nov 2020 08:37


fluent livebindings, No list control editor available for TstringGrid
 
Liste der Anhänge anzeigen (Anzahl: 1)
wir verwenden die library uses LiveBindings.Fluent, bei einigen Projekten funktioniert die Livebindings via code sehr gut.
Leider gibt es aktuell ein Projekt mit dieser unit :

Fehlermeldung :

Delphi-Quellcode:
Error in , No list control editor available for TstringGrid

der code geht wie folgt :

Delphi-Quellcode:
uses
  LiveBindings.Fluent,
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  .....




var  
    BindSourceDB1: TBindSourceDB;
    BindingsList1: TBindingsList;



procedure TForm.FormCreate(Sender: TObject);
begin
  ....

  BindSourceDB1 := TBindSourceDB.Create(self);

  BindSourceDB1.DataSet := FDQuery1;

  BindingsList1 := TBindingsList.Create(self)


end;


procedure TForm.ActivateLiveBindings(Sender: TObject);

begin
    .....
    BindingsList1.BindGrid(strngrd1).DefaultColumnWidth(256)
    .ToBindSource(BindSourceDB1);


Kennt ihr diese Fehlermeldung auch ???? ....... und auch eine Lösung ?

mkinzler 12. Nov 2020 08:56

AW: fluent livebindings, No list control editor available for TstringGrid
 
Da scheint der glue code für ein StringGrid in der Implementierung zu fehlen.

bernhard_LA 12. Nov 2020 09:38

AW: fluent livebindings, No list control editor available for TstringGrid
 
was ist der glue code ?

TiGü 12. Nov 2020 13:20

AW: fluent livebindings, No list control editor available for TstringGrid
 
https://de.wikipedia.org/wiki/Glue_Code

TiGü 12. Nov 2020 13:47

AW: fluent livebindings, No list control editor available for TstringGrid
 
Bitte die Kommentare beachten!

Delphi-Quellcode:
unit Unit1;

interface

uses
  System.SysUtils,
  System.Classes,
  System.Rtti,
  FMX.Grid, FMX.Types, FMX.Forms, FMX.Grid.Style, Fmx.Bind.DBEngExt, FMX.Controls, FMX.Controls.Presentation,
  FMX.ScrollBox,
  Data.Bind.Components, Data.Bind.DBScope, Data.Bind.EngExt,
  LiveBindings.Fluent,
  Fmx.Bind.Editors; // <------ muss mit drin sein, da hier
  // im initialization Teil mit RegisterBindEditorFactory() u.a. TBindStringGridEditorFactory angemeldet wird

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BindSourceDB1: TBindSourceDB;
    BindingsList1: TBindingsList;
    Grid1: TGrid;
    procedure FormCreate(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // ToBindSource auskommentiert, da kommen da merkwürdige "Evalution mit Self" Fehler.
  BindingsList1.BindGrid(StringGrid1).DefaultColumnWidth(256){.ToBindSource(BindSourceDB1)};
end;

end.

bernhard_LA 12. Nov 2020 22:49

AW: fluent livebindings, No list control editor available for TstringGrid
 
der Tipp mit der fehlenden unit hat das Problem gelöst


jetzt compiliert zwar die Anwendung, es wollen sich aber keine Daten im Stringgrid zeigen :-(
in anderen Programmen hatten wir mit unserer Codesequenz schon Erfolg ... woran könnte es jetzt liegen wenn wir keine Daten sehen :?:


Delphi-Quellcode:

  QueryString := 'select * from ' + table;

  FQuery.active := false;
  FQuery.SQL.Clear;
  FQuery.SQL.add ( QueryString ) ;
  FQuery.Open;


  rec_count := getRecordCount (FConnection, table, ...  ) ;
  mmo.Lines.Add(' record count ' +  IntToStr(rec_count) );     ///  passt in der query sind datensätze vorhanden :-)

 bndsrcdb1.Dataset:= FQuery;
  // BindingsList.BindGrid(strGrid_ImgSampleResults).ToBindSource(BindSourceDB1);
  bndngslst1.BindGrid(strGrid_ImgSampleResults).DefaultColumnWidth(256)
    .ToBindSource(bndsrcdb1);

TiGü 13. Nov 2020 07:55

AW: fluent livebindings, No list control editor available for TstringGrid
 
Ich würde jetzt mal Debuggen in den Raum werfen?

bernhard_LA 13. Nov 2020 12:03

AW: fluent livebindings, No list control editor available for TstringGrid
 
in dieser Testanwendung werden die Daten fehlerfrei angezeigt
gibt es noch mehr glue code bei dem Thema livebinding ?

wie kann ich eine fehlende - nicht eingebunden Unit debuggen ?




Delphi-Quellcode:
  uses
  LiveBindings.Fluent,
  ...... ( einige eigene Units , TUserQuery )
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants,

  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Controls.Presentation, FMX.Edit, System.IOUtils,
  System.Rtti, FMX.Grid.Style, Data.Bind.EngExt,
  FMX.Bind.DBEngExt, FMX.Bind.Grid, System.Bindings.Outputs, FMX.Bind.Editors,
  Data.Bind.Components, Data.Bind.Grid, Data.Bind.DBScope, FMX.ScrollBox,
  FMX.Grid, FMX.Layouts, FMX.ListBox, Data.Bind.Controls, FMX.Bind.Navigator,
  FMX.EditBox,
  FMX.SpinBox, FMX.TabControl, FMX.Objects, FMX.Memo, FMX.ExtCtrls,
  FMX.Memo.Types;

type
  TForm2 = class(TForm)
    strngrd1: TStringGrid;
    strngrd2: TStringGrid;
    bndnvgtr1: TBindNavigator;
    bndnvgtr2: TBindNavigator;
    bndsrcdb1: TBindSourceDB;
    bndngslst1: TBindingsList;
    bndsrcdb2: TBindSourceDB;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }

    FServer: String;
    FDatabase: string;
    Ftab1: string;
    Ftab2: string;

    FConnection: TUserConnection;

    query_1: TUserquery;
    query_2: TUserquery;
    query_3: TUserquery;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.fmx}

procedure TForm2.FormCreate(Sender: TObject);
begin

  FConnection := TUserConnection.Create(nil);

  query_1 := TUserquery.Create(nil);
  query_1.connection := FConnection;
  query_2 := TUserquery.Create(nil);
  query_2.connection := FConnection;


  query_3 := TUserquery.Create(nil);

  FServer := '????????';
  FDatabase := '??????????';

  Ftab1 := '???????';
  Ftab2 := '???????';

  bndsrcdb1.DataSet := query_1;
  bndsrcdb2.DataSet := query_2;

  ConnectToDatabase(FServer, FDatabase, FConnection);

  query_1.sql.add('select * from ' + Ftab1);
  query_1.Open;

  query_2.sql.add('select * from ' + Ftab2);
  query_2.Open;

  bndngslst1.BindGrid(strngrd1).DefaultColumnWidth(256).ToBindSource(bndsrcdb1);

  bndngslst1.BindGrid(strngrd2).DefaultColumnWidth(256).ToBindSource(bndsrcdb2);

  bndnvgtr1.DataSource := bndsrcdb1;

  bndnvgtr2.DataSource := bndsrcdb2;

end;

end.

TiGü 13. Nov 2020 12:31

AW: fluent livebindings, No list control editor available for TstringGrid
 
Option 1:
Alle Units von den beiden uses-Klauseln von funktionierender Testanwendung 1 in die nicht-funktionierende Testanwendung 2 kopieren und ausprobieren.

Folgendes mit Debug-DCU in den Projektoptionen aktiviern:

Option 2:
In funktionierender Testanwendung 1 in der Unit Fmx.Bind.Editors debuggen, indem man Breakpoints auf
Delphi-Quellcode:
TBindListStringGridEditor.CanSetCurrentValue, TBindListStringGridEditor.SetItemIndex, TBindListStringGridEditor.SetSelectedText, TBindListStringGridEditor.GetSelectedText, usw.
setzt.
Funktionierende Testanwendung 1 laufen lassen und den Callstack lesen und verstehen.

Das gleiche Spiel für nicht-funktionierende Testanwendung 2 machen und schauen, wo es genau scheitert.
Wahrscheinlich werden die Methoden vom TBindListStringGridEditor gar nicht angesprochen?

TiGü 17. Nov 2020 09:46

AW: fluent livebindings, No list control editor available for TstringGrid
 
Wie ist das hier ausgegangen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz