Discussion Board

Results 1 to 10 of 10
  1. #1
    Registered User namelessnkz's Avatar
    Join Date
    Nov 2011
    Posts
    6
    Добрый день!
    Пытаюсь написать программу с использованием CEikEdwin в качестве текстового редактора.
    Не получается отобразить scrollbars сразу после запуска программы.
    Вот код конструктора:
    Code:
    void ConstructL( 
    		const TRect& aRect, 
    		const CCoeControl* aParent, 
    		MEikCommandObserver* aCommandObserver )
    	{
    	if ( aParent == NULL )
    	    {
    		CreateWindowL();
    	    }
    	else
    	    {
    	    SetContainerWindowL( *aParent );
    	    }
    	iFocusControl = NULL;
    	iCommandObserver = aCommandObserver;
    	InitializeControlsL();
    	SetRect( aRect );
    	ActivateL();
    	}
    
    void InitializeControlsL()
    	{
    	iTextEdit = new(ELeave) CEikEdwin;
    	iTextEdit->SetContainerWindowL( *this );
    		{
    		TResourceReader reader;
    		iEikonEnv->CreateResourceReaderLC( reader, R_TED_CONTAINER_TEXT_EDIT );
    		iTextEdit->ConstructFromResourceL( reader );
    		iTextEdit->CreateScrollBarFrameL();
    		iTextEdit->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOn);
    		CleanupStack::PopAndDestroy(); // reader internal state
    		}
    		{
    		HBufC* text = StringLoader::LoadLC( R_TED_CONTAINER_TEXT_EDIT_2 );
    		iTextEdit->SetTextL( text );
    		CleanupStack::PopAndDestroy( text );
    		}
    	
    	iTextEdit->SetFocus( ETrue );
    	iFocusControl = iTextEdit;
    	}
    Заранее спасибо за ответы.

  2. #2
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Пример в нашей Wiki: "Adding scrollbars to a rich text editor"

  3. #3
    Registered User namelessnkz's Avatar
    Join Date
    Nov 2011
    Posts
    6
    Спасибо, разобрался.

  4. #4
    Registered User namelessnkz's Avatar
    Join Date
    Nov 2011
    Posts
    6
    Чтобы не плодить лишние темы спрошу здесь.
    Есть функция, которая выводит на экран строки
    Code:
    void InsertTextL(const TDesC& aText)
    	{
    	TInt docLength = iTextEditor->Text()->DocumentLength();
    	if(docLength == 0)
    		{
    		iTextEditor->SetTextL(&aText);
    		}
    	else
    		{
    		iTextEditor->Text()->InsertL(docLength, aText);
    		iTextEditor->UpdateScrollBarsL();
    		}
    	docLength = iTextEditor->Text()->DocumentLength();
    	iTextEditor->SetCursorPosL(docLength, EFalse);
    	HandleResourceChange(0);
    	}
    Пока длина текста меньше 2000 символов, все нормально. Но после того как количество символов превышает это значение, скролл перематывается на начало текста, и при прокрутке вниз показываются не все строки.

  5. #5
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Вероятно, на обработку большого объема текста требуется некоторое время.
    Когда скролл перематывается на начало, чему равен docLength при этом?
    Что именно имеется в виду под "показываются не все строки"? Не показывается последняя строка? В таком случае добавьте в конец документа символ(ы) переноса строки.

  6. #6
    Registered User namelessnkz's Avatar
    Join Date
    Nov 2011
    Posts
    6
    С возвратом скролла в начальную позицию разобрался, убрал вызов HandleResourceChange(), остается проблема отображения последних строк. Впечатление такое что размер скролла не соответствует содержимому окна и соответственно не до конца прокручивает документ. Да, символы переноса в конце строк стоят.

  7. #7
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Не забываете обновить скроллбары после изменения содержимого текстового редактора?
    Code:
    iTextEditor->UpdateScrollBarsL();
    iTextEditor->DrawNow();

  8. #8
    Registered User namelessnkz's Avatar
    Join Date
    Nov 2011
    Posts
    6
    Скроллбары обновляю, перерисовка экрана выполняется. Самое любопытное что пока длина документа менее 2000 символов, все идеально - и прокрутка и отрисовка, все. Как только символов становиться больше - скролл возвращается наверх и не прокручивает документ до последней строки...

  9. #9
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Странная проблема, в обсуждениях на форуме встречается упоминание о подобной проблеме на старых устройствах c Symbian 9.1 (link). А вы на каком устройстве тестируете и с каким SDK собираете проект?

    Вы можете проверить, как работает ваш проект на других смартфонах с помощью бесплатного сервиса Remote Device Access (RDA).

  10. #10
    Registered User namelessnkz's Avatar
    Join Date
    Nov 2011
    Posts
    6
    Большое вам спасибо за ответы. Тестирую на Nokia 5800, Symbian 9.4, собираю с SDK S60 5th Edition. Попробовал изменить пример, из набора SDK RichTextEditor, все работает. Текст добавляется, такой проблемы нет. Может быть все дело в том что у меня используется архитектура приложения с несколькими видами(CAknView), а в примере из SDK просто контейнер, содержащий текстовый редактор. Других соображений у меня не осталось. Буду пробовать менять архитектуру своего приложения.

Similar Threads

  1. CEikEdwin Scrollbar problem
    By deepikagohil in forum Symbian User Interface
    Replies: 4
    Last Post: 2010-01-19, 10:07
  2. CEikEdwin scrollbar, private member?
    By pinkhardlionel in forum Symbian C++
    Replies: 1
    Last Post: 2009-09-15, 12:07
  3. 请教 CEikEdwin scrollbar
    By nmgyp in forum Symbian
    Replies: 0
    Last Post: 2009-02-13, 08:02
  4. Scrollbar in CEikEdwin..
    By vineetbillorey in forum Symbian C++
    Replies: 4
    Last Post: 2008-09-29, 13:47
  5. How do i handle scrollbar attached to CEikEdwin ?
    By vcribe in forum Symbian User Interface
    Replies: 0
    Last Post: 2005-02-09, 15:03

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved