DBGrid + multiselect and comp. inherited from TBufDataSet lazarus / 16-Databases ---------------------------------------------------------------------- hrayon · 2015-11-24 11:35 Hello! When a inherited component from TBufDataset is linked(by TDataSource) to a DBGrid setted to MultiSelect, it has a strange behavior when trying to use the multiselect abilities. The dbgrid show wrong selections. I don't know if this is my mistake or a bug. For example(component): Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i unit BufDatasetTemp; {$mode objfpc}{$H+} interface uses  Classes, SysUtils, {Forms,} BufDataset; type  TBufDatasetTemp = class(TBufDataset)  private    { Private declarations }  protected    { Protected declarations }  public    { Public declarations }    constructor Create(AOwner: TComponent); override;    destructor Destroy; override;  published    { Published declarations }  end; procedure Register; implementation procedure Register;begin  RegisterComponents('BufTest',[TBufDatasetTemp]);end; constructor TBufDatasetTemp.Create(AOwner: TComponent);begin  inherited Create(AOwner);end; destructor TBufDatasetTemp.Destroy;begin  inherited Destroy;end; end. Test program(remember to create the fields ID and NAME): Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i unit Unit1; {$mode objfpc}{$H+} interface uses  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, DBGrids,  BufDatasetTemp, db, BufDataset; type   { TForm1 }   TForm1 = class(TForm)    BufDataset1: TBufDataset;    BufDataset1ID1: TLongintField;    BufDataset1NAME1: TStringField;    BufDatasetTemp1: TBufDatasetTemp;    BufDatasetTemp1ID1: TLongintField;    BufDatasetTemp1NAME1: TStringField;    DataSource1: TDataSource;    DataSource2: TDataSource;    DBGrid1: TDBGrid;    DBGrid2: TDBGrid;  procedure FormShow(Sender: TObject);  private    { private declarations }  public    { public declarations }  end; var  Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormShow(Sender: TObject);begin  BufDatasetTemp1.CreateDataset;  BufDatasetTemp1.Open;  BufDatasetTemp1.Append;  BufDatasetTemp1ID1.AsInteger:=1;  BufDatasetTemp1NAME1.AsString:='PATRICK';  BufDatasetTemp1.Post;  BufDatasetTemp1.Append;  BufDatasetTemp1ID1.AsInteger:=2;  BufDatasetTemp1NAME1.AsString:='MARY';  BufDatasetTemp1.Post;  BufDatasetTemp1.Append;  BufDatasetTemp1ID1.AsInteger:=3;  BufDatasetTemp1NAME1.AsString:='CARLOS';  BufDatasetTemp1.Post;  BufDatasetTemp1.Append;  BufDatasetTemp1ID1.AsInteger:=4;  BufDatasetTemp1NAME1.AsString:='JACK';  BufDatasetTemp1.Post;  BufDatasetTemp1.Append;  BufDatasetTemp1ID1.AsInteger:=5;  BufDatasetTemp1NAME1.AsString:='ROMEO';  BufDatasetTemp1.Post;   BufDataset1.CreateDataset;  BufDataset1.Open;  BufDataset1.Append;  BufDataset1ID1.AsInteger:=1;  BufDataset1NAME1.AsString:='PATRICK';  BufDataset1.Post;  BufDataset1.Append;  BufDataset1ID1.AsInteger:=2;  BufDataset1NAME1.AsString:='MARY';  BufDataset1.Post;  BufDataset1.Append;  BufDataset1ID1.AsInteger:=3;  BufDataset1NAME1.AsString:='CARLOS';  BufDataset1.Post;  BufDataset1.Append;  BufDataset1ID1.AsInteger:=4;  BufDataset1NAME1.AsString:='JACK';  BufDataset1.Post;  BufDataset1.Append;  BufDataset1ID1.AsInteger:=5;  BufDataset1NAME1.AsString:='ROMEO';  BufDataset1.Post;end; end. After execute, try to multi selection on the left dbgrid(inherited, problem) and de right dbgrid(not inherited), clicking the mouse from ID 1 to 5 with +Ctr. TMSQL suffer this error also. I'm attaching code sample too. I'm using Typhon 32 IDE 5.5