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.
514 lines
17 KiB
514 lines
17 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 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;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|