using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.DesignerServices; using System.Security.RightsManagement; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using BroadcastListener.Classes; using System.Xml; using Model; using OnDoc.Helper; using OnDoc.Klassen; using OnDoc.UIControls; using Syncfusion.Windows.Forms.Tools; using Syncfusion.WinForms.Controls; using Syncfusion.WinForms.DataGrid; using Syncfusion.WinForms.DataGrid.Interactivity; using Windows.Devices.HumanInterfaceDevice; using Windows.Media.Ocr; using Windows.UI.Xaml.Controls; using BroadcastListener.Classes; using BroadcastListener.Interfaces; using static BroadcastListener.Classes.Factory; using System.Threading; namespace OnDoc.DocMgmt { public partial class SerienbriefBearbeitung : SfForm { DataTable StdFelder = new DataTable(); DataTable IDVFelder = new DataTable(); DataTable UsedFelder = new DataTable(); int dokumenttypnr = 0; public serienbrief sb = new serienbrief(); private Microsoft.Office.Interop.Word.Application word; private Microsoft.Office.Interop.Word.Document doc; public SerienbriefBearbeitung() { InitializeComponent(); this.Style.TitleBar.BackColor = Theaming.Titelbar(); this.Style.TitleBar.ForeColor = Theaming.TitelFontColor(); this.Style.ShadowOpacity = Theaming.ShadowOpacity; this.Style.InactiveShadowOpacity = Theaming.InactivShadowOpacity; } public SerienbriefBearbeitung(serienbrief sb) { InitializeComponent(); this.Style.TitleBar.BackColor = Theaming.Titelbar(); this.Style.TitleBar.ForeColor = Theaming.TitelFontColor(); this.Style.ShadowOpacity = Theaming.ShadowOpacity; this.Style.InactiveShadowOpacity = Theaming.InactivShadowOpacity; this.sb = sb; } public void Update_Preview(string document) { this.docPreview1.Show_Doc(document); } private DataTable get_idvwerte() { int i; var dt = new DataTable(); dt.Columns.Add("Feldname"); dt.Columns.Add("Wert"); var loopTo = sb.dsempfaenger.Tables[0].Columns.Count - 1; for (i = 0; i <= loopTo; i++) { switch (sb.dsempfaenger.Tables[0].Columns[i].Caption.ToUpper()) { case "PARTNERNR": case "KURZBEZEICHNUNG": case "ANREDE": case "NAME": case "VORNAME": case "STRASSE": case "PLZ": case "ORT": case "ZUSTELLADRESSE": case "BRIEFANREDE1": case "BRIEFANREDE2": case "STATUS": case "FEHLERCD": case "BLKUNDE": case "DOKUMENT_GEDRUCKT": case "AKTIV": case "DOKUMENTID": case "DOKUMENTIDBDR": case "ERSTELLER": case "FEHLERCODE": case "DRUCKJOBID": { break; } default: { System.Data.DataRow myRow; myRow = dt.NewRow(); myRow[0] = sb.dsempfaenger.Tables[0].Columns[i].Caption.ToString(); myRow[1] = ""; dt.Rows.Add(myRow); break; } } } return dt; } private void format_standardgrid() { sfdatagridstandard.RowHeight = 17; sfdatagridstandard.Columns[0].Width = sfdatagridstandard.Width * 0.1; sfdatagridstandard.Columns[1].Width = sfdatagridstandard.Width * 0.85; } private void SerienbriefBearbeitung_Load(object sender, EventArgs e) { StdFelder = get_vorlagenfelder(sb.dokumenttypnr, 0); this.TopMost = true; foreach (System.Data.DataRow dr in StdFelder.Rows) { dr[1] = dr[1].ToString().Replace(System.Environment.NewLine, " "); } StdFelder.AcceptChanges(); sfdatagridstandard.DataSource = StdFelder; foreach (System.Data.DataRow dr in sb.dsempfaenger.Tables[0].Rows) { tscomboboxbp.Items.Add(dr[0].ToString() + " " + dr[1].ToString()); } if (tscomboboxbp.Items.Count > 0) { tscomboboxbp.SelectedIndex = 0; } format_standardgrid(); IDVFelder = get_idvwerte(); //foreach (System.Data.DataRow dr in IDVFelder.Rows) //{ // dr[1] = dr[1].ToString().Replace(System.Environment.NewLine, " "); //} //IDVFelder.AcceptChanges(); sfdatagridDokspezifisch.DataSource = IDVFelder; sfdatagridDokspezifisch.RowHeight = 17; init_used_felder(true); foreach (System.Data.DataRow dr in UsedFelder.Rows) { dr[1] = dr[1].ToString().Replace(System.Environment.NewLine, " "); } sfdatagridUsed.RowHeight = 17; sfdatagridUsed.DataSource = UsedFelder; } private DataTable get_vorlagenfelder(int dokumenttypnr, int type) { Database.DB db = new Database.DB(AppParams.connectionstring); db.clear_parameter(); db.add_parameter("@dokumenttypnr", sb.dokumenttypnr.ToString()); db.add_parameter("@type", type.ToString()); db.Get_Tabledata("sp_edex_sb_get_standardvorlagenfelder", true, false); return db.dsdaten.Tables[0]; } public void unload_document() { doc.Close(SaveChanges: false); doc = null; word.Quit(SaveChanges: false); } public void load_document(Boolean word_visible ) { word = new Microsoft.Office.Interop.Word.Application(); doc = new Microsoft.Office.Interop.Word.Document(); word.Documents.Open(sb.filename); Thread.Sleep(1000); doc = word.ActiveDocument; word.Visible = word_visible; word.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMaximize; } private void get_usedfelder(ref System.Data.DataTable list) { list = get_vorlagenfelder(sb.dokumenttypnr, 1); try { if (sb.dsempfaenger.Tables["UsedFelder"].Rows.Count > 0) list = sb.dsempfaenger.Tables["UsedFelder"].Copy(); } catch { } int i; string s; bool dodelete = false; foreach (System.Data.DataRow row in list.Rows) { dodelete = false; if (row["Feldname"] != "") { // ContentControls try { if (row["Feldname"].ToString().Substring(0, 3) == "cc_") { s = row["Feldname"].ToString(); ; } else { s = word.ActiveDocument.FormFields[row["feldname"].ToString()].Name.ToString(); } } catch { dodelete = true; } } if (row["Beginntextmarke"] != "") { try { if (row["Beginntextmarke"].ToString() == "TMSB_0") { string A = ""; } s = word.ActiveDocument.Bookmarks[row["beginntextmarke"].ToString()].Name.ToString(); } catch { dodelete = true; } } if (row["endetextmarke"] != "") { try { s = word.ActiveDocument.Bookmarks[row["endetextmarke"].ToString()].Name.ToString(); } catch { dodelete = true; } } if (dodelete) row.Delete(); } list.AcceptChanges(); } public DataTable init_used_felder(Boolean word_visible) { load_document(word_visible); get_usedfelder(ref UsedFelder); if (word_visible==false) { unload_document(); } return UsedFelder; } public bool grid_empty(ref SfDataGrid grid) { if (grid.RowCount > 0) { return false; } else return true; } private bool Row_Selected(ref SfDataGrid grid) { if (grid_empty(ref grid) == true) { return false; } var records = grid.View.GetSelectedRecords(); if (records.Count < 1) { return false; } return true; } public void cursor_positionieren(ref SfDataGrid grid) { if (!Row_Selected(ref grid)) { return; } var records = grid.View.GetSelectedRecords(); foreach (var record in records) { var data = record as DataRowView; if (data["Feldname"].ToString() != "") { word.Selection.GoTo(What: Microsoft.Office.Interop.Word.WdGoToItem.wdGoToField, Name: data["Feldname"].ToString()); } if (data["beginntextmarke"].ToString() != "") { word.Selection.GoTo(What: Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark, Name: data["beginntextmarke"].ToString()); } if (data["endetextmarke"].ToString() != "") { } } } public void insert_tm(ref System.Data.DataRow data) { //if (!Row_Selected(ref grid)) { return; } //var records = grid.View.GetSelectedRecords(); //foreach (var record in records) //{ // var data = record as DataRowView; if (data["Feldname"].ToString() != "") { word.Selection.FormFields.Add(Range: word.Selection.Range, Type: Microsoft.Office.Interop.Word.WdFieldType.wdFieldFormTextInput); word.Selection.PreviousField().Select(); word.Selection.FormFields[1].Name = data["Feldname"].ToString(); } if (data["Beginntextmarke"].ToString() != "") { word.Selection.Bookmarks.Add(data["beginntextmarke"].ToString()); } } public void cursorImDokumentPositionierenToolStripMenuItem_Click(object sender, EventArgs e) { cursor_positionieren(ref sfdatagridUsed); } private void platzhalterImDokumentEinfügenToolStripMenuItem1_Click(object sender, EventArgs e) { int i; string s; int sbtmindex = 0; var loopTo = this.UsedFelder.Rows.Count - 1; for (i = 0; i <= loopTo; i++) { try { if (Strings.Left(this.UsedFelder.Rows[i]["beginntextmarke"].ToString(), 4) == "TMSB") { sbtmindex = sbtmindex + 1; } } catch { } } s = "TMSB_" + sbtmindex.ToString(); System.Data.DataRow row; row = this.UsedFelder.NewRow(); row[0] = 0; row[1] = regelbez; row[2] = ""; row[3] = s; row[4] = ""; this.UsedFelder.Rows.Add(row); // insert_tm(ref sfdatagridDokspezifisch); insert_tm(ref row); } private void platzhalterImDokumentEinfügenToolStripMenuItem_Click(object sender, EventArgs e) { int i; string s; int sbtmindex = 0; var loopTo = this.UsedFelder.Rows.Count - 1; for (i = 0; i <= loopTo; i++) { try { if (Strings.Left(this.UsedFelder.Rows[i]["beginntextmarke"].ToString(), 4) == "TMSB") { sbtmindex = sbtmindex + 1; } } catch { } } s = "TMSB_" + sbtmindex.ToString(); System.Data.DataRow row; row = this.UsedFelder.NewRow(); row[0] = regelnr.ToString(); row[1] = regelbez; row[2] = ""; row[3] = s; row[4] = ""; this.UsedFelder.Rows.Add(row); //insert_tm(ref sfdatagridstandard); insert_tm(ref row); } int regelnr = 0; string regelbez = ""; private void sfdatagridstandard_CellClick(object sender, Syncfusion.WinForms.DataGrid.Events.CellClickEventArgs e) { try { var selectedItem = e.DataRow; var dataRow = (e.DataRow.RowData as DataRowView).Row; regelnr = Convert.ToInt32(dataRow[0].ToString()); regelbez = dataRow[1].ToString(); } catch { } } private void sfdatagridDokspezifisch_CellClick(object sender, Syncfusion.WinForms.DataGrid.Events.CellClickEventArgs e) { var selectedItem = e.DataRow; var dataRow = (e.DataRow.RowData as DataRowView).Row; regelnr = 0; regelbez = dataRow[0].ToString(); } private void update_Used_Felder() { UsedFelder.AcceptChanges(); if (sb.dsempfaenger.Tables["UsedFelder"] == null) { sb.dsempfaenger.Tables.Add("UsedFelder"); foreach (System.Data.DataColumn dc in UsedFelder.Columns) { sb.dsempfaenger.Tables["UsedFelder"].Columns.Add(dc.ColumnName); } } sb.dsempfaenger.Tables["UsedFelder"].Rows.Clear(); for (int i = 0; i < UsedFelder.Rows.Count; i++) { sb.dsempfaenger.Tables["UsedFelder"].ImportRow(UsedFelder.Rows[i]); } sb.dsempfaenger.Tables["UsedFelder"].AcceptChanges(); } private void toolStripButton1_Click(object sender, EventArgs e) { update_Used_Felder(); Broadcaster().Broadcast("BtnSBVorschauSave", new SenderInfo("Speichern", "Speichern","")); this.Close(); } private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e) { } private void txtfilter_KeyDown(object sender, KeyEventArgs e) { DataView dv = new DataView(StdFelder); try { dv.RowFilter = "Bezeichnung like '%" + txtfilter.Text.ToString() + "%'"; } catch { dv.RowFilter = "Bezeichnung like '%'"; } sfdatagridstandard.DataSource = null; sfdatagridstandard.DataSource = dv; format_standardgrid(); } private void toolStripButton2_Click(object sender, EventArgs e) { update_Used_Felder(); string FileName = word.ActiveDocument.FullName; word.ActiveDocument.Save(); word.ActiveDocument.SaveAs2(word.ActiveDocument.FullName + ".tmp"); word.ActiveDocument.Close(); Thread.Sleep(AppParams.OfficeSpleep1); word.Documents.Open(FileName); this.docPreview1.Visible = true; this.Width = groupBox2.Width * 3; Broadcaster().Broadcast("BtnSBVorschau", new SenderInfo("Serienbriefbearbeitung", tscomboboxbp.Text, FileName)); } private void toolStripButton3_Click(object sender, EventArgs e) { docPreview1.Visible = false; this.Width = groupBox2.Width + 10; return; } private void SerienbriefBearbeitung_ResizeEnd(object sender, EventArgs e) { } private void SerienbriefBearbeitung_Resize(object sender, EventArgs e) { if (this.docPreview1.Visible == false) { this.groupBox2.Dock = DockStyle.Fill; this.sfdatagridDokspezifisch.Width = groupBox2.Width - 10; this.sfdatagridstandard.Width = groupBox2.Width - 10; this.sfdatagridUsed.Width = groupBox2.Width - 10; } else { this.groupBox2.Dock = DockStyle.Left; } } } }