Livebinding Listbox в Delphi xe2

Как я могу синхронизировать два объекта TListBox, приняв любое изменение в любом из списков, чтобы быть доступным в обоих списках.

===================== обновлено ============================ ======================== этот вопрос обновляется после первого ответа

если мы должны использовать

bindingslist1.Notify(ListBox2,''); 

все время вносите изменения в список, какова цель использования livebibnding вместо использования

ListBox1.Items.Assign(ListBox2.Items ); 

все время происходят изменения.

1 ответ

Короче говоря, вот как я сделал это как приложение firemonkey, то же самое должно работать с vcl, я думаю:

Создать новое приложение Firemonkey HD

Добавить два списка Добавить редактирование и кнопку (для ввода данных)

Listbox1 -> Livebindings -> New Livebinding -> TBindExpression

Новый компонент с именем BindingsList1 автоматически добавляется в форму

Отредактируйте новые свойства bindexpression (BindExpressionListBox11 для меня)

Direction = DirBiDirectional
Managed = true
NotifyOutputs = true
ControlExpression = Items
SourceExpression = Items

Создайте событие clickclick (или вы можете поместить его в onChanged, но оно по какой-то причине не вызывается при добавлении элемента. Оно вызывается, если вы выбираете что-то в списке):

procedure TForm1.Button1Click(Sender: TObject);
begin
   listbox2.Items.Add(edit1.Text);
   bindingslist1.Notify(listbox2, '');
end;

Теперь всякий раз, когда вы добавляете элемент в listbox2, изменение отражается и в listbox1, и наоборот (из-за настройки dirBiDirectional). Если вместо этого добавить в listbox1, вам нужно позвонить:

bindingslist1.Notify(listbox1, '');

Надеюсь, это поможет вам начать.

В Embarcadero также есть несколько хороших материалов для привязки к живым файлам.

Другие вопросы по тегам