Используется VC++6.0 для доступа к MS SQL Server через ODBC. Формируется Recordset, на основе которого строится TreeView (Windows Controls). При работе пользователей с TreeView необходимо обращаться к RecordSet и считывать из него всякую инфу. Как связать RecordSet с TreeView, чтобы например после сортировки или другого перестроения TreeView по определенным параметрам, легко находить соответствующую запись в RecordSet? Сейчас чтобы найти соответствующую запись в RecordSet приходиться отсчитывать определенное количество записей с начала RecordSeta, которое соответствует порядковому номеру Noda в дереве. Соответственно если порядок Nodoв в дереве меняется, то данный метод не работает. В RecordSet не вставишь номера Nodoв (так как он связан с источником данных и изменяться не может) и в TreeView нет места куда бы поместить номер записи RecordSeta. Подскажите кто как делает. Может есть классические варианты?
Здравствуйте Kost, Вы писали:
K>... В RecordSet не вставишь номера Nodoв (так как он связан с источником данных и изменяться не может) и в TreeView нет места куда бы поместить номер записи RecordSeta. Подскажите кто как делает. Может есть классические варианты?
На самом деле место там есть, как и в большинстве подобных control'ов. TreView имеет свойство Tag, которое для этого и задумывалось. Чтобы не быть голословным, выдержка из MSDN:
Tag Property
Returns or sets an expression that stores any extra data needed for your program. Unlike other properties, the value of the Tag property isn't used by Visual Basic; you can use this property to identify objects.
Syntax
object.Tag [= expression]
Сам использовал для аналогичных целей, работает. Вот только мне показалось несколько рискованным хранить в этом поле номер записи. Жизнь научила, что СУБД обращаются с порядком записей весьма вольно, по крайней мере, никто не обещает его соблюдать. Лично я хранил в этом поле первичный ключ, по которому всегда можно однозначно найти запись.
Успехов!