[Mono-winforms-list] MaskedTextBox.GetCharFromPosition Method

AATDark aatdark at aol.com
Tue May 8 12:33:25 EDT 2007


Hi

Attention: THIS IS NOT FOR COMMIT!! 

As Attachment the Testdiff file ( working fine on Windows XP .NET SP2 but
not on mono cygwin)
And the current GetCharFromPoint in TextBoxBase.diff

Hope this helps

Yours
Berni
-----Ursprüngliche Nachricht-----
Von: Jackson Harper [mailto:jackson at ximian.com] 
Gesendet: Montag, 7. Mai 2007 17:55
An: aatdark at aol.com
Cc: mono-winforms-list at lists.ximian.com
Betreff: Re: [Mono-winforms-list] MaskedTextBox.GetCharFromPosition Method

On Sat, 2007-05-05 at 16:44 -0400, aatdark at aol.com wrote:
> hi
> I expirienced a major problem:
> 
> I run my function againt the one from MS and itereatet
> the point.X coordinate from 0 to 90
> 
> 
> It seems to be that MS uses an other font or such thing. I testet this
> and the only difference is the GdiCharSet=1 in mono

Yes, fonts will be different between different machines.  You can't rely
on the user having the same size font on every machine.  What you should
do, is explicitly set the font size for the textbox in your tests.


Do you mind sending your tests to the list?  It's hard for me to tell
exactly what is going on from the test output, without seeing the tests.

Jackson


> Problem: Look at the 17A and 12A.
> In my code the A startet at the X coordinate 17 and at MS's code it
> startet at 12
> 
> text = "XXABCQEWRY";
> Mono
>     0 X
>     1 X    2 X    3 X    4 X    5 X
>     6 X    7 X    8 X    9 X    10 X
>     11 X    12 X    13 X    14 X    15 X
>     16 X    17 A    18 A    19 A    20 A
>     21 A    22 A    23 A    24 A    25 B
>     26 B    27 B    28 B    29 B    30 B
>     31 B    32 C    33 C    34 C    35 C
>     36 C    37 C    38 C    39 C    40 Q
>     41 Q    42 Q    43 Q    44 Q    45 Q
>     46 Q    47 Q    48 E    49 E    50 E
>     51 E    52 E    53 E    54 E    55 E
>     56 W    57 W    58 W    59 W    60 W
>     61 W    62 W    63 W    64 W    65 W
>     66 R    67 R    68 R    69 R    70 R
>     71 R    72 R    73 R    74 Y    75 Y
>     76 Y    77 Y    78 Y    79 Y    80 Y
>     81 Y    82 Y    83 Y    84 Y    85 Y
>     86 Y    87 Y    88 Y    89 Y
> 
> 
> 
> 
> 
> MS
>     0 X
>     1 X    2 X    3 X    4 X    5 X
>     6 X    7 X    8 X    9 X    10 X
>     11 X    12 A    13 A    14 A    15 A
>     16 A    17 A    18 A    19 B    20 B
>     21 B    22 B    23 B    24 B    25 B
>     26 C    27 C    28 C    29 C    30 C
>     31 C    32 C    33 Q    34 Q    35 Q
>     36 Q    37 Q    38 Q    39 Q    40 E
>     41 E    42 E    43 E    44 E    45 E
>     46 E    47 E    48 W    49 W    50 W
>     51 W    52 W    53 W    54 W    55 W
>     56 W    57 R    58 R    59 R    60 R
>     61 R    62 R    63 R    64 R    65 R
>     66 Y    67 Y    68 Y    69 Y    70 Y
>     71 Y    72 Y    73 Y    74 Y    75 Y
>     76 Y    77 Y    78 Y    79 Y    80 Y
>     81 Y    82 Y    83 Y    84 Y    85 Y
>     86 Y    87 Y    88 Y    89 Y
> 
> 
> I used the following code
> LineTag tag = document.FindTag(p.X,p.Y,out index,false);
> return tag.Text()[lenght-1]
> 
> Does anyone know an workaround ?
> 
> Yours,
> Berni
> 
> -----Original Message-----
> From: Jackson Harper <jackson at ximian.com>
> To: aatdark at aol.com
> Cc: mono-winforms-list at lists.ximian.com
> Sent: Sat, 5 May 2007 8:28 pm
> Subject: Re: [Mono-winforms-list] MaskedTextBox.GetCharFromPosition
> Method
> 
> 
> 
> TextControl::FindTag takes pixel coordinates and returns a line tag
> 
> aswell as a char index.
> 
> 
> 
> 
> 
> On Sat, 2007-05-05 at 08:45 -0400, aatdark at aol.com wrote:
> 
> > Hi
> 
> > I have written lots of nunit tests for the Function and they are all
> 
> > runnning well on MS .NET 2.0
> 
> > 
> 
> > No i'm proceding with step 2.
> 
> > 
> 
> > for now i try to get the correct line with
> 
> > Line line = document.GetLineByPixel(p.Y,false);
> 
> > 
> 
> > 
> 
> > but the problem is: How can i get the char index from the position in
> 
> > pixels?
> 
> > I can only use the 
> 
> > LineTagToCharIndex
> 
> > 
> 
> > 
> 
> > 
> 
> > if i know the char index.
> 
> > 
> 
> > Because there could be different fonts. The only solution seems to be
> 
> > to call the Grapics.MeasureText method for each letter.
> 
> > 
> 
> > for example if the Text is:
> 
> > HiTestText
> 
> > I have to measure
> 
> > H
> 
> > Hi
> 
> > HiT
> 
> > HiTe
> 
> > ...
> 
> > 
> 
> > But this seems to be terrible slow?
> 
> > Anyone a better solution for this ?
> 
> > 
> 
> > Yours,
> 
> > Berni
> 
> > 
> 
> > -----Original Message-----
> 
> > From: Jackson Harper <jackson at ximian.com>
> 
> > To: aatdark at aol.com
> 
> > Cc: mono-winforms-list at lists.ximian.com
> 
> > Sent: Thu, 3 May 2007 8:43 pm
> 
> > Subject: Re: [Mono-winforms-list] MaskedTextBox.GetCharFromPosition
> 
> > Method
> 
> > 
> 
> > On Thu, 2007-05-03 at 13:58 -0400, aatdark at aol.com wrote:
> 
> > 
> 
> > > hi
> 
> > 
> 
> > > concerning 1.)
> 
> > 
> 
> > > Is there already an excisiting nunit file forthe MaskedTextBox ? I
> 
> > 
> 
> > > can't find one
> 
> > 
> 
> > > 
> 
> > 
> 
> > 
> 
> > 
> 
> > You should probably start by unit testing TextBoxBase, I would just add
> 
> > 
> 
> > your tests to TextBoxTest at first, then we can add some more to
> 
> > 
> 
> > MaskedTextBox later.  But it is best to test from the bottom up.  Since
> 
> > 
> 
> > you will have to implement this feature from the bottom up.
> 
> > 
> 
> > 
> 
> > 
> 
> > Cheers,
> 
> > 
> 
> > Jackson
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > yours
> 
> > 
> 
> > > berni
> 
> > 
> 
> > > 
> 
> > 
> 
> > > -----Original Message-----
> 
> > 
> 
> > > From: Jackson Harper <jackson at ximian.com>
> 
> > 
> 
> > > To: aatdark at aol.com
> 
> > 
> 
> > > Cc: mono-winforms-list at lists.ximian.com
> 
> > 
> 
> > > Sent: Thu, 3 May 2007 7:17 pm
> 
> > 
> 
> > > Subject: Re: [Mono-winforms-list] MaskedTextBox.GetCharFromPosition
> 
> > 
> 
> > > Method
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > These methods just need to be implemented in the base TextBoxBase
class.
> 
> > 
> 
> > > 
> 
> > 
> 
> > > All you should need to do is:
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 1.  Write lots of unit tests
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 2.  Implement using TextControl::LineTagToCharIndex
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 3.  Remove the notyet ifdef in MaskedTextBox
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 4.  Send your patches to the list
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > Please note, don't proceed to step 2 before completing step 1.
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > Good luck!
> 
> > 
> 
> > > 
> 
> > 
> 
> > > Jackson
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > On Thu, 2007-05-03 at 13:33 -0400, aatdark at aol.com wrote:
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > Hi
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > Is anyone working at the MaskedTextBox.GetCharFromPosition Method
at
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > the moment?
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > I think implementing this will affect TextControl.cs class Document
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > too.
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > I'm going to try it if nobody is on it 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > yours
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > berni
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > >
______________________________________________________________________
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > AOL now offers free email to everyone. Find out more about what's
free
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > from AOL at AOL.com.
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > _______________________________________________
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com
> 
> > 
> 
> > > 
> 
> > 
> 
> > > > http://lists.ximian.com/mailman/listinfo/mono-winforms-list
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > ______________________________________________________________________
> 
> > 
> 
> > > AOL now offers free email to everyone. Find out more about what's free
> 
> > 
> 
> > > from AOL at AOL.com.
> 
> > 
> 
> > > 
> 
> > 
> 
> > > _______________________________________________
> 
> > 
> 
> > > Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com
> 
> > 
> 
> > > http://lists.ximian.com/mailman/listinfo/mono-winforms-list
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > ______________________________________________________________________
> 
> > AOL now offers free email to everyone. Find out more about what's free
> 
> > from AOL at AOL.com.
> 
> > 
> 
> > _______________________________________________
> 
> > Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com
> 
> > http://lists.ximian.com/mailman/listinfo/mono-winforms-list
> 
> 
> 
> 
> ______________________________________________________________________
> AOL now offers free email to everyone. Find out more about what's free
> from AOL at AOL.com.
> 
> _______________________________________________
> Mono-winforms-list maillist  -  Mono-winforms-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-winforms-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TextBoxTest.cs.diff
Type: application/octet-stream
Size: 2316 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-winforms-list/attachments/20070508/73cf12af/attachment-0002.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TextBoxBase.cs.diff
Type: application/octet-stream
Size: 1530 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-winforms-list/attachments/20070508/73cf12af/attachment-0003.obj 


More information about the Mono-winforms-list mailing list