Delphi Can

Orjinalini görmek için tıklayınız: bind visually ?
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
iyi günler,

bileşenlerin ( listbox vs. ) bind visually kısmındaki eşleştirmeleri kod ile nasıl yapabilirim ?

Ek-Aciklama.png

bind visually kısmında bu işlemleri yaptıktan sonra mobil de test ederken ; ilk açılışta aynısı gibi görünmekte fakat başka forma geçip tekrar dönüldüğünde sadece item_text kısmı görünmekte.

bu sorunu nasıl çözebilirim ? 

kod ile yapmak geldi aklıma ama bulamadım.
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.

satmpwgd0gwcfnqteefy.png

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;


(07-10-2018, Saat: 20:31)mrmarman Adlı Kullanıcıdan Alıntı: [ -> ]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.

satmpwgd0gwcfnqteefy.png

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 OLEDBBig Grinatabase 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;



çok teşekkür ederim hocam elinize sağlık.

MySQL bağlantısı için için kullanmam gerekiyor ama alacağım yeteri kadar kod vermişssiniz bunun için minnettarım  Shy


( 1 gün sonra yazdığım için kusruma bakmayın giremedim işlerden dolayı )