Anatoliy Опубликовано 7 октября, 2017 Поделиться Опубликовано 7 октября, 2017 Здравствуйте. Беру стандартный пример паскаль embarcadero: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\User Interface\ListView\ListViewCheckList или отсюда: ListViewCheckList 1. Открываю и переключаю Target на Win32. 2. У компонента PrototypeBindSource1 ставлю AutoActivate в false чтобы отключить тестовые данные. Хочу наполнить ListView своими данными. 3. Наполняю данные для ListView этим паскаль кодом: Adding headers to TListView programmatically При старте приложение валиться. Не могу понять почему при использовании своих данных выскакивает AV. Подскажите, что надо поправить? Спасибо. Цитата Ссылка на комментарий
0 enatechno Опубликовано 7 октября, 2017 Поделиться Опубликовано 7 октября, 2017 В п.3 Вы добавляете ListViewItem с Purpose := TListItemPurpose.Header. У него Objects.AccessoryObject = nil и приложение падает в TForm1.ListView1UpdateObjects. Могу предложить такою правку: procedure TForm1.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); begin if AItem.Purpose <> TListItemPurpose.Header then // проверка назначения айтема begin AItem.Objects.TextObject.Width := AItem.Objects.TextObject.Width - (5 + AItem.Objects.AccessoryObject.Width); AItem.Objects.AccessoryObject.Visible := FChecked.Contains(AItem.Index); end; end; Anatoliy 1 Цитата Ссылка на комментарий
0 Anatoliy Опубликовано 10 октября, 2017 Автор Поделиться Опубликовано 10 октября, 2017 Большое спасибо! Подскажите, пожалуйста, как исправить ситуацию если ItemAppearance установить в DynamicAppearance. В этом случае проблема возвращается. Спасибо. Цитата Ссылка на комментарий
0 enatechno Опубликовано 10 октября, 2017 Поделиться Опубликовано 10 октября, 2017 По умолчанию в DynamicAppearance есть только один объект - Text. Соответственно, из кода вы должны убрать все упоминания AItem.Objects.TextObject, AItem.Objects.AccessoryObject и изменить заполнение текста в ListViewItem (например так): for Item in [1..10] do ListView1.Items.Add.Data['Text1']:= Format('Regular item %d.%d', [Group, Item]); Как добавить свои объекты в LIstViewItem читайте Using the DynamicAppearance Value или смотрите видео. x11, Rusland и Anatoliy 3 Цитата Ссылка на комментарий
Вопрос
Anatoliy
Здравствуйте.
Беру стандартный пример паскаль embarcadero: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\User Interface\ListView\ListViewCheckList
или отсюда: ListViewCheckList
1. Открываю и переключаю Target на Win32.
2. У компонента PrototypeBindSource1 ставлю AutoActivate в false чтобы отключить тестовые данные. Хочу наполнить ListView своими данными.
3. Наполняю данные для ListView этим паскаль кодом: Adding headers to TListView programmatically
При старте приложение валиться. Не могу понять почему при использовании своих данных выскакивает AV. Подскажите, что надо поправить?
Спасибо.
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.