Modify Combobox |
[Top] [Chapter] [Previous] [Next] |
With the previous code we can change the text in the editor quite easily. But we also want that the combo boxes are updated according to the text at the current cursor position.
The following sub procedure can be used to read font name and font size. If the attribute is not defined in the text the respective combo box will be cleared. Note: TextDynamic supports undefined attributes, they are important for the operation of paragraph styles. Only text which does not define a certain attribute will use that attribute as defined in attached paragraph style.
Public Sub ReadCurrentAttributes(ByVal MaybeCurrEditor As WPDynamic.WPDLLInt) ' We ignore the call if this is not the current editor! If MaybeCurrEditor Is WpdllInt1 Then ' There is no active editor If WpdllInt1 Is Nothing Then FontNameSel.SelectedIndex = -1 FontSizeSel.Text = "" FontNameSel.Enabled = False FontSizeSel.Enabled = False Else ' update the active editor FontNameSel.Enabled = True FontSizeSel.Enabled = True ' Get font name and size from active editor Dim ff As String If Not WpdllInt1.TextAttr.GetFontface(ff) Then FontNameSel.SelectedIndex = -1 Else FontNameSel.SelectedIndex = FontNameSel.Items.IndexOf(ff) End If Dim s As Single If Not WpdllInt1.TextAttr.GetFontSize(s) Then FontSizeSel.Text = "" Else FontSizeSel.Text = Convert.ToString(s) End If End If End If End Sub
But where should be call this procedure?
a) At the end of WordsMDIParent1_MdiChildActivate
Private Sub WordsMDIParent1_MdiChildActivate(..) ... ReadCurrentAttributes(WpdllInt1) End Sub
b) In the OnUpdateGUI event of the TextDynamic editor - in the child form add.
Private Sub WpdllInt1_OnUpdateGUI(ByVal Sender As System.Object, ByVal Editor As System.Int32, ByVal UpdateFlags As System.Int32, ByVal StateFlags As System.Int32, ByVal PageNr As System.Int32, ByVal PageCount As System.Int32, ByVal LineNr As System.Int32) Handles WpdllInt1.OnUpdateGUI WordsMDIParent1.ReadCurrentAttributes(WpdllInt1) End Sub
It is common that a word processor display the current position in the status bar. So we add some elements to the StatusStrip control on the main form. The property AutoSize should be off.
Now just three additional lines of code in the above event handler to update the statusbar
WordsMDIParent1.StatusStrip.Items(0).Text = Convert.ToString(PageNr) _ + "/" + Convert.ToString(PageCount) WordsMDIParent1.StatusStrip.Items(1).Text = Convert.ToString(LineNr)
|