[Mono-winforms-list] MaskedTextBox.GetCharFromPosition Method

AATDark AATDark at aol.com
Sun May 13 05:19:22 EDT 2007


Hi
I implemented a test programm which demonstrates the GetCharFromPosition
in TextBoxBase.cs  The GetCharFromPosition is running well and has the
nearly the same behavior as the MS Method.

But there is a small different: I think mono displays the font
differntly. 

Yours
Berni

> 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: GetPosiotnTestGUI.cs
Type: text/x-csharp
Size: 615 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-winforms-list/attachments/20070513/972c415b/attachment.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TextBoxBase.cs.diff
Type: text/x-patch
Size: 1523 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-winforms-list/attachments/20070513/972c415b/attachment-0001.bin 


More information about the Mono-winforms-list mailing list