C2022-003-Change-Textboxes-to-RTF-3
This commit is contained in:
@@ -7,6 +7,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Volian.Base.Library;
|
||||
|
||||
namespace ctlXMLEditLib
|
||||
{
|
||||
@@ -16,16 +17,109 @@ namespace ctlXMLEditLib
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private string _RtfPrefix; // contains Font table and styles (bold/underline/italics) for rtb from step style
|
||||
public string RtfPrefixForSymbols
|
||||
{
|
||||
get
|
||||
{
|
||||
//B2020-100 RHM Use SelectionFont rather than the font from the format file.
|
||||
StringBuilder selectedRtfSB = new StringBuilder();
|
||||
AddFontTable(selectedRtfSB, FormatFont, true);
|
||||
_RtfPrefix = selectedRtfSB.ToString();
|
||||
return _RtfPrefix + @"\f1\fs" + 10 * 2 + " ";
|
||||
}
|
||||
}
|
||||
public void InsertSymbol( int symbcode)
|
||||
{
|
||||
int position = this.SelectionStart;
|
||||
string sym = string.Format(symbcode < 256 ? "\'{0:X2}" : @"\u{0}", symbcode);
|
||||
string RtfPrefixForSymbols = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 FreeMono; } {\f1\fnil\fcharset0 FreeMono; } } {\colortbl;\red255\green0\blue0;\red0\green0\blue255; } \viewkind4\uc1\pard\fs24 \f1\fs24 ";
|
||||
this.SelectedRtf = RtfPrefixForSymbols + sym + @"}";
|
||||
this.SelectedRtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033\uc1 }";
|
||||
this.Select(position, 0); this.SelectedRtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033\uc1 }";
|
||||
this.Select(position, 0);
|
||||
Select(position, -1);
|
||||
Select(position + 1, 0);
|
||||
}
|
||||
public void rchtxtBox_KeyDown(object sender,string RO_IDEN) // C2022-003 code used to prevent a symbol from being inserted into RO ID.
|
||||
{
|
||||
bool symFlg = false;
|
||||
|
||||
roRichTextBox o = (roRichTextBox)sender;
|
||||
if (o.Name == RO_IDEN)
|
||||
{
|
||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
string clpBrd = Clipboard.GetText();
|
||||
char[] chrAry = clpBrd.ToCharArray();
|
||||
foreach (int chr in chrAry)
|
||||
{
|
||||
if (chr > 166)
|
||||
{
|
||||
symFlg = true;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
symFlg = false;
|
||||
}
|
||||
}
|
||||
if (symFlg == true)
|
||||
{
|
||||
MessageBox.Show("Symbols are not allowed in the field. Clipbroad: '" + clpBrd + "'");
|
||||
Clipboard.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private static void AddFontTable(StringBuilder selectedRtfSB, Font myFont, bool isFixed)
|
||||
{
|
||||
StringBuilder sbbeg = new StringBuilder();
|
||||
StringBuilder sbend = new StringBuilder();
|
||||
if (myFont.Bold)
|
||||
{
|
||||
sbbeg.Append(@"\b");
|
||||
sbend.Append(@"\b0");
|
||||
}
|
||||
if (myFont.Underline)
|
||||
{
|
||||
sbbeg.Append(@"\ul");
|
||||
sbend.Insert(0, @"\ulnone");
|
||||
}
|
||||
if (myFont.Italic)
|
||||
{
|
||||
sbbeg.Append(@"\i");
|
||||
sbend.Insert(0, @"\i0");
|
||||
}
|
||||
selectedRtfSB.Append(@"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 " + myFont.FontFamily.Name + @";}");
|
||||
if (!isFixed)
|
||||
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 " + Volian.Base.Library.vlnFont.ProportionalSymbolFont + @";}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // C2017-036 get best available proportional font for symbols - B2025-039 add Blue for Colored Replace Words
|
||||
else
|
||||
selectedRtfSB.Append(@"{\f1\fnil\fcharset0 FreeMono;}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}"); // FreeMono is now used for the edit screen only. VESymbFix and Consolas are used for printing
|
||||
selectedRtfSB.Append("\r\n");
|
||||
// use styles to construct rtf commands to insert into next line (where \b, etc is)
|
||||
// B2015-134 Hanging Indent with Hard Returns was not being saved- removed \sl-240\slmult0
|
||||
selectedRtfSB.Append(@"\viewkind4\uc1\pard" + sbbeg.ToString() + @"\fs" + Convert.ToInt32(myFont.SizeInPoints * 2).ToString() + @" ");
|
||||
}
|
||||
private Font _FormatFont;
|
||||
public Font FormatFont
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_FormatFont == null)
|
||||
{
|
||||
Font formatFont;
|
||||
formatFont = Font;
|
||||
_FormatFont = formatFont;
|
||||
}
|
||||
|
||||
// We found that the characters in the Letter Gothic font do not all use the same spacing.
|
||||
// Also, the character spacing is even more different between screen resolutions.
|
||||
// But the Letter Gothic font will print just fine.
|
||||
// We also found that the Letter Gothic Tall font works just fine on the screen, the only difference
|
||||
// is that the characters are a little bit taller.
|
||||
// So we decided to use the Letter Gothic Tall font for the screen display any time that Letter Gothic is used.
|
||||
if (_FormatFont.Name.ToUpper().Equals("LETTER GOTHIC"))
|
||||
_FormatFont = new Font("Letter Gothic Tall", _FormatFont.Size, _FormatFont.Style);
|
||||
return _FormatFont;
|
||||
}
|
||||
set { _FormatFont = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user