Aw: Re: Aw: Re: [Newbies] TextMorph

Mark Volkmann mark at ociweb.com
Tue Nov 4 17:19:46 UTC 2008


I'm still learning about Morphic too. I tried to create what you are  
trying to do and that raised more questions. Here's what I have.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedGraphic.png
Type: image/png
Size: 8586 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/beginners/attachments/20081104/9fd59234/pastedGraphic-0001.png
-------------- next part --------------



The first TextMorph starts empty. I typed "xyz" into it. The second  
one just has the default contents of "abc".
Why does the text in the first one appear at the bottom instead of  
where the text appears in the second one?

When I click in one of the text fields, a dotted line appears just  
inside the border of the TextMorph to show that it has focus. When I  
press the tab key, focus doesn't move to the other one. How can I set  
that up?
How can I make the first TextMorph have the focus as soon as I start  
the application?

How can execute a block or send a message when the user presses the  
enter/return key while focus is in a TextMorph?

Here's my code so far ... a rudimentary start that I'll factor into  
additional methods once I understand how to get things working. I just  
have one method, initialize, in a class named MathQuiz. To run it I  
enter "MathQuiz new" in a workspace and do-it.

initialize
	| container textField |
	
	textField := TextFieldMorph new
		contents: '';
		extent: 40 at 30;
		yourself.

	container := Morph new.
	
	container
		cellInset: 10;
		layoutInset: 10;
		layoutPolicy: TableLayout new;
		listDirection: #leftToRight.
		
	container addMorphBack: (StringMorph contents: '8').
	container addMorphBack: (StringMorph contents: 'x').
	container addMorphBack: (StringMorph contents: '3').
	container addMorphBack: (StringMorph contents: '=').
	container addMorphBack: textField.
	container addMorphBack: (TextFieldMorph new extent: 40 at 30; yourself).

	container openInWindowLabeled: 'Math Quiz'

On Nov 4, 2008, at 10:14 AM, pascal.vollmer at nexgo.de wrote:

> Hi Mark,
>
> what you show is ok. But my problem is different.
>
> Imagine a child in front of a timestable application.
> She sees a question ("8 x 3 =") and there is another field where she  
> is supposed to type the answer (a TextMorph).
>
> The answer field is supposed to be empty except for a cursor  
> indicating that you may type your answer here.
> When typed, the figures are supposed to appear in a big font size.
>
> My problem: Until now I did not succeed to initialize a TextMorph in  
> a way that fulfills my requirements.
>
> Kind regards
> Pascal
>
>
> ----- Original Nachricht ----
> Von:     Mark Volkmann <mark at ociweb.com>
> An:      "A friendly place to get answers to even the most basic  
> questions about
> 	Squeak." <beginners at lists.squeakfoundation.org>
> Datum:   04.11.2008 12:59
> Betreff: Re: Aw: Re: [Newbies] TextMorph
>
>> I'm not familiar with the borderedPrototype or newContents: methods.
>> The following works for me without setting the extent. You should see
>> the string 'foo' displayed.
>>
>> t := TextMorph new
>> 	contents: 'foo';
>> 	position: 800 at 400;
>> 	openInWorld;
>> 	yourself
>>
>> On Nov 4, 2008, at 2:52 AM, pascal.vollmer at nexgo.de wrote:
>>
>>> Hi Mark,
>>>
>>> Thanks for your advice. But the behavior I experience seems not to
>>> depend on extent:.
>>> Let me show an example:
>>>
>>> 1.) a := TextMorph borderedPrototype. a openInWorld.
>>> 2.) b := TextMorph borderedPrototype. b newContents: '';  
>>> openInWorld.
>>>
>>> 1.) shows a text 'abc' with big font. When getting focus you will
>>> see a big cursor. You may start to change it.
>>> 2.) shows nothing. When getting focus you will see a small cursor.
>>> And when you start to change it you will see small font text.
>>>
>>> This does not change when you add b extent: 100 at 100.
>>>
>>> There is an additional observation. If you take code snippet 1.) and
>>> edit it you will loose vertical size of cursor and text when you
>>> walk from 1 character to 0 character and 1 character again. But pay
>>> attention: this is true for character deletion with the Del-key. It
>>> is not true for the Backspace-key.
>>>
>>> If anyone can give me a clue on this I would be grateful. You may
>>> find my TimesTable app on SqueakSource.
>>>
>>> Kind regards
>>> Pascal
>>>
>>>
>>>
>>> ----- Original Nachricht ----
>>> Von:     Mark Volkmann <mark at ociweb.com>
>>> An:      "A friendly place to get answers to even the most basic
>>> questions about
>>> 	Squeak." <beginners at lists.squeakfoundation.org>
>>> Datum:   04.11.2008 00:00
>>> Betreff: Re: [Newbies] TextMorph
>>>
>>>> On Nov 3, 2008, at 4:51 PM, pascal.vollmer at nexgo.de wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> I write a times table application for children: a question, an
>>>>> equals sign, an answer. For the answer field I would like to see a
>>>>> TextMorph. It should be empty, prepared for big size figures and
>>>>> with a big size cursor waiting for input.
>>>>>
>>>>> I tested TextMorph>>borderedPrototype the contents of which is
>>>>> initialized to 'abc'. Now, when I change 'abc' to an empty  
>>>>> string...
>>>>> cursor size is reduced and the first figure that is typed by the
>>>>> user will be small size.
>>>>>
>>>>> Why this different behavior?
>>>>
>>>>
>>>> I think the issue is that if you want the TextMorph to be larger  
>>>> than
>>>> the text inside it (in your case none), you have to set its extent.
>>>> Here's some code that works for me. Note how I set the extent  
>>>> height
>>>> of "textField" based on the font size of the StringMorph. I set the
>>>> extent width to a fixed value of 100 pixels.
>>>>
>>>> 	spaceBetweenMorphs := 10.
>>>> 	spaceInsideContainer := 10.
>>>> 	
>>>> 	container := Morph new.
>>>> 	container
>>>> 		layoutPolicy: TableLayout new;
>>>> 		listDirection: #leftToRight;
>>>> 		hResizing: #shrinkWrap;
>>>> 		vResizing: #shrinkWrap;
>>>> 		layoutInset: spaceInsideContainer;
>>>> 		cellInset: spaceBetweenMorphs;
>>>> 		width: 200.
>>>>
>>>> 	label := StringMorph contents: 'I''m a label.'.
>>>> 	font := label font.
>>>> 	margin := 4.
>>>> 	height := font lineGrid + (margin * 2).
>>>> 	container addMorphBack: label.
>>>> 	
>>>> 	textField := TextFieldMorph new.
>>>> 	textField extent: 100 at height. "text doesn't display if  
>>>> insufficient
>>>> height"
>>>> 	container addMorphBack: textField.
>>>>
>>>> ---
>>>> Mark Volkmann
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Beginners mailing list
>>>> Beginners at lists.squeakfoundation.org
>>>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>>>
>>>
>>> Pascal Vollmer
>>> Email: pascal.vollmer at ieee.org
>>>
>>> Jetzt komfortabel bei Arcor-Digital TV einsteigen: Mehr Happy Ends,
>>> mehr Herzschmerz, mehr Fernsehen! Erleben Sie 50 digitale TV
>>> Programme und optional 60 Pay TV Sender, einen elektronischen
>>> Programmf?hrer mit Movie Star Bewertungen von TV Movie. Au?erdem,
>>> aktuelle Filmhits und spannende Dokus in der Arcor-Videothek. Infos
>>> unter www.arcor.de/tv
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners at lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
>>
>> ---
>> Mark Volkmann
>>
>>
>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
>
> Pascal Vollmer
> Email: pascal.vollmer at ieee.org
>
> Jetzt komfortabel bei Arcor-Digital TV einsteigen: Mehr Happy Ends,  
> mehr Herzschmerz, mehr Fernsehen! Erleben Sie 50 digitale TV  
> Programme und optional 60 Pay TV Sender, einen elektronischen  
> Programmf?hrer mit Movie Star Bewertungen von TV Movie. Au?erdem,  
> aktuelle Filmhits und spannende Dokus in der Arcor-Videothek. Infos  
> unter www.arcor.de/tv
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners


---
Mark Volkmann






More information about the Beginners mailing list