2015-07-16 1 views
0

Мне нужно связать объект, не визуальный, с TEdit.Livebindings с содержащимися объектами

TCountry = class 
    FName: string; 
    ... 
end; 

TCity = class 
    FName: string; 
    FCountry: TCountry; 
    ... 
end; 

Я использую LiveBindings с TDataGeneratorAdapter и TAdapterBindSource, и я не как получить доступ к: city.country.name в LiveBindings, чтобы показать в TEdit.

Моя проблема заключается в том, как связать (или получить доступ) city.country.name в livebindings. Я знаю bind city.name в TEdit, потому что city.name - это строка, но city.country.name Я не получаю работу. *** извините мой английский :)

+0

Какая версия Delphi? – Dsm

+0

Я использую Delphi XE8 – Odione

+0

Извините, я не использовал XE8. Я сделал это с XE2, но, возможно, это то же самое. Посмотрите на меня ниже. – Dsm

ответ

0

Это работало в Delphi XE2. Я думаю, что он должен работать в XE8.

Щелкните правой кнопкой мыши на компоненте TDataGeneratorAdaptor.

Хотя они не дают понять, что вы здесь делаете, имитирует базу данных своим классом в качестве записи. Он не может прочитать ваш класс (поскольку это будет существовать только во время выполнения, и мы находимся в режиме разработки здесь), поэтому вы должны явно добавить свои поля, чтобы имитировать, скажем, класс TCity. Поэтому вы должны выбрать «Добавить поле» и ввести имя как «FName» и выбрать данные поля (none) типа ftString.

С страной у вас возникли проблемы. На самом деле вам нужно объединить классы, если сможете. В противном случае вам понадобится создать отдельный TDataGeneratorAdaptor для TCountry, помня, что вы фактически генерируете то, что составляет базу данных в памяти.

Следует обратить внимание на примеры баз данных и думать о ваших объектах в этих условиях.

0

Моя проблема в том, как связать (или получить доступ) city.country.name в livebindings. Я знаю bind city.name в TEdit, потому что city.name - это строка, но city.country.name Я не получаю работу. *** извините мой английский :)