Sizin için bütünüyle manuel / program içinden yapılmış bir BindingDB örneği hazırladım.
Forma sadece (
1) tane
TListView bırakın o kadar.
Mesaj ekindeki MSAccess veritabanını da indirip, EXE klasöründe DATA isimli bir klasör açıp içine atın.
Uses Data.Bind.EngExt, Fmx.Bind.Editors, Fmx.Bind.DBEngExt;
Var
xBindSourceDB : TBindSourceDB;
xBindingsList : TBindingsList;
xLinkListControlToField : TLinkListControlToField;
xAdoConnection : TAdoConnection;
xDataSource : TDataSource;
xAdoQuery : TAdoQuery;
procedure TForm1.FormCreate(Sender: TObject);
Const
xADO = 'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Data Source=%s;'
+ 'Mode=Share Deny None;'
+ 'Persist Security Info=False;'
+ 'Jet OLEDB:Database Password=%s;'
;
Var
strData : String;
begin
strData := ExcludeTrailingPathDelimiter( ExtractFilePath(ParamStr(0)) ) + '\DATA\filmdb.mdb';
xAdoConnection := TAdoConnection.Create(nil);
With xADOConnection do begin
Connected := False;
LoginPrompt := False;
ConnectionString := Format( xAdo, [ strData, '' ] );
end;
xDataSource := TDataSource.Create(nil);
xAdoQuery := TAdoQuery.Create(nil);
xDataSource.DataSet := xADOQuery;
With xADOQuery do begin
Connection := xADOConnection;
SQL.Text := 'SELECT * FROM Movies';
Active := True;
end;
if not Assigned( xBindSourceDB )
then xBindSourceDB := TBindSourceDB.Create(nil);
With xBindSourceDB do begin
DataSet := xDataSource.DataSet;
DataSource.Enabled := True;
DataSet.Active := True;
end;
if not Assigned( xBindingsList )
then xBindingsList := TBindingsList.Create( xBindSourceDB );
if not Assigned( xLinkListControlToField )
then xLinkListControlToField := TLinkListControlToField.Create( xBindingsList );
ListView1.ItemAppearance.ItemAppearance := 'Custom';
ListView1.ItemAppearanceObjects.ItemObjects.Detail.Visible := True;
With xLinkListControlToField do
begin
Control := ListView1;
DataSource := xBindSourceDB;
Active := True;
FillExpressions.Clear;
with FillExpressions.AddExpression do begin
SourceMemberName := 'M_Name';
ControlMemberName := 'Text';
ListView1.ItemAppearanceObjects.ItemObjects.Text.PlaceOffset.Y := -10;
end;
with FillExpressions.AddExpression do begin
SourceMemberName := 'M_Year';
ControlMemberName := 'Detail';
ListView1.ItemAppearanceObjects.ItemObjects.Detail.PlaceOffset.Y := +10;
end;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(xLinkListControlToField) then
begin
xLinkListControlToField.Active := False;
xLinkListControlToField.Free;
end;
if Assigned(xBindingsList) then xBindingsList.Free;
if Assigned(xBindSourceDB) then xBindSourceDB.Free;
xAdoQuery.Active := False;
xAdoConnection.Connected := False;
xDataSource.DataSet := nil;
xDataSource.Free;
xAdoQuery.Free;
end;