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.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; 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 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.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) { insert_tm(ref sfdatagridDokspezifisch); } private void platzhalterImDokumentEinfügenToolStripMenuItem_Click(object sender, EventArgs e) { insert_tm(ref sfdatagridstandard); } } }