Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: [FMX] Combobox per Code mit Daten füllen

  Alt 16. Feb 2017, 12:00
Für ein schöneres Debugging, sollte man seinen Kompoennten immer einen Namen geben.
Und wer gibt bei dieser Variante das ganze wieder frei, wenn der Owner leer ist?

Mit einem Namen kann man beim Debuggen erstmal sehen, wen man in den Pfoten hat, wenn man 'nen Zeiger auf "irgendein" Control hat.
Und man kann hier z.B. eine Prüfung einbauen.
Delphi-Quellcode:
procedure TForm14.LinkToControl(Control: TControl; DataSet: TDataSet; FieldName: string);
var
  DataName: string;
  BindSourceDB: TBindSourceDB;
  BindingsList: TBindingsList;
  LinkListControl: TLinkListControlToField;
begin
  DataName := DataSet.Name;
  if (DataName = '') and Assigned(DataSet.DataSource) then
    DataName := DataSet.DataSource.Name;

  if Assigned(Control.FindComponent(DataName + '_BindSource')) then
    raise Exception.CreateFmt('LinkToControl: %s.%s ist bereits an %s (%s) gebunden.', [DataName, FieldName, Control.Name, Control.ClassName]);

  BindSourceDB := TBindSourceDB.Create(Control);
  BindSourceDB.Name := DataName + '_BindSource';
  BindSourceDB.DataSet := DataSet;
  BindSourceDB.DataSet.Active := True; // das Beides hat hier doch eigentlich nichts zu suchen
  BindSourceDB.DataSource.Enabled := True; //

  BindingsList := TBindingsList.Create(BindSourceDB);
  BindingsList.Name := DataName + '_BindingsList';

  LinkListControl := TLinkListControlToField.Create(BindingsList);
  LinkListControl.Name := DataName + '_LinkListControl';
  LinkListControl.Control := Control;
  LinkListControl.DataSource := BindSourceDB;
  LinkListControl.FieldName := FieldName;
  LinkListControl.Active := True;
end;
$2B or not $2B
  Mit Zitat antworten Zitat