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 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; 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(); } public SerienbriefBearbeitung(serienbrief sb) { InitializeComponent(); this.Style.TitleBar.BackColor = Theaming.Titelbar(); this.Style.TitleBar.ForeColor = Theaming.TitelFontColor(); this.sb = sb; } 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 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.RowHeight = 17; sfdatagridstandard.DataSource = StdFelder; 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); 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); 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 { 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) { var selectedItem = e.DataRow; var dataRow = (e.DataRow.RowData as DataRowView).Row; regelnr = Convert.ToInt32(dataRow[0].ToString()); regelbez = dataRow[1].ToString(); } 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 toolStripButton1_Click(object sender, EventArgs e) { UsedFelder.AcceptChanges(); 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(); this.Close(); } } }