пишите нам 
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
Ладошки к Солнцу! Ладошки: КПК, Коммуникаторы, Смартфоны, Windows Mobile, Symbian, Palm OS PDA и гаджеты
 

Приветствуем на Ладошках!

Ладошки, у меня РАНЧИК РОДИЛСЯ! :-) ... Уважаемые давние поклонники и посетители Ладошек! Я запускаю коммьюнити-сайт, новый проект, а вы все, будучи https://www.facebook.com/run4iq Бег для интеллектуалов. Бег для интеллекта. Бег "за" интеллектом. Он сам не придёт ;-) Ранчик родился! Андрей AKA Andrew Nugged Ладошки служат как архив программ для Palm OS и Poclet PC / Windows Mobile и разрешённых книг с 15 окрября 2000 года.
 
Статьи на Ладошках: о КПК и гаджетах
список групп статейВы пишете статьи? Контактируйте с нами!

 
Работа с полями таблицы (Palm OS)


Автор/Источник: Ронин Виктор
» 31.10.2002 08:54,
просмотров сегодня: 1, всего: 2558
статья размещена в группе: Программирование
оценка: 2.334, 24 голоса


Сложность: Intermediate

Проблемам, связанным с применением Table в Palm’е, можно посвятить ОЧЕНЬ много времени, потому что этих проблем немало. Тем не менее, в рамках этой статьи, хочу пройтись по следам одной из проблем, которая обсуждалась в форуме «На Ладошках», то есть описать особенности работы Field’ов внутри Table.

Главный вопрос этой темы — как получить данные, хранящиеся внутри Field’а в Table? Достаточно быстрого взгляда в документацию, чтобы найти простой и... неправильный ответ — использование функции TblGetItemPtr. Как написано в ее описании: «Некоторые типы элементов таблицы отображают то, что хранится в поле ptr, а некоторые — то, что хранится в поле intValue». Заглянув в описание TableItemType, мы увидим, что textTableItem (отвечающий за обычное редактируемое поле в таблице) использует поля fontID и ptr из структуры, описывающей элемент таблицы. Судя по этим двум фактам, логично предположить, что содержимое field’а хранится в ptr, откуда мы и пытались получить данные посредством функции TblGetItemPtr. Но логика в этом случае не уместна, так что копаем глубже.

Первое, что меня насторожило, это то, что для загрузки данных в редактируемые поля надо применять функцию типа TableLoadDataFuncType, которая, на самом деле, должна возвращать не указатель, а MemHandle. Конечно, можно допустить, что в ptr хранится указатель на MemHandle или необходимо привести ptr к MemHandle, но как-то это уж очень странно. Следующей стадией был глубокий Debug, во время которого я вспомнил, что TableLoadDataFuncType указывает на прорисовку таблицы и на выбор одного из полей редактирования. И тут я во второй раз засомневался — почему на щелчок по полю еще раз считывается MemHandle, ведь должен же он где-то храниться внутри таблицы?

Как результат, через некоторое время я раскопал, что в таблице НЕ ХРАНЯТСЯ данные о содержимом ее полей. Только на момент прорисовки они временно берутся из функции TableLoadDataFuncType, прорисовываются и высвобождаются. При выборе какого-то поля оно существует до тех пор, пока есть фокус на нем, после чего вызывается TableSaveDataFuncType и тоже высвобождается. Таким образом, все содержимое мы сами должны где-то хранить и подсовывать таблице, когда ей нужны данные, и сохранять, когда она хочет их высвободить. Поэтому, единственный метод получить данные из поля — получать их из наших же личных запасов, откуда мы их даем таблице в функции load. В том случае, если поле уже с фокусом, то есть реально существует, единственным отклонение от вышеприведенного правила может быть использование функции TblGetCurrentField, а после — FldGetTextPtr.

Можно считать, что решение проблемы найдено. Правда, упустили один момент: а что же такое хранит ptr? А в том то и хитрость, что ptr хранит только то, что мы ему непосредственно передали функцией TblSetItemPtr. А то, что в документации на этот счет написано будто бы textTableItem использует ptr — ни что иное, как легкое преувеличение. :)

1   2   3   4   5
«хуже     ваша оценка     лучше»


Обсуждение

Ваше мнение будет первым.



 

Чтобы писать комментарии вам нужно
авторизоваться (войти) или зарегистрироваться


 
Регистрация товарного знака в Украине patent.km.ua.
Telephones, address and opening times for shops, post and banks in the UK
 
 

 

статьи
по этой теме
 
EWE — инструмент разработки Java-приложений для платформы PocketPC
04-02-2008, рейтинг(общ.): 3.4, просм.: 1/5577

Платформа Palm OS: защита программного обеспечения
14-05-2003, рейтинг(общ.): 2.862, просм.: 1/8531

Немножко о работе с сетями (Palm OS)
18-03-2003, рейтинг(общ.): 2.22, просм.: 1/4243

Установка цветов прорисовки (Palm OS)
15-01-2003, рейтинг(общ.): 2.35, просм.: 1/2551

Накладывающиеся Control’ы (Palm OS)
29-12-2002, рейтинг(общ.): 2.334, просм.: 1/2384

Создание Static Library (Palm OS)
28-12-2002, рейтинг(общ.): 2.9, просм.: 1/3027

Использование внеэкранного буфера при высоком разрешении (Palm OS)
11-12-2002, рейтинг(общ.): 2.226, просм.: 1/3131

Четыре метода перехвата нажатий на кнопки Палма (Palm OS)
28-11-2002, рейтинг(общ.): 2.653, просм.: 0/3420

Ссылки по программированию (Palm OS). Часть 3
21-11-2002, рейтинг(общ.): 1.812, просм.: 1/5368

Самоудаляющаяся программа (Palm OS)
21-11-2002, рейтинг(общ.): 2.364, просм.: 0/2843

Программирование под Palm OS: Урок 1. Знакомство с CodeWarrior и Constructor’ом
15-11-2002, рейтинг(общ.): 4.438, просм.: 0/4080

Недокументированные функции MemSemaphoreReserve и MemSemaphoreRelease (Palm OS)
14-11-2002, рейтинг(общ.): 2.749, просм.: 1/2351

Устройство и функционирование Shared Library (Palm OS)
12-11-2002, рейтинг(общ.): 5, просм.: 1/2288

Программирование под Palm OS: Урок 0. Что нужно для того, чтобы писать под Palm?
09-11-2002, рейтинг(общ.): 3.824, просм.: 0/2881

Коротко о вставке текста в Field’ы (Palm OS)
07-11-2002, рейтинг(общ.): 2.44, просм.: 1/2247

Ссылки по программированию (Palm OS). Часть 2
31-10-2002, рейтинг(общ.): 2.475, просм.: 1/5035

Работа с потоковыми файлами на Palm’е (File Streaming API) (Palm OS)
31-10-2002, рейтинг(общ.): 2.095, просм.: 0/2668

Хранение проекта в системе контроля версий (Palm OS)
29-10-2002, рейтинг(общ.): 2.111, просм.: 0/2681

О custom control’ах и их реализации в виде gadget’ов (Palm OS)
28-10-2002, рейтинг(общ.): 2.632, просм.: 0/2825

Быстрая работа с графикой (Palm OS)
25-10-2002, рейтинг(общ.): 2.167, просм.: 2/3180

а вы знаете, что есть:
- рейтинг-каталог сайтов Ладошек?

поддержите
Ладошки
 
Рейтинг Ладошек: КПК, мобильность, коммуникаторы, смартфоны, гаджеты, высокие технологии Рейтинг каталога сайтов Хмельницкого региона Поддержите Ладошки: Как поддержать сайт?
Использование материалов сайта разрешено только при наличии
гиперссылки на страницу Ладошек без блокировки индексации
реклама на сайте    Andrew Nugged © 2000-2015