forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   передвижение по списку (http://forum.boolean.name/showthread.php?t=9031)

Illidan 31.08.2009 04:10

передвижение по списку
 
Скажем, есть общий лист на все обьекты(разные типы), есть переменная, содержащая ссылку на один из обьектов(любой из типов). Вопрос, как получить следующий обьект этого же типа из листа?
Для большей понятности еще так можно переформулировать... аналог блитцовских команд After,before.

jimon 31.08.2009 11:46

Ответ: передвижение по списку
 
Illidan
найди переменную в списке и считай следуйшую сравнивая тип, но имхо у тебя кривая архитектура раз тебе нужно такое делать
можно переписать класс списка так чтобы он строил дополнительно еще и масив для поиска, тогда операция поиска в списке была бы очень дешевая

Illidan 31.08.2009 16:40

Ответ: передвижение по списку
 
Насчет архитектуры вполне возможно, что она кривая. Я просто вообще не нашел как передвигаться по списку. Только через Tlink, но он выдает только базовый тип, а мне нужно выполнить метод искомого типа. Были мысли сделать всё через массивы, но тут опятьже нужен динамический массив, а как его сделать не чрезжопноя тоже незнаю.
Вобщем задача следующая, это для пользовательского интерфейса делаю. Есть значит несколько обьектов(окон), и при нажатии TAB они должны переключаться между собой. тоесть, если было активно предыдущее окно то оно становится неактивным и активным становится следующее по списку окно если доходит до последнего в списке то перечлючается опять на первое.

jimon 31.08.2009 18:47

Ответ: передвижение по списку
 
Illidan
ну так надо сделать некий TGuiObject, от него наследовать TWindow, сделать список окон и их крутить
а то что выдает TLink просто принудительно привести к TWindow и всё

Illidan 31.08.2009 18:58

Ответ: передвижение по списку
 
как его принудительно привести? крутить я умею только через eachin. какие еще способы есть для этого?

jimon 31.08.2009 21:51

Ответ: передвижение по списку
 
Illidan
пример
Код:

SuperStrict

Type mytype
Field myvar%
EndType

'приведение типов
Local temp:mytype = New mytype
Local temp2:Object = temp;
Local temp3:mytype = mytype(temp2)

Local list:TList = New TList

For Local i%=0 To 10
list.addlast(New mytype)
mytype(list.last()).myvar = i
Next

'как прокручивать TList
Local link:TLink = list.firstlink()

While link <> Null
Print "here we go : "+mytype(link.value()).myvar
link = link.nextlink()
Wend


Illidan 31.08.2009 23:06

Ответ: передвижение по списку
 
еслиб мог, поставил бы две пасибки))


Часовой пояс GMT +4, время: 19:52.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot