На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование под PalmOS"
Правила раздела просты:
1. Будьте вежливыми.
2. Задавате вопросы только по теме. Пользовательские вопросы (у меня не работает пальм) являются оффтопиком. Пользуйтесь конференциями palmz.in, hpc.ru, ihand.ru .
3. Поиск вареза запрещен.
4. Пользуйтесь поиском. Не надейтесь, что кому-то доставляет удовольствие отвечать в сотый раз на один и тот же вопрос.
  
> Небольшой подарок начинающим кодерам! , Нормальные функции работы с тесковыми полями
    Теперь работать с текстовыми полями станет по приятней :whistle: тока не зыбывайте в обработчиках закрытия окна писать:

    fldSetText(formid, filedid, NULL); что бы освободить память.

    ExpandedWrap disabled
       
      void fldSetText(UInt16 formid, UInt16 fieldid, char* str, Boolean redraw=true)
      {
        FormType  *pFrm = FrmGetFormPtr(formid);
        UInt16     iFld = FrmGetObjectIndex(pFrm, fieldid);
        FieldType *pFld = (FieldType*)FrmGetObjectPtr(pFrm, iFld);
       
        MemHandle hMem = FldGetTextHandle(pFld);
        FldSetTextHandle(pFld, NULL);
        if(hMem!=NULL) MemHandleFree(hMem);
       
        if(str==NULL) return;
       
        hMem = MemHandleNew(StrLen(str)+1);
        MemPtr pMem = MemHandleLock(hMem);
        StrCopy((char*)pMem, str);
        MemHandleUnlock(hMem);
        FldSetTextHandle(pFld, hMem);
        
        if(redraw)
          FldDrawField(pFld);
      }
       
      char* fldGetText(UInt16 formid, UInt16 fieldid)
      {
        FormType  *pFrm = FrmGetFormPtr(formid);
        UInt16     iFld = FrmGetObjectIndex(pFrm, fieldid);
        FieldType *pFld = (FieldType*)FrmGetObjectPtr(pFrm, iFld);
       
        return FldGetTextPtr(pFld);
      }


    кстати, это отлично работает со всеми полями и редактируемыми и не редактируемыми и однострочными и многострочными, причем reculculate делать не нужно так используется FldSetTextHandle.

    formid и fieldid - это просто идентификаторы ресурсников (формы и поля)
    Сообщение отредактировано: Procenco -
      ну че ни каму не надо што ли?
        Кому надо - те, думаю, забрали :-)
        Кстати - в большинстве случаев параметр формы - не имеет смысла, почти всегда юзается активная форма.
          Цитата renton @ 21.12.04, 12:58
          Кому надо - те, думаю, забрали :-)
          Кстати - в большинстве случаев параметр формы - не имеет смысла, почти всегда юзается активная форма.

          вот именно что почти.....
            Procenco, сделай подарок начинающим кодерам использующим си переведя вот этот код с паскаля на си.
            Думаю и тебе будет интересно на него взглянуть.

            З.Ы.: прости я и сам бы это сделал, но беда со временем. :whistle:
            Прикреплённый файлПрикреплённый файлPSLibrary.rar (19.97 Кбайт, скачиваний: 186)
              вышеприведенный код отрабатывается как надо. Филды меняют свое содержимое. Но после того как метод fldSetText был вызван, начинаются рандомные крешы, к примеру на методе DmRemoveRecord(MyDB, CurrentRecord);
              Если метод fldSetText не вызывать, то всё работает как надо.
              Крешы начинаются если использовать этот метод хотя бы даже так:
              ExpandedWrap disabled
                Char* noteText = FldGetTextPtr(fld);
                fldSetText(fld, noteText);

              да, и передаю уже сразу FieldPtr и строку.
              Подскажите в чем может быть проблема. Как правильно внести текст в редактируемый филд?
              Спасибо.
              Сообщение отредактировано: debugx -
                Вот так работает:
                FldDelete(fld, 0, FldGetTextLength(fld));
                FldInsert(fld, str, StrLen(str));
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0221 ]   [ 14 queries used ]   [ Generated: 8.07.25, 05:48 GMT ]