You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OnDoc/Client/DocMgmt/SerienbriefBearbeitung.cs

297 lines
10 KiB

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);
}
}
}