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 также есть несколько хороших материалов для привязки к живым файлам.