Nokioteca [Nokia] Forum: [c++] Plain Text Editors - Nokioteca [Nokia] Forum

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

[c++] Plain Text Editors

#1 L   pietro.versari 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 83
  • Iscritto: 15 marzo 2007
  • Cellulare:6680

Inviato 11 settembre 2007 - 14:22

Salve a tutti..
Premetto che non sono molto ancora molto pratico con symbian..

ho creato un semplicissimo programma con App, Document, AppUi e Container..

ora provo ad inserirci un campo testuale per inserire delle stringhe,
quindi nel file rss ho inserito il seguente codice (oltre alle librerie corrette):
RESOURCE EDWIN r_S60_text_edwin
	{
	flags = EAknEditorFlagDefault;
	width = 10;
	lines = 3;
	maxlength = 60;
	allowed_input_modes = EAknEditorAllInputModes;
	default_input_mode = EAknEditorTextInputMode;
	}


nel Container .h ho aggiunto la variabile
CEikEdwin* iEdwinTitle;

nel Container .cpp ho aggiunto il seguente codice:
nella funzione ConstructL
	TResourceReader reader;
	iCoeEnv->CreateResourceReaderLC(reader, R_S60_TEXT_EDWIN);
	
	iEdwinTitle = new(ELeave) CEikEdwin;
	iEdwinTitle->SetContainerWindowL( *this );
	
	iEdwinTitle->ConstructFromResourceL(reader);
	CleanupStack::PopAndDestroy();
	
	iEdwinTitle->SetFocus(ETrue);


nella funzione SizeChanged
iEdwinTitle->SetExtent( TPoint(10,30), iEdwinTitle->MinimumSize() );


ed infine nel destructor
delete iEdwinTitle;


Il programma compila, pero da qualche problema dato che non si possono cancellare le parole, non ci si riesce a muovere tra di esse, non si riesce ad inserire i numeri..
Conclusione c'e qualche errore da qualche parte..
Come devo fare? B)
0

#2 L   dokkis 

  • Senior Member
  • Gruppo: Developer
  • Messaggi: 828
  • Iscritto: 22 ottobre 2006
  • Località:Italia->Roma
  • Cellulare:NoKia 6630

Inviato 11 settembre 2007 - 18:45

ti azzardo 1 risposta.. ma nn so se può risolverti il prb...
non è che nel cpp dell'appview devi implementare un metodo simile a questo?!?

TKeyResponse CHelloWorldBasicAppView::OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType)
{	

	   if(aType != EEventKey)
	   {
		   return EKeyWasNotConsumed;
	   }
	   iEdwinTitle->OfferKeyEventL(aKeyEvent, aType);	
		   DrawDeferred();
   return EKeyWasConsumed;
}


cn la listbox a me serve implementare la funzione OfferKeyEventL altrimenti nn si muove! magari è la stessa cosa B)
0

#3 L   pietro.versari 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 83
  • Iscritto: 15 marzo 2007
  • Cellulare:6680

Inviato 11 settembre 2007 - 22:19

Visualizza Messaggidokkis, il 11/09/2007 - 19:45, ha scritto:

ti azzardo 1 risposta.. ma nn so se può risolverti il prb...
non è che nel cpp dell'appview devi implementare un metodo simile a questo?!?

TKeyResponse CHelloWorldBasicAppView::OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType)
{	

	   if(aType != EEventKey)
	   {
		   return EKeyWasNotConsumed;
	   }
	   iEdwinTitle->OfferKeyEventL(aKeyEvent, aType);	
		   DrawDeferred();
   return EKeyWasConsumed;
}


cn la listbox a me serve implementare la funzione OfferKeyEventL altrimenti nn si muove! magari è la stessa cosa B)


Grazie mille per la dritta, ho visto che c'entra sicuro, non mi risolve tutti i problemi ma e gia un passo avanti..
Grazie mille!
(fosse scritto megli sco cavolo di libro che sto seguendo..)
0

#4 L   dokkis 

  • Senior Member
  • Gruppo: Developer
  • Messaggi: 828
  • Iscritto: 22 ottobre 2006
  • Località:Italia->Roma
  • Cellulare:NoKia 6630

Inviato 11 settembre 2007 - 22:24

Visualizza Messaggipietro.versari, il 11/09/2007 - 23:19, ha scritto:

Grazie mille per la dritta, ho visto che c'entra sicuro, non mi risolve tutti i problemi ma e gia un passo avanti..
Grazie mille!
(fosse scritto megli sco cavolo di libro che sto seguendo..)

di niente B)
ma xkè nn risolve tt i tuoi prb? cosa c'è ancora ke nn va?
0

#5 L   memoryn70 

  • Millennium Member
  • Gruppo: Developer
  • Messaggi: 2112
  • Iscritto: 02 maggio 2007
  • Cellulare:Nokia N70
  • Firmware:5.0609.2.0.1

Inviato 12 settembre 2007 - 13:19

Visualizza Messaggidokkis, il 11/09/2007 - 23:24, ha scritto:

di niente B)
ma xkè nn risolve tt i tuoi prb? cosa c'è ancora ke nn va?


ho trovato questo x caso se vi può aiutare::

Per visualizzare questo link registrati o esegui il log in.

0

#6 L   pietro.versari 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 83
  • Iscritto: 15 marzo 2007
  • Cellulare:6680

Inviato 12 settembre 2007 - 18:15

Visualizza Messaggidokkis, il 11/09/2007 - 23:24, ha scritto:

di niente B)
ma xkè nn risolve tt i tuoi prb? cosa c'è ancora ke nn va?


ho aggiunto la seguente funzione al costruttore:
TKeyResponse CMioProgrammaContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
	{
	if(aType != EEventKey)
		{
		return EKeyWasNotConsumed;
		}
	return iEdwinTitle->OfferKeyEventL(aKeyEvent, aType);
	}


e cosi funziona con un campo di testo..

Ora io devo fare un costruttore con dentro due plain text editors, e premendo le freccie su o giu dovrei passare il focus dall'uno all'altro, e quindi chiamare l'offerKeyEvent con l'uno o con l'altro..
Qui mi pianto..

Visualizza Messaggimemoryn70, il 12/09/2007 - 14:19, ha scritto:

ho trovato questo x caso se vi può aiutare::

Per visualizzare questo link registrati o esegui il log in.


Grazie mille dell'informazione. proprio grazie a quella pagina (e all'aiuto di dokkis!) ero riuscito a sistemare il problema.. B)

PS: ho trovato
Per visualizzare questo link registrati o esegui il log in.
molto interessante, ora ci lavoro un po su, e quando avro trovato una soluzione la scrivero per i posteri! ;)
(e
Per visualizzare questo link registrati o esegui il log in.
..)

Messaggio modificato da pietro.versari il 12 settembre 2007 - 18:59

0

#7 L   pietro.versari 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 83
  • Iscritto: 15 marzo 2007
  • Cellulare:6680

Inviato 13 settembre 2007 - 19:37

Risolto!
Al codice che ho scritto nel primo post ho aggiunto la seguente funzione:
TKeyResponse CMioProgrammaContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
	{
	if(aType != EEventKey)
		{
		return EKeyWasNotConsumed;
		}
		
   	switch ( aKeyEvent.iScanCode )
   		{
   		case EStdKeyDownArrow:
   			if ( iEdwinNumber->IsFocused() )
				{
				iEdwinNumber->SetFocus(EFalse);					
				iEdwinTitle->SetFocus(ETrue);
				return iEdwinTitle->OfferKeyEventL(aKeyEvent, aType);
   				}
   			else
   				break;
   		case EStdKeyUpArrow:
   			{
   			if ( iEdwinTitle->IsFocused() && 0 == iEdwinTitle->CursorPos())
				{
				iEdwinTitle->SetFocus(EFalse);
				iEdwinNumber->SetFocus(ETrue);
				return iEdwinNumber->OfferKeyEventL(aKeyEvent, aType);
   				}
   			else
   				break;
   			}
   		}
	// Forward key events to editor. In real life only do this if editor is focused
	if ( iEdwinTitle->IsFocused() )
   		return iEdwinTitle->OfferKeyEventL(aKeyEvent, aType);
	if ( iEdwinNumber->IsFocused() )
   		return iEdwinNumber->OfferKeyEventL(aKeyEvent, aType);
	}

e funziona tutto ok..
Nota: ho due caselle di testo, quella piu in alto (iEdwinNumber) è su una sola riga, mentre la seconda è su piu righe..
Se sto scrivendo un testo su piu righe e premo la freccia in alto non voglio che cambi subito casella di testo, ma che si sposti alla righa precedente..
Per fare questo ho aggiunto la seguente riga:
0 == iEdwinTitle->CursorPos()

Che mi restituisce la posizione del cursore..
Grazie a tutti!
Ciao
0

Condividi questa discussione:


Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione