pietro.versari Pubblicato: 11 Settembre 2007 Segnalazione Share Pubblicato: 11 Settembre 2007 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? Link to comment Condividi su altri siti More sharing options...
dokkis Pubblicato: 11 Settembre 2007 Segnalazione Share Pubblicato: 11 Settembre 2007 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 Link to comment Condividi su altri siti More sharing options...
pietro.versari Pubblicato: 11 Settembre 2007 Autore Segnalazione Share Pubblicato: 11 Settembre 2007 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 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..) Link to comment Condividi su altri siti More sharing options...
dokkis Pubblicato: 11 Settembre 2007 Segnalazione Share Pubblicato: 11 Settembre 2007 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 ma xkè nn risolve tt i tuoi prb? cosa c'è ancora ke nn va? Link to comment Condividi su altri siti More sharing options...
memoryn70 Pubblicato: 12 Settembre 2007 Segnalazione Share Pubblicato: 12 Settembre 2007 di niente ma xkè nn risolve tt i tuoi prb? cosa c'è ancora ke nn va? ho trovato questo x caso se vi può aiutare:: http://www.forum.nokia.com/document/Cpp_De...itors_API4.html Link to comment Condividi su altri siti More sharing options...
pietro.versari Pubblicato: 12 Settembre 2007 Autore Segnalazione Share Pubblicato: 12 Settembre 2007 (modificato) di niente 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.. ho trovato questo x caso se vi può aiutare::http://www.forum.nokia.com/document/Cpp_De...itors_API4.html Grazie mille dell'informazione. proprio grazie a quella pagina (e all'aiuto di dokkis!) ero riuscito a sistemare il problema.. PS: ho trovato questa pagina molto interessante, ora ci lavoro un po su, e quando avro trovato una soluzione la scrivero per i posteri! (e questa..) Modificato 12 Settembre 2007 da pietro.versari Link to comment Condividi su altri siti More sharing options...
pietro.versari Pubblicato: 13 Settembre 2007 Autore Segnalazione Share Pubblicato: 13 Settembre 2007 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 Link to comment Condividi su altri siti More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Accedi Ora