public override IEnumerable <Conditional <IRenderCommand> > Flatten(FlattenContext context) { foreach (var location in Location.Flatten(context)) { foreach (var alignment in Alignment) { foreach (var rotation in Rotation) { var command = new RenderText( location.Value, alignment.Value, TextRuns) { Rotation = rotation.Value, }; var conditions = ConditionTreeBuilder.And(new[] { location.Conditions, alignment.Conditions, rotation.Conditions, }); yield return(new Conditional <IRenderCommand>(command, conditions)); } } } }
private void Window_Loaded(object sender, RoutedEventArgs e) { C1PrintDocument doc = new C1PrintDocument(); RenderText title = new RenderText("Auto-sized tables"); title.Style.FontSize = 18; title.Style.FontBold = true; title.Style.Spacing.All = "5mm"; title.Style.TextAlignHorz = AlignHorzEnum.Center; doc.Body.Children.Add(title); // add simple autosized table: doc.Body.Children.Add(MakeTable_Simple()); // prepare data source: object bookList = MakeBookList(); // add a bit more interesting data bound table: var rt = MakeTable_TitlePriceStock(bookList); rt.Style.Spacing.Top = "5mm"; doc.Body.Children.Add(rt); // show the document c1DocumentViewer1.Document = doc.FixedDocumentSequence; }
public void Destroy() { RenderText?.Destroy(); RenderText = null; RenderCaret?.Destroy(); RenderCaret = null; }
private void button1_Click(object sender, EventArgs e) { // build sample list of customers List <Customer> customers = new List <Customer>(); for (int i = 0; i < 100; i++) { customers.Add(new Customer(i + 1, "Customer " + (i + 1).ToString())); } doc.Clear(); doc.Style.Font = new Font("Verdana", 16); // generate document doc.Body.Children.Add(new RenderText("List of Customer objects")); doc.Body.Children.Add(new RenderEmpty("5mm")); // empty space after title // this object will be repeated for each element in the customers list RenderText rt = new RenderText(); rt.Text = "Id: [Fields!Id.Value]\rName: [Fields!Name.Value]"; rt.Style.Borders.All = LineDef.DefaultBold; rt.CanSplitVert = false; // bind object with customers list rt.DataBinding.DataSource = customers; doc.Body.Children.Add(rt); doc.Generate(); }
private void RemoveEntity(int id, bool isRemove = true) { if (uis.ContainsKey(id)) { Entity e = uis[id]; if (World.EntityManager.HasComponent <Childrens>(e)) { Childrens childrens = World.EntityManager.GetComponentData <Childrens>(e); childrens.DestroyEntities(World.EntityManager); } if (World.EntityManager.HasComponent <RenderText>(e)) { RenderText text = World.EntityManager.GetComponentData <RenderText>(e); text.DestroyLetters(World.EntityManager); } if (World.EntityManager.HasComponent <OutlineLink>(e)) { var outline = World.EntityManager.GetComponentData <OutlineLink>(e); World.EntityManager.DestroyEntity(outline.outline); } World.EntityManager.DestroyEntity(e); if (isRemove) { uis.Remove(id); } } }
private void Window_Loaded(object sender, RoutedEventArgs e) { C1PrintDocument doc = new C1PrintDocument(); #if plain doc.Body.Children.Add(new C1.C1Preview.RenderText("Hello, World!")); #else doc.Body.Children.Clear(); RenderText rt = new RenderText("Hello, World!"); rt.X = "2in"; rt.Y = "3in"; rt.Width = "4in"; rt.Height = "3in"; rt.Style.Borders.All = LineDef.Default; rt.Style.FontName = "Arial"; rt.Style.FontSize = 14; rt.Style.TextColor = Colors.Red; rt.Style.BackColor = Colors.PowderBlue; rt.Style.TextAlignHorz = AlignHorzEnum.Center; rt.Style.TextAlignVert = AlignVertEnum.Center; doc.Body.Children.Add(rt); #endif c1DocumentViewer1.FitToWidth(); c1DocumentViewer1.Document = doc.FixedDocumentSequence; }
private void button3_Click(object sender, EventArgs e) { doc.Clear(); doc.Style.Font = new Font("Verdana", 16); // define data schema DataSource ds = CreateDemoDataSource(); DataSet dsCities = new DataSet(ds, "select * from Cities"); doc.DataSchema.DataSources.Add(ds); doc.DataSchema.DataSets.Add(dsCities); // title of document RenderText rt = new RenderText(); rt.Text = string.Format("ConnectString = {0}\rCommandText={1}", ds.ConnectionProperties.ConnectString, dsCities.Query.CommandText); rt.Style.BackColor = Color.LightBlue; rt.Style.Borders.All = new LineDef("1mm", Color.Blue); rt.Style.Spacing.Bottom = "1cm"; doc.Body.Children.Add(rt); rt = new RenderText(); rt.DataBinding.DataSource = dsCities; rt.Text = "Id = [Fields!ID.Value] Name = [Fields!City.Value]"; rt.Style.Borders.Bottom = LineDef.Default; doc.Body.Children.Add(rt); doc.Generate(); }
private void Form1_Load(object sender, EventArgs e) { // make a demo C1PrintDocument; a "real" document can be loaded // via the File Open button. C1PrintDocument doc = new C1PrintDocument(); doc.PageLayout.PageHeader = new RenderText("Page [PageNo] of [PageCount]"); doc.PageLayout.PageHeader.Style.TextAlignHorz = AlignHorzEnum.Right; doc.PageLayout.PageHeader.Style.TextAlignVert = AlignVertEnum.Top; doc.PageLayout.PageHeader.Height = "1cm"; RenderText title = new RenderText("This is just a sample; load any C1PrintDocument from a C1D file"); title.Style.Font = new Font("Arial", 16); title.Style.TextAlignHorz = AlignHorzEnum.Center; title.Style.Padding.All = "5mm"; doc.Body.Children.Add(title); RenderTable rt = new RenderTable(); rt.Style.GridLines.All = LineDef.Default; for (int row = 0; row < 100; ++row) { for (int col = 0; col < 4; ++col) { rt.Cells[row, col].Text = string.Format("cell ({0},{1})", row, col); } } doc.Body.Children.Add(rt); c1PrintPreviewControl1.Document = doc; }
protected override void OnLoad(EventArgs e) { renderText = new RenderText("Hello World\nHello World\nOlá", 32); renderText.BackgroundColor = OpenTK.Color.Red; renderColor = new RenderColor(Color4.DarkOrange); renderImage = new RenderImage(Renderer.LoadImage("./csharp.png")); }
/***************************************************/ /**** Public Methods - IRender ****/ /***************************************************/ public static Text3d ToRhino(this RenderText renderText) { if (renderText == null) { return(null); } RHG.Vector3d xdir = (RHG.Vector3d)renderText.Cartesian.X.IToRhino(); RHG.Vector3d ydir = (RHG.Vector3d)renderText.Cartesian.Y.IToRhino(); RHG.Point3d pos = (RHG.Point3d)renderText.Cartesian.Origin.IToRhino(); RHG.Plane textPlane = new RHG.Plane(pos, xdir, ydir); Text3d text3D = new Text3d(renderText.Text, textPlane, renderText.Height); if (renderText.FontName.Contains("Italic")) { text3D.Italic = true; } if (renderText.FontName.Contains("Bold")) { text3D.Bold = true; } text3D.FontFace = renderText.FontName.Replace("Italic", "").Replace("Bold", "").Trim(); return(text3D); }
public void Dispose() { RenderText?.Dispose(); RenderText = null; RenderCaret?.Dispose(); RenderCaret = null; }
private RenderObject CreateDesc(string desc) { RenderText rt = new RenderText(); rt.Text = desc; rt.Style.Font = new Font("Verdana", 12); rt.Style.TextAlignVert = AlignVertEnum.Center; return(rt); }
public void Update() { //RenderText.BackColor = Color.Wheat; int w = (int)(Sprite.Renderer.Resolution.X * MaxSize.X); int h = (int)(Sprite.Renderer.Resolution.Y * MaxSize.Y); RenderText.FontSize = Sprite.Renderer.Resolution.Y * FontSize * FontCorrection; RenderText.Update(w, h); }
/// <summary> /// Attaches a sticky note to a render object. /// The note is floating text box like a callout, placed below and to the right /// of the render object being annotated. /// </summary> /// <param name="ro">The render object to annotate.</param> /// <param name="annotation">The note text.</param> private void AddStickyNote(RenderObject ro, string noteText) { // We do not annotate notes, and currently we cannot annotate objects // with multiple fragments as there is no mechanism yet to anchor the note // near a specific fragment: if (ro == null || (ro.UserData as string) == c_stickyNoteUserData || ro.Fragments.Count > 1) { return; } RenderText noteRo = new RenderText(noteText); // Set up annotation styles: noteRo.Style.Padding.All = "0.8mm"; noteRo.Style.Font = new Font("Arial", 8); noteRo.Style.BackColor = Color.Yellow; noteRo.Style.Borders.All = new LineDef("1pt", Color.SteelBlue); noteRo.Style.Borders.RadiusX = noteRo.Style.Borders.RadiusY = "1.6mm"; //noteRo.Clip = false; // Position relative to the object being annotated: string noteName = NameObject(ro); noteRo.X = string.Format("{0}.right + 5mm", noteName); noteRo.Y = string.Format("{0}.bottom", noteName); noteRo.Style.Shadow.Transparency = 50; noteRo.Width = "Min(auto, 40mm)"; noteRo.Height = "auto"; // add a line from the object being annotated to the note: RenderLine line = new RenderLine(); line.X = string.Format("{0}.right", noteName); line.Y = string.Format("{0}.top + {0}.height/2", noteName); line.Height = string.Format("prev.height/2 + {0}.height/2", noteName); line.Width = string.Format("prev.left - {0}.right", noteName); line.Line.X1 = 0; line.Line.Y1 = 0; line.Line.X2 = "width"; line.Line.Y2 = "height"; line.Style.ShapeLine = new LineDef("1pt", Color.SteelBlue); // paint annotated object's background: ro.Style.BackColor = Color.FromArgb(70, Color.SteelBlue); // Draw annotation over everything else: noteRo.ZOrder = 100; line.ZOrder = 100; // mark annotations as such: noteRo.UserData = c_stickyNoteUserData; line.UserData = c_stickyNoteUserData; // add to document body: ro.Document.Body.Children.Add(noteRo); ro.Document.Body.Children.Add(line); }
/// <summary> /// Makes render object representing the cell text. /// </summary> /// <param name="text">The cell text.</param> /// <param name="name">The name for the created render object (may be null).</param> /// <returns>The render object representing the cell text.</returns> private RenderObject MakeTextRO(string text, string name) { RenderText rtxt = new RenderText(text ?? ""); if (!string.IsNullOrEmpty(name)) { rtxt.Name = name; } rtxt.Width = Unit.Auto; return(rtxt); }
private RenderText GetPrintTestData() { RenderText testDate = new RenderText(Properties.Resources.PrintDate + DateTime.Today.ToString("yyyy-MM-dd")); //.PadLeft(printTableWidth / 2) + DateTime.Today.ToString("yyyy-MM-dd")); testDate.Style.Font = new Font("宋体", 9); testDate.Style.TextAlignHorz = AlignHorzEnum.Right; testDate.Style.Padding.All = "1mm"; testDate.Width = printTableWidth.ToString() + "mm"; testDate.Style.FlowAlign = FlowAlignEnum.Center; return(testDate); }
private void setRoText_Validated(object sender, EventArgs e) { RenderText rt = ((ToolStripItem)sender).Tag as RenderText; if (rt == null) { return; } contextMenuStrip1.Hide(); rt.Text = setRoText.Text; RegenerateDocument(rt.Document); }
private C1.C1Preview.C1PrintDocument makeDoc_TableStyles() { C1.C1Preview.C1PrintDocument doc = new C1.C1Preview.C1PrintDocument(); RenderText rtxt = new RenderText(doc); rtxt.Text = "This test demonstrates multiple inheritance of styles in tables. " + "In the table below, the font is redefined for row 4. " + "Then, the text color is redefined for column 1. " + "Finally, a cell group is defined containing cells in rows 4 to 6, cols 1 & 2, " + "and background color is redefined for that cell group. " + "\nThe cell at the intersection of row 4 and col 1 combines all 3 styles.\n\n"; doc.Body.Children.Add(rtxt); doc.Style.Font = new Font("Arial", 12, FontStyle.Regular); const int ROWS = 12; const int COLS = 6; RenderTable rt = new RenderTable(doc); rt.Style.Padding.All = new Unit("4mm"); for (int row = 0; row < ROWS; ++row) { for (int col = 0; col < COLS; ++col) { RenderText celltext = new RenderText(doc); celltext.Text = string.Format("Cell ({0},{1})", row, col); rt.Cells[row, col].RenderObject = celltext; } } // add the table to the document doc.Body.Children.Add(rt); // set up table style rt.Style.GridLines.All = new LineDef("2pt", Color.Black); rt.Style.GridLines.Horz = new LineDef("1pt", Color.Gray); rt.Style.GridLines.Vert = new LineDef("1pt", Color.Gray); // define a row style rt.Rows[4].Style.Font = new Font("Arial", 12, FontStyle.Bold | FontStyle.Italic); // define a column style rt.Cols[1].Style.TextColor = Color.DarkOrange; // define a cell group with a background color rt.UserCellGroups.Add(new UserCellGroup(new Rectangle(1, 4, 2, 3))); rt.UserCellGroups[0].Style.BackColor = Color.PaleGreen; return(doc); }
private RenderObject CreateObj(string text) { RenderText result = new RenderText(); result.Text = text; result.Style.Borders.All = new LineDef("1mm", Color.Blue); result.Style.TextAlignHorz = AlignHorzEnum.Center; result.Style.TextAlignVert = AlignVertEnum.Center; result.Style.BackColor = Color.LightSkyBlue; result.SplitVertBehavior = SplitBehaviorEnum.SplitIfLarge; result.Width = "7cm"; result.Height = "4cm"; return(result); }
public void SetText(int characterID, int iconArrayIndex, int newValue) { if (uis.ContainsKey(characterID)) { Entity ui = uis[characterID]; Childrens children = World.EntityManager.GetComponentData <Childrens>(ui); Entity icon = children.children[iconArrayIndex]; Childrens iconChildren = World.EntityManager.GetComponentData <Childrens>(icon); Entity textEntity = iconChildren.children[0]; RenderText renderText = World.EntityManager.GetComponentData <RenderText>(textEntity); renderText.SetText(newValue.ToString()); World.EntityManager.SetComponentData(textEntity, renderText); } }
public override void Initialize() { levelManager = new LevelManager(parentManager); parentManager.renderCore.camera.position = new Vector2(parentManager.renderCore.settings.screensize.X / 2, parentManager.renderCore.settings.screensize.Y / 2); countDownText = new RenderText(parentManager.renderCore,countDown.ToString(),Color.Black); countDownText.position = new Vector2(parentManager.renderCore.settings.screensize.X / 2, parentManager.renderCore.settings.screensize.Y / 2); countDownText.layer = 2; parentManager.renderCore.objects.Add(countDownText); parentManager.renderCore.objects.Add(parentManager.player); parentManager.renderCore.animationManager.animations.Add(parentManager.player); parentManager.player.position = new Vector2(100, parentManager.renderCore.settings.screensize.Y - parentManager.player.getcurrentAnimation().size.Y); PlayerInputHandler handler = new PlayerInputHandler(parentManager); parentManager.inputManager.registerHandler(handler); }
static public C1PrintDocument MakeDoc() { C1PrintDocument doc = C1ReportViewer.CreateC1PrintDocument(); RenderText rtxt1 = new RenderText(doc); rtxt1.Text = "This test shows the basic features of tables in C1PrintDocument:\n" + "\t- table borders (the GridLines style property, which allows to specify 4 outer and 2 inner lines);\n" + "\t- borders around individual cells and groups of cells;\n" + "\t- style attributes (including borders) for groups of disconnected cells;\n" + "\t- cells spanning rows and columns;\n" + "\t- content alignment within the cells (spanned or otherwise);\n" + "\t- table headers and footers;\n" + "\t- tags (such as page number/total page count) anywhere in the document (see the table footer);\n" + "\t- different style attributes including borders, font and background images.\n" + "\t \n" ; rtxt1.Style.Font = new Font(rtxt1.Style.Font.FontFamily, 14); rtxt1.Style.Padding.Bottom = new C1.C1Preview.Unit("5mm"); doc.Body.Children.Add(rtxt1); // // make a table and fill all its cells with some demo data RenderTable rt1 = new RenderTable(doc); const int ROWS = 100; const int COLS = 4; for (int row = 0; row < ROWS; ++row) { for (int col = 0; col < COLS; ++col) { RenderText celltext = new RenderText(doc); celltext.Text = string.Format("Cell ({0},{1})", row, col); // Note that rt1.Cells[row, col] will create cells on demand - // no need to specify the number of rows/cols initially. rt1.Cells[row, col].RenderObject = celltext; } } // add the table to the document doc.Body.Children.Add(rt1); // // unlike the old print-doc, in the new one changes can be made at any // point in the program, and they will be reflected in the document when // it is rendered. Add some customizations to the table: // // by default, tables have no borders. add a simple border: rt1.Style.GridLines.All = new LineDef("2pt", Color.DarkGray); rt1.Style.GridLines.Horz = new LineDef("1pt", Color.Blue); rt1.Style.GridLines.Vert = new LineDef("1pt", Color.Brown); // // table headers and footers // add a table header: // setup the header as a whole rt1.RowGroups[0, 2].PageHeader = true; rt1.RowGroups[0, 2].Style.BackgroundImage = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath("~/C1ReportViewer/Images/orange.jpg")); rt1.RowGroups[0, 2].Style.BackgroundImageAlign.StretchHorz = true; rt1.RowGroups[0, 2].Style.BackgroundImageAlign.StretchVert = true; rt1.RowGroups[0, 2].Style.BackgroundImageAlign.KeepAspectRatio = false; // multiple inheritance supported in styles: the text color from the // group's style will merge with the font from the cell's own style: rt1.RowGroups[0, 2].Style.TextColor = Color.LightGreen; rt1.RowGroups[0, 2].Style.GridLines.All = new LineDef("2pt", Color.DarkCyan); rt1.RowGroups[0, 2].Style.GridLines.Horz = LineDef.Empty; rt1.RowGroups[0, 2].Style.GridLines.Vert = LineDef.Empty; // setup specific cells in the header: ((RenderText)rt1.Cells[0, 0].RenderObject).Text = "Header row 0"; ((RenderText)rt1.Cells[1, 0].RenderObject).Text = "Header row 1"; rt1.Cells[0, 1].SpanCols = 2; rt1.Cells[0, 1].SpanRows = 2; rt1.Cells[0, 1].RenderObject = new RenderText(doc); ((RenderText)rt1.Cells[0, 1].RenderObject).Text = "Multi-row table headers and footers are supported"; rt1.Cells[0, 1].Style.TextAlignHorz = AlignHorzEnum.Center; rt1.Cells[0, 1].Style.Font = new Font("Arial", 14, FontStyle.Bold); // setup a table footer rt1.RowGroups[rt1.Rows.Count - 2, 2].PageFooter = true; rt1.RowGroups[rt1.Rows.Count - 2, 2].Style.BackColor = Color.LemonChiffon; rt1.Cells[rt1.Rows.Count - 2, 0].SpanRows = 2; rt1.Cells[rt1.Rows.Count - 2, 0].SpanCols = rt1.Cols.Count - 1; rt1.Cells[rt1.Rows.Count - 2, 0].Style.TextAlignHorz = AlignHorzEnum.Center; rt1.Cells[rt1.Rows.Count - 2, 0].Style.TextAlignVert = AlignVertEnum.Center; ((RenderText)rt1.Cells[rt1.Rows.Count - 2, 0].RenderObject).Text = "This is a table footer."; rt1.Cells[rt1.Rows.Count - 2, 3].SpanRows = 2; rt1.Cells[rt1.Rows.Count - 2, 3].Style.TextAlignHorz = AlignHorzEnum.Right; // tags (such as page no/page count) can be inserted anywhere in the document ((RenderText)rt1.Cells[rt1.Rows.Count - 2, 3].RenderObject).Text = "Page [PageNo] of [PageCount]"; // // in tables, Style.Borders merges seamlessly into the table grid lines: // it is easy to put a border around specific cells: rt1.Cells[8, 3].Style.Borders.All = new LineDef("3pt", Color.OrangeRed); ((RenderText)rt1.Cells[8, 3].RenderObject).Text = "It is easy to put a border around a single cell using cell.Style.Borders"; // // cells can be combined into groups, and their styles can be manipulated as // a single entity: // define a group of cells by specifying the rectangles bounding the cells: ((RenderText)rt1.Cells[3, 2].RenderObject).Text = "Cells can be combined into groups to be manipulated as a single entity " + "(such as all cells with the pale green background in this table)."; rt1.Cells[3, 2].SpanCols = 2; rt1.Cells[3, 2].SpanRows = 3; Rectangle[] cells1 = new Rectangle[] { new Rectangle(2, 3, 2, 3), new Rectangle(0, 10, 3, 2), new Rectangle(1, 23, 2, 4), new Rectangle(1, 36, 1, 24), new Rectangle(0, 72, 3, 6), }; UserCellGroup grp1 = new UserCellGroup(cells1); grp1.Style.BackColor = Color.PaleGreen; grp1.Style.Font = new Font("Arial", 12, FontStyle.Bold); grp1.Style.Borders.All = new LineDef("2pt", Color.DarkGreen); rt1.UserCellGroups.Add(grp1); // row/col span ((RenderText)rt1.Cells[14, 1].RenderObject).Text = "Column and row spans are fully supported, as well as alignment within the (spanned or not) cells."; rt1.Cells[14, 1].SpanCols = 3; rt1.Cells[14, 1].SpanRows = 5; rt1.Cells[14, 1].Style.Font = new Font("Arial", 12, FontStyle.Bold | FontStyle.Italic); rt1.Cells[14, 1].Style.Borders.All = new LineDef("2pt", Color.DarkOrange); rt1.Cells[14, 1].Style.TextAlignHorz = AlignHorzEnum.Center; rt1.Cells[14, 1].Style.TextAlignVert = AlignVertEnum.Center; rt1.RowGroups[14, 5].CanSplit = false; return doc; }
static public C1PrintDocument MakeDoc() { C1PrintDocument doc = C1ReportViewer.CreateC1PrintDocument(); doc.Style.FontSize += 2; // setup a page header with links to first|prev|next|last pages: RenderTable rtnav = new RenderTable(); // suppress different display of visited hyperlinks for page navigator: rtnav.Style.VisitedHyperlinkAttrs = rtnav.Style.HyperlinkAttrs; // space things out rtnav.Style.Spacing.Bottom = "5mm"; // add navigator links rtnav.Cells[0, 0].Text = "First page"; rtnav.Cells[0, 0].RenderObject.Hyperlink = new C1Hyperlink( new C1LinkTargetPage(PageJumpTypeEnum.First), "Go to first page"); rtnav.Cells[0, 1].Text = "Previous page"; rtnav.Cells[0, 1].RenderObject.Hyperlink = new C1Hyperlink( new C1LinkTargetPage(PageJumpTypeEnum.Previous), "Go to previous page"); rtnav.Cells[0, 2].Text = "Next page"; rtnav.Cells[0, 2].RenderObject.Hyperlink = new C1Hyperlink( new C1LinkTargetPage(PageJumpTypeEnum.Next), "Go to next page"); rtnav.Cells[0, 3].Text = "Last page"; rtnav.Cells[0, 3].RenderObject.Hyperlink = new C1Hyperlink( new C1LinkTargetPage(PageJumpTypeEnum.Last), "Go to last page"); doc.PageLayout.PageHeader = rtnav; // make the body of the document // make an anchor RenderText rt1 = new RenderText("This is text with anchor1."); // the name ("anchor1") will be used to jump to this link: rt1.Anchors.Add(new C1Anchor("anchor1")); rt1.Hyperlink = new C1Hyperlink(new C1LinkTargetPage(PageJumpTypeEnum.Last), "Go to the last page of the document"); doc.Body.Children.Add(rt1); // add a link to open doc2: /* RenderText rt2 = new RenderText("Click here to open 'StylesInTables' document."); rt2.Hyperlink = new C1Hyperlink(new C1LinkTargetFile( "javascript:window.changeReport('','StylesInTables')")); doc.Body.Children.Add(rt2); */ // add filler for (int i = 0; i < 500; ++i) doc.Body.Children.Add(new RenderText(string.Format("... filler {0} ...", i))); // add hyperlink to anchor1 RenderText rt3 = new RenderText("Click here to go to anchor1."); rt3.Hyperlink = new C1Hyperlink(new C1LinkTargetAnchor("anchor1"), "This is status text when the mouse hovers over link to anchor1"); doc.Body.Children.Add(rt3); // to jump to a render object, an anchor is really not needed: RenderText rt4 = new RenderText("Click here to go to the middle of document."); rt4.Hyperlink = new C1Hyperlink(doc.Body.Children[doc.Body.Children.Count / 2]); rt4.Hyperlink.StatusText = "Go to the approximate middle of the document"; doc.Body.Children.Add(rt4); // add image with hyperlink to a URL RenderImage ri1 = new RenderImage(Image.FromFile(HttpContext.Current.Server.MapPath("~/C1ReportViewer/Images/google.gif"))); ri1.Hyperlink = new C1Hyperlink(new C1LinkTargetFile("http://www.google.com"), " Go googling... (Use Ctrl+Click in order to open link in a new window"); doc.Body.Children.Add(ri1); RenderText rt5 = new RenderText("alert 'Hello'."); rt5.Hyperlink = new C1Hyperlink(new C1LinkTargetFile("javascript:alert('Hello')")); rt5.Hyperlink.StatusText = "Show 'Hello' message."; doc.Body.Children.Add(rt5); RenderText rt6 = new RenderText("printWithPreview"); rt6.Hyperlink = new C1Hyperlink(new C1LinkTargetFile("exec:printWithPreview()")); rt6.Hyperlink.StatusText = "Preview and print report."; doc.Body.Children.Add(rt6); return doc; }
/// <summary> /// Fills specified control with a Day style. /// </summary> /// <param name="doc"></param> public static void MakeDay(C1PrintDocument doc) { doc.Clear(); doc.DocumentInfo.Title = "Daily style"; doc.DocumentInfo.Subject = "Day"; AddNamespaces(doc); AddHeadersFooters(doc); doc.Tags["FooterRight"].Value = "[GeneratedDateTime]"; doc.Tags["DateHeadingsFont"].Value = new Font("Segoe UI", 24, FontStyle.Bold); doc.DocumentStartingScript += "Dim tasksNumber As Integer = 0 \r\n" + "If Document.Tags!IncludeTasks.Value Then\r\n" + " tasksNumber = tasksNumber + 1 \r\n" + "End If\r\n" + "If Document.Tags!IncludeBlankNotes.Value Then\r\n" + " tasksNumber = tasksNumber + 1 \r\n" + "End If\r\n" + "If Document.Tags!IncludeLinedNotes.Value Then\r\n" + " tasksNumber = tasksNumber + 1 \r\n" + "End If\r\n" + "If tasksNumber = 1 Then\r\n" + " Document.Tags!TaskHeight.Value = New Unit(\"100%\")\r\n" + "ElseIf tasksNumber = 2 Then\r\n" + " Document.Tags!TaskHeight.Value = New Unit(\"50%\")\r\n" + "Else\r\n" + " Document.Tags!TaskHeight.Value = New Unit(\"33.3%\")\r\n" + "End If\r\n" + "Dim dateAppointments As New DateAppointmentsCollection(Tags!StartDate.Value, Tags!EndDate.Value, Tags!Appointments.Value, Tags!CalendarInfo.Value, True, True)\r\n" + "If Tags.IndexByName(\"DateAppointments\") = -1 Then\r\n" + " Dim tagApps As Tag\r\n" + " tagApps = New Tag(\"DateAppointments\", dateAppointments)\r\n" + " tagApps.SerializeValue = False\r\n" + " Tags.Add(tagApps)\r\n" + "Else\r\n" + " Tags!DateAppointments.Value = dateAppointments\r\n" + "End If\r\n" + "Dim startT As Date = Tags!StartTime.Value \r\n" + "Dim endT As Date = Tags!EndTime.Value \r\n" + "If startT > endT Then\r\n" + " Tags!StartTime.Value = endT \r\n" + " Tags!EndTime.Value = startT \r\n" + "End If"; // RenderArea representing the single page RenderArea raPage = new RenderArea(); raPage.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value"); raPage.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); raPage.BreakBefore = BreakEnum.Page; raPage.Width = "100%"; raPage.Height = "100%"; raPage.Stacking = StackingRulesEnum.InlineLeftToRight; #region ** day header // day header RenderArea raDayHeader = new RenderArea(); raDayHeader.Style.Borders.All = LineDef.Default; raDayHeader.Width = "100%"; raDayHeader.Height = "28mm"; raDayHeader.Stacking = StackingRulesEnum.InlineLeftToRight; RenderText rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"D\", Document.Tags!CalendarInfo.Value.CultureInfo)]"); rt.FormatDataBindingInstanceScript = "RenderObject.Style.Font = Document.Tags!DateHeadingsFont.Value\r\n" + "Dim startDate As Date = RenderObject.Original.Parent.Parent.DataBinding.Fields!Date.Value\r\n" + "Document.Tags!StartTime.Value = startDate.Add(Document.Tags!StartTime.Value.TimeOfDay)\r\n" + "Document.Tags!EndTime.Value = startDate.Add(Document.Tags!EndTime.Value.TimeOfDay)\r\n" + "Document.Tags!MonthCalendar.Value = New Date(startDate.Year, startDate.Month, 1) \r\n" + "startDate = Document.Tags!StartTime.Value\r\n" + "Document.Tags!DayHours.Value = New Dictionary(of Date, Date)\r\n" + "While startDate < Document.Tags!EndTime.Value\r\n" + " Document.Tags!DayHours.Value.Add(startDate, startDate)\r\n" + " startDate = startDate.AddMinutes(30)\r\n" + "End While"; rt.Style.TextAlignVert = AlignVertEnum.Center; rt.Style.Spacing.Left = "2mm"; rt.Height = "100%"; rt.Width = "parent.Width - 38mm"; raDayHeader.Children.Add(rt); RenderArea monthCalendar = new RenderArea(); monthCalendar.Stacking = StackingRulesEnum.InlineLeftToRight; monthCalendar.Style.Spacing.Left = "1mm"; monthCalendar.Style.Spacing.Right = "3mm"; monthCalendar.Style.Spacing.Top = "0.5mm"; monthCalendar.Width = "36mm"; rt = new RenderText("[CDate(Document.Tags!MonthCalendar.Value).ToString(\"MMMM yyy\", Document.Tags!CalendarInfo.Value.CultureInfo)]"); rt.FormatDataBindingInstanceScript = "Dim startDate As Date = Document.Tags!MonthCalendar.Value\r\n" + "Dim endDate As Date = startDate.AddMonths(1).AddDays(-1)\r\n" + "While startDate.DayOfWeek <> Document.Tags!CalendarInfo.Value.WeekStart \r\n" + " startDate = startDate.AddDays(-1)\r\n" + "End While\r\n" + "Document.Tags!WeekNumber.Value = New List(of Date)\r\n" + "While startDate <= endDate\r\n" + " Document.Tags!WeekNumber.Value.Add(startDate)\r\n" + " startDate = startDate.AddDays(7)\r\n" + "End While"; rt.Style.TextAlignHorz = AlignHorzEnum.Center; rt.Style.Font = new Font("Segoe UI", 8); rt.Width = "100%"; monthCalendar.Children.Add(rt); rt = new RenderText(" "); rt.Style.Font = new Font("Arial", 7f); rt.Style.WordWrap = false; rt.Width = "12.5%"; monthCalendar.Children.Add(rt); rt = new RenderText("[Document.Tags!CalendarInfo.Value.CultureInfo.DateTimeFormat.GetShortestDayName(CDate(Fields!Date.Value).DayOfWeek)]"); rt.DataBinding.DataSource = new Expression("New DateAppointmentsCollection(Document.Tags!WeekNumber.Value(0), Document.Tags!WeekNumber.Value(0).AddDays(6), Document.Tags!Appointments.Value, True)"); rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); rt.Style.Borders.Bottom = LineDef.Default; rt.Style.Font = new Font("Arial", 7f); rt.Style.TextAlignHorz = AlignHorzEnum.Center; rt.Style.WordWrap = false; rt.Width = "12.5%"; monthCalendar.Children.Add(rt); RenderArea raWeek = new RenderArea(); raWeek.DataBinding.DataSource = new Expression("Document.Tags!WeekNumber.Value"); raWeek.Style.Font = new Font("Arial", 7f); raWeek.Width = "100%"; raWeek.Stacking = StackingRulesEnum.InlineLeftToRight; rt = new RenderText("[Document.Tags!CalendarInfo.Value.CultureInfo.Calendar.GetWeekOfYear(CDate(Fields!Date.Value), System.Globalization.CalendarWeekRule.FirstDay, Document.Tags!CalendarInfo.Value.WeekStart)]"); rt.Style.Borders.Right = LineDef.Default; rt.Style.TextAlignHorz = AlignHorzEnum.Right; rt.Style.WordWrap = false; rt.Width = "12.5%"; raWeek.Children.Add(rt); rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"%d\", Document.Tags!CalendarInfo.Value.CultureInfo)]"); rt.DataBinding.DataSource = new Expression("New DateAppointmentsCollection(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value).AddDays(6), Document.Tags!Appointments.Value, True)"); rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); rt.FormatDataBindingInstanceScript = "If RenderObject.Original.DataBinding.Fields!Date.Value.Month <> Document.Tags!MonthCalendar.Value.Month Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Hidden\r\n" + "Else If RenderObject.Original.DataBinding.Fields!HasAppointments.Value Then\r\n" + " RenderObject.Style.FontBold = true\r\n" + "End If"; rt.Style.TextAlignHorz = AlignHorzEnum.Right; rt.Width = "12.5%"; raWeek.Children.Add(rt); monthCalendar.Children.Add(raWeek); raDayHeader.Children.Add(monthCalendar); raPage.Children.Add(raDayHeader); #endregion #region ** day // day RenderArea raDayBody = new RenderArea(); raDayBody.FormatDataBindingInstanceScript = "If Not (Document.Tags!IncludeTasks.Value Or Document.Tags!IncludeBlankNotes.Value Or Document.Tags!IncludeLinedNotes.Value) Then\r\n" + " RenderObject.Width = \"100%\" \r\n" + "End If"; raDayBody.Style.Spacing.Top = "0.5mm"; raDayBody.Style.Borders.All = LineDef.Default; raDayBody.Width = "75%"; raDayBody.Height = "parent.Height - 28mm"; raDayBody.Stacking = StackingRulesEnum.BlockTopToBottom; #region ** all-day events // RenderArea representing the single day RenderArea raDay = new RenderArea(); raDay.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value))"); raDay.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); raDay.Stacking = StackingRulesEnum.InlineLeftToRight; raDay.Height = "Auto"; RenderText status = new RenderText(" "); status.FormatDataBindingInstanceScript = "If IsNothing(RenderObject.Original.DataBinding.Parent.Fields!BusyStatus.Value) Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse\r\n" + "Else \r\n" + " RenderObject.Style.Brush = RenderObject.Original.DataBinding.Parent.Fields!BusyStatus.Value.Brush.Brush \r\n" + "End If"; status.Width = "100%"; status.Height = "1.5mm"; raDay.Children.Add(status); // RenderArea representing the single appointment RenderArea raApp = new RenderArea(); raApp.Style.Spacing.All = "0.5mm"; raApp.Style.Spacing.Left = "1.25cm"; raApp.FormatDataBindingInstanceScript = "If RenderObject.Original.DataBinding.Fields!AllDayEvent.Value Then\r\n" + " RenderObject.Style.Borders.All = LineDef.Default\r\n" + "ElseIf DateDiff(DateInterval.Second, CDate(Document.Tags!StartTime.Value), CDate(RenderObject.Original.DataBinding.Fields!Start.Value)) >= 0 Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse\r\n" + "End If\r\n" + "If Not IsNothing(RenderObject.Original.DataBinding.Fields!Label.Value) Then\r\n" + " RenderObject.Style.Brush = CType(RenderObject.Original.DataBinding.Fields!Label.Value, Label).Brush.Brush\r\n" + "End If"; raApp.Stacking = StackingRulesEnum.InlineLeftToRight; // Set the text's data source to the data source of the containing RenderArea - this indicates that the render object is bound to the current group in the specified object: raApp.DataBinding.DataSource = new Expression("Parent.Fields!Appointments.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value"); rt = new RenderText(); rt.Text = "[IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, \"> \", String.Empty) & " + "IIf(Fields!AllDayEvent.Value, \"\", String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t} {1:t}\", " + "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, DataBinding.Parent.Fields!Date.Value, Fields!Start.Value), " + "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value.AddDays(1)), CDate(Fields!End.Value)) > 0, DataBinding.Parent.Fields!Date.Value.AddDays(1), Fields!End.Value)))]"; rt.Width = "Auto"; raApp.Children.Add(rt); rt = new RenderText(); rt.Text = " [Fields!Subject.Value] "; rt.Width = "Auto"; raApp.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[\" (\" & Fields!Location.Value & \")\"]"; rt.Width = "Auto"; raApp.Children.Add(rt); raDay.Children.Add(raApp); raDayBody.Children.Add(raDay); #endregion #region ** slots raDay = new RenderArea(); raDay.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value))"); raDay.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); raDay.Stacking = StackingRulesEnum.InlineLeftToRight; raDay.Height = "parent - prev.height - next.height"; RenderArea raTimeSlot = new RenderArea(); raTimeSlot.FormatDataBindingInstanceScript = "RenderObject.Height = New Unit((100/CLng(Document.Tags!DayHours.Value.Count) - 0.005).ToString(\"#.###\", System.Globalization.CultureInfo.InvariantCulture) & \"%\")"; raTimeSlot.DataBinding.DataSource = new Expression("Document.Tags!DayHours.Value"); raTimeSlot.Width = "100%"; raTimeSlot.Height = "0.5cm"; raTimeSlot.Stacking = StackingRulesEnum.InlineLeftToRight; RenderParagraph rp = new RenderParagraph(); rp.FormatDataBindingInstanceScript = "Document.Tags!SlotAppointments.Value = Document.Tags!DateAppointments.Value.GetIntervalAppointments(RenderObject.Original.DataBinding.Parent.Fields!Key.Value, RenderObject.Original.DataBinding.PArent.Fields!Key.Value.AddMinutes(30), False)\r\n" + "RenderObject.Visibility = IIf(RenderObject.Original.DataBinding.Parent.Fields!Key.Value.Minute = 0, VisibilityEnum.Visible, VisibilityEnum.Hidden)\r\n" + "Dim headerFont As Font = Document.Tags!DateHeadingsFont.Value\r\n" + "RenderObject.Style.Font = New Font(headerFont.FontFamily, headerFont.Size * 2 / 3)"; rp.Width = "1.65cm"; rp.Style.TextAlignHorz = AlignHorzEnum.Right; rp.Style.Borders.Top = LineDef.Default; rp.Style.Padding.Right = "1mm"; rp.Height = "100%"; ParagraphText pt = new ParagraphText("[IIf(String.IsNullOrEmpty(Document.Tags!CalendarInfo.Value.CultureInfo.DateTimeFormat.AMDesignator), CDate(Fields!Key.Value).ToString(\"%H\"), CDate(Fields!Key.Value).ToString(\"%h\"))]"); pt.Style.FontBold = true; pt.Style.Padding.Right = "1mm"; rp.Content.Add(pt); rp.Content.Add(new ParagraphText("[IIf(String.IsNullOrEmpty(Document.Tags!CalendarInfo.Value.CultureInfo.DateTimeFormat.AMDesignator), \"00\", CDate(Fields!Key.Value).ToString(\"tt\", Document.Tags!CalendarInfo.Value.CultureInfo).ToLower())]", TextPositionEnum.Superscript)); raTimeSlot.Children.Add(rp); RenderArea slot = new RenderArea(); slot.Width = "parent.width - prev.width - prev.left"; slot.Height = "100%"; slot.Style.Borders.Top = LineDef.Default; slot.Style.Borders.Left = LineDef.Default; slot.Stacking = StackingRulesEnum.InlineLeftToRight; // RenderArea representing the single appointment raApp = new RenderArea(); // Set the text's data source to the data source of the containing RenderArea - this indicates that the render object is bound to the current group in the specified object: raApp.DataBinding.DataSource = new Expression("Document.Tags!SlotAppointments.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value"); raApp.Style.Spacing.All = "0.5mm"; raApp.FormatDataBindingInstanceScript = "RenderObject.Width = New Unit((100/CLng(Document.Tags!SlotAppointments.Value.Count) - 0.005).ToString(\"#.###\", System.Globalization.CultureInfo.InvariantCulture) & \"%\")\r\n" + "If Not IsNothing(RenderObject.Original.DataBinding.Fields!Label.Value) Then\r\n" + " RenderObject.Style.Brush = CType(RenderObject.Original.DataBinding.Fields!Label.Value, Label).Brush.Brush\r\n" + "End If"; raApp.Width = "10%"; raApp.Height = "100%"; raApp.Stacking = StackingRulesEnum.InlineLeftToRight; rt = new RenderText(); rt.Text = "[String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t}-{1:t}\", Fields!Start.Value, Fields!End.Value).ToLower()]"; rt.Width = "Auto"; raApp.Children.Add(rt); rt = new RenderText(); rt.Text = " [Fields!Subject.Value] "; rt.Width = "Auto"; raApp.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[\" (\" & Fields!Location.Value & \")\"]"; rt.Width = "Auto"; raApp.Children.Add(rt); slot.Children.Add(raApp); raTimeSlot.Children.Add(slot); raDay.Children.Add(raTimeSlot); raDayBody.Children.Add(raDay); #endregion #region ** late appointments raDay = new RenderArea(); raDay.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value))"); raDay.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); raDay.Style.Borders.Top = LineDef.Default; raDay.Stacking = StackingRulesEnum.InlineLeftToRight; raDay.Height = "Auto"; // RenderArea representing the single appointment raApp = new RenderArea(); raApp.Style.Spacing.All = "0.5mm"; raApp.Style.Spacing.Left = "1.25cm"; raApp.FormatDataBindingInstanceScript = "If DateDiff(DateInterval.Second, CDate(Document.Tags!EndTime.Value), CDate(RenderObject.Original.DataBinding.Fields!Start.Value)) >= 0 Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Visible\r\n" + "Else\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse\r\n" + "End If\r\n" + "If Not IsNothing(RenderObject.Original.DataBinding.Fields!Label.Value) Then\r\n" + " RenderObject.Style.Brush = CType(RenderObject.Original.DataBinding.Fields!Label.Value, Label).Brush.Brush\r\n" + "End If"; raApp.Stacking = StackingRulesEnum.InlineLeftToRight; // Set the text's data source to the data source of the containing RenderArea - this indicates that the render object is bound to the current group in the specified object: raApp.DataBinding.DataSource = new Expression("Parent.Fields!Appointments.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value"); rt = new RenderText(); rt.Text = "[IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, \"> \", String.Empty) & " + "IIf(Fields!AllDayEvent.Value, \"\", String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t} {1:t}\", " + "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, DataBinding.Parent.Fields!Date.Value, Fields!Start.Value), " + "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value.AddDays(1)), CDate(Fields!End.Value)) > 0, DataBinding.Parent.Fields!Date.Value.AddDays(1), Fields!End.Value)))]"; rt.Width = "Auto"; raApp.Children.Add(rt); rt = new RenderText(); rt.Text = " [Fields!Subject.Value] "; rt.Width = "Auto"; raApp.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[\" (\" & Fields!Location.Value & \")\"]"; rt.Width = "Auto"; raApp.Children.Add(rt); raDay.Children.Add(raApp); raDayBody.Children.Add(raDay); #endregion raPage.Children.Add(raDayBody); #endregion #region ** tasks // tasks RenderArea include = new RenderArea(); include.FormatDataBindingInstanceScript = "If Document.Tags!IncludeTasks.Value Or Document.Tags!IncludeBlankNotes.Value Or Document.Tags!IncludeLinedNotes.Value Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Visible \r\n" + "Else\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse \r\n" + "End If"; include.Width = "25%"; include.Height = "parent.Height - 28mm"; RenderArea raTasks = new RenderArea(); raTasks.FormatDataBindingInstanceScript = "If Not Document.Tags!IncludeTasks.Value Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse \r\n" + "End If\r\n" + "RenderObject.Height = Document.Tags!TaskHeight.Value"; raTasks.Style.Borders.All = LineDef.Default; raTasks.Style.Spacing.Top = "0.5mm"; raTasks.Style.Spacing.Left = "0.5mm"; raTasks.Width = "100%"; rt = new RenderText(); rt.Text = "Tasks"; rt.Style.Padding.Left = "2mm"; rt.Style.Borders.Bottom = LineDef.Default; raTasks.Children.Add(rt); include.Children.Add(raTasks); RenderArea raNotes = new RenderArea(); raNotes.FormatDataBindingInstanceScript = "If Not Document.Tags!IncludeBlankNotes.Value Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse \r\n" + "End If\r\n" + "RenderObject.Height = Document.Tags!TaskHeight.Value"; raNotes.Style.Borders.All = LineDef.Default; raNotes.Style.Spacing.Top = "0.5mm"; raNotes.Style.Spacing.Left = "0.5mm"; raNotes.Width = "100%"; rt = new RenderText(); rt.Text = "Notes"; rt.Style.Padding.Left = "2mm"; rt.Style.Borders.Bottom = LineDef.Default; raNotes.Children.Add(rt); include.Children.Add(raNotes); raNotes = new RenderArea(); raNotes.FormatDataBindingInstanceScript = "If Not Document.Tags!IncludeLinedNotes.Value Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse \r\n" + "End If\r\n" + "RenderObject.Height = Document.Tags!TaskHeight.Value"; raNotes.Style.Borders.All = LineDef.Default; raNotes.Style.Spacing.Top = "0.5mm"; raNotes.Style.Spacing.Left = "0.5mm"; raNotes.Width = "100%"; rt = new RenderText(); rt.Text = "Notes"; rt.Style.Padding.Left = "2mm"; rt.Style.Borders.Bottom = LineDef.Default; raNotes.Children.Add(rt); RenderTable lines = new RenderTable(); lines.Rows.Insert(0, 1); lines.Rows[0].Height = "0.5cm"; TableVectorGroup gr = lines.RowGroups[0, 1]; gr.Header = TableHeaderEnum.None; List<int> lst = new List<int>(60); for (int i = 0; i < 60; i++) { lst.Add(i); } gr.DataBinding.DataSource = lst; lines.Style.GridLines.Horz = LineDef.Default; lines.RowSizingMode = TableSizingModeEnum.Fixed; raNotes.Children.Add(lines); include.Children.Add(raNotes); raPage.Children.Add(include); #endregion doc.Body.Children.Add(raPage); AddCommonTags(doc); Tag newTag = new Tag("Appointments", null, typeof(IList<Appointment>)); newTag.ShowInDialog = false; newTag.SerializeValue = false; doc.Tags.Add(newTag); newTag = new Tag("WeekNumber", null, typeof(List<DateTime>)); newTag.SerializeValue = false; newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("DayHours", null, typeof(Dictionary<DateTime, DateTime>)); newTag.SerializeValue = false; newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("MonthCalendar", null, typeof(DateTime)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("StartDate", DateTime.Today, typeof(DateTime)); newTag.InputParams = new TagDateTimeInputParams(); doc.Tags.Add(newTag); newTag = new Tag("EndDate", DateTime.Today.AddDays(1), typeof(DateTime)); newTag.InputParams = new TagDateTimeInputParams(); doc.Tags.Add(newTag); newTag = new Tag("StartTime", DateTime.Today.AddHours(7), typeof(DateTime)); newTag.InputParams = new TagDateTimeInputParams(); ((TagDateTimeInputParams)newTag.InputParams).Format = DateTimePickerFormat.Time; doc.Tags.Add(newTag); newTag = new Tag("EndTime", DateTime.Today.AddHours(19), typeof(DateTime)); newTag.InputParams = new TagDateTimeInputParams(); ((TagDateTimeInputParams)newTag.InputParams).Format = DateTimePickerFormat.Time; doc.Tags.Add(newTag); newTag = new Tag("HidePrivateAppointments", false, typeof(bool)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("TaskHeight", new Unit("33.3%"), typeof(Unit)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("SlotAppointments", null, typeof(List<Appointment>)); newTag.SerializeValue = false; newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("IncludeTasks", false, typeof(bool)); newTag.ShowInDialog = true; newTag.InputParams = new TagBoolInputParams(); newTag.Description = "Include Tasks"; doc.Tags.Add(newTag); newTag = new Tag("IncludeBlankNotes", false, typeof(bool)); newTag.ShowInDialog = true; newTag.InputParams = new TagBoolInputParams(); newTag.Description = "Include Notes (blank)"; doc.Tags.Add(newTag); newTag = new Tag("IncludeLinedNotes", false, typeof(bool)); newTag.ShowInDialog = true; newTag.InputParams = new TagBoolInputParams(); newTag.Description = "Include Notes (lined)"; doc.Tags.Add(newTag); }
/// <summary> /// Fills specified control with a Details style. /// </summary> /// <param name="doc"></param> public static void MakeDetails(C1PrintDocument doc) { doc.Clear(); doc.DocumentInfo.Title = "Details style"; doc.DocumentInfo.Subject = "Details"; AddNamespaces(doc); AddHeadersFooters(doc); doc.Tags["FooterRight"].Value = "[GeneratedDateTime]"; doc.DocumentStartingScript += "If Tags!InsertPageBreaks.Value And Tags!PageBreak.Value <> \"Day\" Then \r\n" + " If Tags.IndexByName(\"LastDate\") = -1 Then\r\n" + " Dim tag As Tag\r\n" + " tag = New Tag(\"LastDate\", Tags!StartDate.Value.Date)\r\n" + " Tags.Add(tag)\r\n" + " Else\r\n" + " Tags!LastDate.Value = Tags!StartDate.Value.Date\r\n" + " End If\r\n" + "End If\r\n" + "Dim dateAppointments As New DateAppointmentsCollection(Tags!StartDate.Value, Tags!EndDate.Value, Tags!Appointments.Value, false)\r\n" + "If Tags.IndexByName(\"DateAppointments\") = -1 Then\r\n" + " Dim tagApps As Tag\r\n" + " tagApps = New Tag(\"DateAppointments\", dateAppointments)\r\n" + " tagApps.SerializeValue = False\r\n" + " Tags.Add(tagApps)\r\n" + "Else\r\n" + " Tags!DateAppointments.Value = dateAppointments\r\n" + "End If"; // RenderArea representing the single day RenderArea ra1 = new RenderArea(); ra1.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value"); ra1.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); ra1.FormatDataBindingInstanceScript = "If Tags!InsertPageBreaks.Value Then\r\n" + " Dim newDate as DateTime\r\n" + " newDate = RenderObject.Original.DataBinding.Fields!Date.Value\r\n" + " Select Case Tags!PageBreak.Value\r\n" + " Case \"Week\"\r\n" + " Dim tmp as DateTime\r\n" + " tmp = Tags!LastDate.Value.Date.AddDays(1)\r\n" + " While tmp <= newDate\r\n" + " If tmp.DayOfWeek = Tags!CalendarInfo.Value.WeekStart Then\r\n" + " RenderObject.BreakBefore = BreakEnum.Page\r\n" + " Exit While\r\n" + " End If\r\n" + " tmp = tmp.AddDays(1)\r\n" + " End While\r\n" + " Case \"Month\"\r\n" + " If Tags!LastDate.Value.Month <> newDate.Month Then\r\n" + " RenderObject.BreakBefore = BreakEnum.Page\r\n" + " End If\r\n" + " Case Else\r\n" + " RenderObject.BreakBefore = BreakEnum.Page\r\n" + " End Select\r\n" + " Tags!LastDate.Value = newDate\r\n" + "End If"; ra1.Style.Spacing.All = "1mm"; // day header RenderText rt = new RenderText("[String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:D}\", Fields!Date.Value)]"); rt.FormatDataBindingInstanceScript = "RenderObject.Style.Font = Document.Tags!DateHeadingsFont.Value"; rt.Style.Borders.All = LineDef.Default; rt.Style.Padding.All = "2mm"; rt.Style.BackColor = Colors.LightGray; ra1.Children.Add(rt); // RenderArea tepresenting the single appointment RenderArea raApp = new RenderArea(); raApp.Style.Spacing.All = "2mm"; raApp.Stacking = StackingRulesEnum.InlineLeftToRight; // Set the text's data source to the data source of the containing RenderArea - this indicates that the render object is bound to the current group in the specified object: raApp.DataBinding.DataSource = new Expression("Parent.Fields!Appointments.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value"); rt = new RenderText(); rt.Text = "[IIf(Fields!AllDayEvent.Value, \"All Day\", String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t} - {1:t}\", " + "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, DataBinding.Parent.Fields!Date.Value, Fields!Start.Value), " + "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value.AddDays(1)), CDate(Fields!End.Value)) > 0, DataBinding.Parent.Fields!Date.Value.AddDays(1), Fields!End.Value)))]"; rt.Width = "25%"; rt.Style.FontBold = true; raApp.Children.Add(rt); RenderArea appDetails = new RenderArea(); appDetails.Width = "75%"; appDetails.Stacking = StackingRulesEnum.InlineLeftToRight; RenderText rt1 = new RenderText(); rt1.Text = "[Fields!Subject.Value] "; rt1.Style.FontBold = true; rt1.Width = "Auto"; appDetails.Children.Add(rt1); rt1 = new RenderText(); rt1.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt1.Text = "[\"-- \" & Fields!Location.Value]"; rt1.Style.FontBold = true; rt1.Width = "Auto"; appDetails.Children.Add(rt1); rt1 = new RenderText(); rt1.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Body.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse) \r\n" + "RenderObject.BreakBefore = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Subject.Value & RenderObject.Original.DataBinding.Parent.Fields!Location.Value), BreakEnum.Line, BreakEnum.None)"; rt1.Text = "[Fields!Body.Value]"; appDetails.Children.Add(rt1); rt1 = new RenderText(); rt1.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(DateDiff(DateInterval.Second, CDate(RenderObject.Original.DataBinding.Parent.Parent.Fields!Date.Value), CDate(RenderObject.Original.DataBinding.Parent.Fields!Start.Value)) < 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt1.Text = "[\"Please See Above\"]"; rt1.Style.FontBold = true; rt1.BreakBefore = BreakEnum.Line; appDetails.Children.Add(rt1); raApp.Children.Add(appDetails); ra1.Children.Add(raApp); doc.Body.Children.Add(ra1); AddCommonTags(doc); Tag newTag = new Tag("Appointments", null, typeof(IList<Appointment>)); newTag.ShowInDialog = false; newTag.SerializeValue = false; doc.Tags.Add(newTag); newTag = new Tag("StartDate", DateTime.Today, typeof(DateTime)); newTag.InputParams = new TagDateTimeInputParams(); doc.Tags.Add(newTag); newTag = new Tag("EndDate", DateTime.Today.AddDays(1), typeof(DateTime)); newTag.InputParams = new TagDateTimeInputParams(); doc.Tags.Add(newTag); newTag = new Tag("InsertPageBreaks", false, typeof(Boolean)); newTag.Description = "Start a new page each"; doc.Tags.Add(newTag); newTag = new Tag("PageBreak", "Day", typeof(string)); newTag.Description = ""; newTag.InputParams = new TagListInputParams(TagListInputParamsTypeEnum.ComboBox, new TagListInputParamsItem("Day", "Day"), new TagListInputParamsItem("Week", "Week"), new TagListInputParamsItem("Month", "Month")); doc.Tags.Add(newTag); newTag = new Tag("HidePrivateAppointments", false, typeof(bool)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); }
/// <summary> /// Fills specified control with a Memo style. /// </summary> /// <param name="doc"></param> public static void MakeMemo(C1PrintDocument doc) { doc.Clear(); doc.DocumentInfo.Title = "Memo style"; doc.DocumentInfo.Subject = "Memo"; AddNamespaces(doc); AddHeadersFooters(doc); doc.Tags["AppointmentsFont"].Value = new Font("Arial", 10); // add string tags (localizable) Tag newTag = new Tag("Subject", "Subject:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("Location", "Location:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("Start", "Start:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("End", "End:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("ShowTimeAs", "Show Time As:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("Recurrence", "Recurrence:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("None", "none", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("Categories", "Categories:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("Resources", "Resources:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("Contacts", "Contacts:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("Importance", "Importance:", typeof(string)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); RenderArea ra = new RenderArea(); ra.Width = "100%"; ra.BreakBefore = BreakEnum.Page; ra.DataBinding.DataSource = new Expression("Document.Tags!Appointments.Value"); ra.DataBinding.Sorting.Expressions.Add("Fields!Start.Value"); ra.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value"); ra.Style.Borders.Top = LineDef.DefaultBold; ra.Stacking = StackingRulesEnum.InlineLeftToRight; ra.Style.Padding.Top = "1mm"; ra.Style.Spacing.All = "1mm"; RenderText rt = new RenderText(); rt.FormatDataBindingInstanceScript = //VisibilityEnum "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Parent.Original.DataBinding.Fields!Subject.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Document.Tags!Subject.Value]"; rt.Width = "25%"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Parent.Original.DataBinding.Fields!Subject.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Fields!Subject.Value]"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Parent.Original.DataBinding.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Document.Tags!Location.Value]"; rt.Width = "25%"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Parent.Original.DataBinding.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Fields!Location.Value]"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.Text = "[Document.Tags!Start.Value]"; rt.Width = "25%"; rt.Style.Padding.Top = "2mm"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.Text = "[String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:ddd} {1:g}\", Fields!Start.Value, Fields!Start.Value)]"; rt.Width = "75%"; rt.Style.Padding.Top = "2mm"; ra.Children.Add(rt); rt = new RenderText(); rt.Text = "[Document.Tags!End.Value]"; rt.Width = "25%"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.Text = "[String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:ddd} {1:g}\", Fields!End.Value, Fields!End.Value)]"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.Text = "[Document.Tags!ShowTimeAs.Value]"; rt.Width = "25%"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.Text = "[Fields!BusyStatus.Value.Text]"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.Text = "[Document.Tags!Recurrence.Value]"; rt.Width = "25%"; rt.Style.Padding.Top = "2mm"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "Dim index as Integer = RenderObject.Parent.Original.DataBinding.RowNumber - 1 \r\n" + "Dim app As Appointment = Document.Tags!Appointments.Value(index)\r\n" + "Dim text As RenderText = RenderObject\r\n" + "If app.RecurrenceState <> RecurrenceStateEnum.NotRecurring Then\r\n" + " text.Text = app.GetRecurrencePattern().Description\r\n" + "Else\r\n" + " text.Text = Document.Tags!None.Value\r\n" + "End If"; rt.Style.Padding.Top = "2mm"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Links.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Links.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Document.Tags!Contacts.Value]"; rt.Style.Padding.Top = "2mm"; rt.Width = "25%"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Links.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Links.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Fields!Links.Value.ToString()]"; rt.Style.Padding.Top = "2mm"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Categories.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Categories.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Document.Tags!Categories.Value]"; rt.Style.Padding.Top = "2mm"; rt.Width = "25%"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Categories.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Categories.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Fields!Categories.Value.ToString()]"; rt.Style.Padding.Top = "2mm"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Resources.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Resources.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Document.Tags!Resources.Value]"; rt.Width = "25%"; rt.Style.Padding.Top = "2mm"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf((Not (RenderObject.Parent.Original.DataBinding.Fields!Resources.Value Is Nothing)) And RenderObject.Parent.Original.DataBinding.Fields!Resources.Value.Count > 0, VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Fields!Resources.Value.ToString()]"; rt.Style.Padding.Top = "2mm"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not (RenderObject.Parent.Original.DataBinding.Fields!Importance.Value = 1), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[Document.Tags!Importance.Value]"; rt.Style.Padding.Top = "2mm"; rt.Width = "25%"; rt.Style.FontBold = true; ra.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not (RenderObject.Parent.Original.DataBinding.Fields!Importance.Value = 1), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Style.Padding.Top = "2mm"; rt.Text = "[Fields!Importance.Value.ToString()]"; rt.Width = "75%"; ra.Children.Add(rt); rt = new RenderText(); rt.Text = "[Fields!Body.Value.ToString()]"; rt.Style.Padding.Top = "3mm"; rt.Style.Padding.Right = "2mm"; rt.Width = "100%"; ra.Children.Add(rt); doc.Body.Children.Add(ra); AddCommonTags(doc); newTag = new Tag("Appointments", null, typeof(IList<Appointment>)); newTag.ShowInDialog = false; newTag.SerializeValue = false; doc.Tags.Add(newTag); }
/// <summary> /// Fills specified control with a Month style. /// </summary> /// <param name="doc"></param> public static void MakeMonth(C1PrintDocument doc) { doc.Clear(); doc.DocumentInfo.Title = "Monthly style"; doc.DocumentInfo.Subject = "Month"; AddNamespaces(doc); AddHeadersFooters(doc); doc.PageLayout.PageSettings.Landscape = true; doc.Tags["FooterRight"].Value = "[GeneratedDateTime]"; doc.Tags["DateHeadingsFont"].Value = new Font("Segoe UI", 20, FontStyle.Bold); doc.DocumentStartingScript += "Dim daysNumber As Long = 7.0 \r\n" + "If Document.Tags!WorkDaysOnly.Value Then\r\n" + " daysNumber = Document.Tags!CalendarInfo.Value.WorkDays.Count \r\n" + "End If\r\n" + "Document.Tags!DayWidth.Value = New Unit((97.3/daysNumber - 0.005).ToString(\"#.###\", System.Globalization.CultureInfo.InvariantCulture) & \"%\") \r\n" + "Dim tasksNumber As Integer = 0 \r\n" + "If Document.Tags!IncludeTasks.Value Then\r\n" + " tasksNumber = tasksNumber + 1 \r\n" + "End If\r\n" + "If Document.Tags!IncludeBlankNotes.Value Then\r\n" + " tasksNumber = tasksNumber + 1 \r\n" + "End If\r\n" + "If Document.Tags!IncludeLinedNotes.Value Then\r\n" + " tasksNumber = tasksNumber + 1 \r\n" + "End If\r\n" + "If tasksNumber = 1 Then\r\n" + " Document.Tags!TaskHeight.Value = New Unit(\"100%\")\r\n" + "ElseIf tasksNumber = 2 Then\r\n" + " Document.Tags!TaskHeight.Value = New Unit(\"50%\")\r\n" + "Else\r\n" + " Document.Tags!TaskHeight.Value = New Unit(\"33.3%\")\r\n" + "End If\r\n" + "Dim startT As DateTime = Tags!StartDate.Value \r\n" + "Dim endT As DateTime = Tags!EndDate.Value \r\n" + "While startT.DayOfWeek <> Tags!CalendarInfo.Value.WeekStart \r\n" + " startT = startT.AddDays(-1)\r\n" + "End While\r\n" + "Dim days As Long = DateDiff(DateInterval.Day, startT, endT )\r\n" + "endT = endT.AddDays(35 - (days Mod 35))\r\n" + "Dim months As New List(Of Date)\r\n" + "Dim s As DateTime = startT\r\n" + "While s < endT\r\n" + " months.Add(s)\r\n" + " s = s.AddDays(35)\r\n" + "End While\r\n" + "If Tags.IndexByName(\"Months\") = -1 Then\r\n" + " Dim tagMonths As Tag\r\n" + " tagMonths = New Tag(\"Months\", months)\r\n" + " tagMonths.SerializeValue = False\r\n" + " Tags.Add(tagMonths)\r\n" + "Else\r\n" + " Tags!Months.Value = months\r\n" + "End If\r\n" + "\r\n" + "Dim dateAppointments As New DateAppointmentsCollection(startT, endT, Tags!Appointments.Value, Tags!CalendarInfo.Value, True, Not Tags!WorkDaysOnly.Value)\r\n" + "If Tags.IndexByName(\"DateAppointments\") = -1 Then\r\n" + " Dim tagApps As Tag\r\n" + " tagApps = New Tag(\"DateAppointments\", dateAppointments)\r\n" + " tagApps.SerializeValue = False\r\n" + " Tags.Add(tagApps)\r\n" + "Else\r\n" + " Tags!DateAppointments.Value = dateAppointments\r\n" + "End If\r\n"; // RenderArea representing the single page RenderArea raPage = new RenderArea(); raPage.DataBinding.DataSource = new Expression("Document.Tags!Months.Value"); raPage.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); raPage.BreakBefore = BreakEnum.Page; raPage.Width = "100%"; raPage.Height = "100%"; raPage.Stacking = StackingRulesEnum.InlineLeftToRight; #region ** month header // month header RenderArea raMonthHeader = new RenderArea(); raMonthHeader.Style.Borders.All = LineDef.Default; raMonthHeader.Width = "100%"; raMonthHeader.Height = "28mm"; raMonthHeader.Stacking = StackingRulesEnum.InlineLeftToRight; RenderText rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Style.Font = Document.Tags!DateHeadingsFont.Value\r\n" + "Dim rt As RenderText = RenderObject\r\n" + "Dim startDate As Date = RenderObject.Original.Parent.Parent.DataBinding.Fields!Date.Value\r\n" + "Dim endDate As Date = startDate.AddDays(34)\r\n" + "Dim txt As String = startDate.ToString(\"MMMM\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" + "If startDate.Year <> endDate.Year Then\r\n" + " txt = txt & \" \" & startDate.ToString(\"yyy\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" + "End If\r\n" + "txt = txt & \" - \" & endDate.ToString(\"MMMM yyy\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" + "rt.Text = txt\r\n" + "Document.Tags!WeekTabs.Value = New List(of Date)\r\n" + "Document.Tags!WeekTabs.Value.Add(startDate)\r\n" + "Document.Tags!WeekTabs.Value.Add(startDate.AddDays(7))\r\n" + "Document.Tags!WeekTabs.Value.Add(startDate.AddDays(14))\r\n" + "Document.Tags!WeekTabs.Value.Add(startDate.AddDays(21))\r\n" + "Document.Tags!WeekTabs.Value.Add(startDate.AddDays(28))\r\n" + "Document.Tags!MonthCalendars.Value = New List(of Date)\r\n" + "startDate = New Date(startDate.Year, startDate.Month, 1)\r\n" + "While startDate <= endDate\r\n" + " Document.Tags!MonthCalendars.Value.Add(startDate)\r\n" + " startDate = startDate.AddMonths(1)\r\n" + "End While"; rt.Style.TextAlignVert = AlignVertEnum.Center; rt.Style.Spacing.Left = "2mm"; rt.Height = "100%"; rt.Width = "parent.Width - 102mm"; raMonthHeader.Children.Add(rt); RenderArea monthCalendar = new RenderArea(); monthCalendar.DataBinding.DataSource = new Expression("Document.Tags!MonthCalendars.Value"); monthCalendar.Stacking = StackingRulesEnum.InlineLeftToRight; monthCalendar.Style.Spacing.Left = "1mm"; monthCalendar.Style.Spacing.Right = "1mm"; monthCalendar.Style.Spacing.Top = "0.5mm"; monthCalendar.Width = "34mm"; rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"MMMM yyy\", Document.Tags!CalendarInfo.Value.CultureInfo)]"); rt.FormatDataBindingInstanceScript = "Dim startDate As Date = RenderObject.Original.Parent.DataBinding.Fields!Date.Value\r\n" + "Dim endDate As Date = startDate.AddMonths(1).AddDays(-1)\r\n" + "While startDate.DayOfWeek <> Document.Tags!CalendarInfo.Value.WeekStart \r\n" + " startDate = startDate.AddDays(-1)\r\n" + "End While\r\n" + "Document.Tags!WeekNumber.Value = New List(of Date)\r\n" + "While startDate <= endDate\r\n" + " Document.Tags!WeekNumber.Value.Add(startDate)\r\n" + " startDate = startDate.AddDays(7)\r\n" + "End While"; rt.Style.TextAlignHorz = AlignHorzEnum.Center; rt.Style.Font = new Font("Segoe UI", 8); rt.Width = "100%"; monthCalendar.Children.Add(rt); rt = new RenderText(" "); rt.Style.Font = new Font("Arial", 7f); rt.Style.WordWrap = false; rt.Width = "12.5%"; monthCalendar.Children.Add(rt); rt = new RenderText("[Document.Tags!CalendarInfo.Value.CultureInfo.DateTimeFormat.GetShortestDayName(CDate(Fields!Date.Value).DayOfWeek)]"); rt.DataBinding.DataSource = new Expression("New DateAppointmentsCollection(Document.Tags!WeekNumber.Value(0), Document.Tags!WeekNumber.Value(0).AddDays(6), Document.Tags!Appointments.Value, True)"); rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); rt.Style.Borders.Bottom = LineDef.Default; rt.Style.Font = new Font("Arial", 7f); rt.Style.TextAlignHorz = AlignHorzEnum.Center; rt.Style.WordWrap = false; rt.Width = "12.5%"; monthCalendar.Children.Add(rt); RenderArea raWeek = new RenderArea(); raWeek.DataBinding.DataSource = new Expression("Document.Tags!WeekNumber.Value"); raWeek.Style.Font = new Font("Arial", 7f); raWeek.Width = "100%"; raWeek.Stacking = StackingRulesEnum.InlineLeftToRight; rt = new RenderText("[Document.Tags!CalendarInfo.Value.CultureInfo.Calendar.GetWeekOfYear(CDate(Fields!Date.Value), System.Globalization.CalendarWeekRule.FirstDay, Document.Tags!CalendarInfo.Value.WeekStart)]"); rt.Style.Borders.Right = LineDef.Default; rt.Style.TextAlignHorz = AlignHorzEnum.Right; rt.Style.WordWrap = false; rt.Width = "12.5%"; raWeek.Children.Add(rt); rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"%d\", Document.Tags!CalendarInfo.Value.CultureInfo)]"); rt.DataBinding.DataSource = new Expression("New DateAppointmentsCollection(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value).AddDays(6), Document.Tags!Appointments.Value, True)"); rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); rt.FormatDataBindingInstanceScript = "If RenderObject.Original.DataBinding.Fields!Date.Value.Month <> RenderObject.Original.Parent.Parent.DataBinding.Fields!Date.Value.Month Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Hidden\r\n" + "Else If RenderObject.Original.DataBinding.Fields!HasAppointments.Value Then\r\n" + " RenderObject.Style.FontBold = true\r\n" + "End If"; rt.Style.TextAlignHorz = AlignHorzEnum.Right; rt.Width = "12.5%"; raWeek.Children.Add(rt); monthCalendar.Children.Add(raWeek); raMonthHeader.Children.Add(monthCalendar); raPage.Children.Add(raMonthHeader); #endregion #region ** month // month RenderArea raMonth = new RenderArea(); raMonth.FormatDataBindingInstanceScript = "If Not (Document.Tags!IncludeTasks.Value Or Document.Tags!IncludeBlankNotes.Value Or Document.Tags!IncludeLinedNotes.Value) Then\r\n" + " RenderObject.Width = \"100%\" \r\n" + "End If"; raMonth.Style.Spacing.Top = "0.5mm"; raMonth.Style.Borders.Top = LineDef.Default; raMonth.Style.Borders.Left = LineDef.Default; raMonth.Style.Borders.Bottom = LineDef.Default; raMonth.Width = "80%"; raMonth.Height = "parent.Height - 28mm"; raMonth.Stacking = StackingRulesEnum.InlineLeftToRight; rt = new RenderText(" "); rt.Style.WordWrap = false; rt.Height = "4%"; rt.Style.TextAngle = 90; rt.Width = "2.7%"; raMonth.Children.Add(rt); rt = new RenderText("[CDate(Fields!Date.Value).ToString(\"dddd\", Document.Tags!CalendarInfo.Value.CultureInfo)]"); rt.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value).AddDays(6))"); rt.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); rt.FormatDataBindingInstanceScript = "RenderObject.Width = Document.Tags!DayWidth.Value"; rt.Style.Borders.Bottom = LineDef.Default; rt.Style.Borders.Right = LineDef.Default; rt.Style.TextAlignHorz = AlignHorzEnum.Center; rt.Style.WordWrap = false; rt.Height = "4%"; raMonth.Children.Add(rt); RenderArea raWeekTab = new RenderArea(); raWeekTab.DataBinding.DataSource = new Expression("Document.Tags!WeekTabs.Value"); raWeekTab.Height = "19.2%"; raWeekTab.Width = "100%"; raWeekTab.Stacking = StackingRulesEnum.InlineLeftToRight; rt = new RenderText(); rt.FormatDataBindingInstanceScript = "Dim txt As RenderText = RenderObject\r\n" + "Dim start As Date = RenderObject.Parent.Original.DataBinding.Fields!Date.Value\r\n" + "Dim endT As Date = start.AddDays(6)\r\n" + "If start.Month = endT.Month Then \r\n" + " txt.Text = start.ToString(\"%d\", Document.Tags!CalendarInfo.Value.CultureInfo) & \" - \" & endT.ToString(\"d.MM\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" + "Else\r\n" + " txt.Text = start.ToString(\"d.MM\", Document.Tags!CalendarInfo.Value.CultureInfo) & \" - \" & endT.ToString(\"d.MM\", Document.Tags!CalendarInfo.Value.CultureInfo)\r\n" + "End If"; rt.Style.Borders.Right = LineDef.Default; rt.Style.FontBold = true; rt.Style.TextAngle = 90; rt.Style.TextAlignHorz = AlignHorzEnum.Center; rt.Style.WordWrap = false; rt.Height = "100%"; rt.Width = "2.7%"; raWeekTab.Children.Add(rt); // RenderArea representing the single day RenderArea raDay = new RenderArea(); raDay.DataBinding.DataSource = new Expression("Document.Tags!DateAppointments.Value(Parent.Fields!Date.Value, CDate(Parent.Fields!Date.Value).AddDays(6))"); raDay.DataBinding.Sorting.Expressions.Add("Fields!Date.Value"); raDay.Style.Borders.Right = LineDef.Default; raDay.Style.Borders.Bottom = LineDef.Default; raDay.FormatDataBindingInstanceScript = "RenderObject.Width = Document.Tags!DayWidth.Value"; raDay.Height = "100%"; // day header rt = new RenderText("[IIF(Fields!Date.Value.Day = 1 Or CDate(Fields!Date.Value) = CDate(Document.Tags!WeekTabs.Value(0).Date), String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:m}\", Fields!Date.Value) ,Fields!Date.Value.Day)]"); rt.Style.Borders.Bottom = LineDef.Default; rt.Style.Padding.Left = "1mm"; rt.Style.FontBold = true; rt.Style.BackColor = Colors.White; rt.Style.TextAlignHorz = AlignHorzEnum.Left; rt.Style.WordWrap = false; raDay.Children.Add(rt); RenderText status = new RenderText(" "); status.FormatDataBindingInstanceScript = "If IsNothing(RenderObject.Original.DataBinding.Parent.Fields!BusyStatus.Value) Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse\r\n" + "Else \r\n" + " RenderObject.Style.Brush = RenderObject.Original.DataBinding.Parent.Fields!BusyStatus.Value.Brush.Brush \r\n" + "End If"; status.Width = "100%"; status.Height = "1.5mm"; raDay.Children.Add(status); RenderArea appointments = new RenderArea(); appointments.Height = "parent.Height - Y - 2.5mm"; // RenderArea representing the single appointment RenderArea raApp = new RenderArea(); raApp.Style.Spacing.All = "0.2mm"; raApp.FormatDataBindingInstanceScript = "If RenderObject.Original.DataBinding.Fields!AllDayEvent.Value Then\r\n" + " RenderObject.Style.Borders.All = LineDef.Default\r\n" + "End If\r\n" + "If Not IsNothing(RenderObject.Original.DataBinding.Fields!Label.Value) Then\r\n" + " RenderObject.Style.Brush = CType(RenderObject.Original.DataBinding.Fields!Label.Value, Label).Brush.Brush\r\n" + "End If"; raApp.Stacking = StackingRulesEnum.InlineLeftToRight; raApp.Height = "14pt"; // Set the text's data source to the data source of the containing RenderArea - this indicates that the render object is bound to the current group in the specified object: raApp.DataBinding.DataSource = new Expression("Parent.Fields!Appointments.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Start.Value"); raApp.DataBinding.Sorting.Expressions.Add("Fields!Subject.Value"); rt = new RenderText(); rt.Style.WordWrap = false; rt.Text = "[IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, \"> \", String.Empty) & " + "IIf(Fields!AllDayEvent.Value, \"\", String.Format(Document.Tags!CalendarInfo.Value.CultureInfo, \"{0:t}\", " + "IIf(DateDiff(DateInterval.Second, CDate(DataBinding.Parent.Fields!Date.Value), CDate(Fields!Start.Value)) < 0, DataBinding.Parent.Fields!Date.Value, Fields!Start.Value)))] [Fields!Subject.Value]"; rt.Width = "Auto"; raApp.Children.Add(rt); rt = new RenderText(); rt.FormatDataBindingInstanceScript = "RenderObject.Visibility = IIf(Not String.IsNullOrEmpty(RenderObject.Original.DataBinding.Parent.Fields!Location.Value), VisibilityEnum.Visible, VisibilityEnum.Collapse)"; rt.Text = "[\" (\" & Fields!Location.Value & \")\"]"; rt.Style.WordWrap = false; rt.Width = "Auto"; raApp.Children.Add(rt); appointments.Children.Add(raApp); raDay.Children.Add(appointments); RenderArea overflowArea = new RenderArea(); overflowArea.Name = "overflow"; RenderText arrow = new RenderText(new string((char)0x36, 1), new Font("Webdings", 10)); arrow.Style.Padding.Top = "-1.5mm"; arrow.X = "parent.Width - 4mm"; overflowArea.Children.Add(arrow); overflowArea.ZOrder = 100; overflowArea.Height = "2.5mm"; overflowArea.FragmentResolvedScript = "if (C1PrintDocument.FormatVersion.AssemblyVersion.MinorRevision <> 100) Then\r\n" + " Dim fragment As RenderFragment = RenderFragment.Parent.Children(2)\r\n" + " If (fragment.HasChildren) Then\r\n" + " If (RenderFragment.Parent.BoundsOnPage.Contains(fragment.Children(fragment.Children.Count - 1).BoundsOnPage)) Then\r\n" + " RenderFragment.RenderObject.Visibility = VisibilityEnum.Hidden\r\n" + " else\r\n" + " RenderFragment.RenderObject.Visibility = VisibilityEnum.Visible\r\n" + " end if\r\n" + " else\r\n" + " RenderFragment.RenderObject.Visibility = VisibilityEnum.Hidden\r\n" + " end if\r\n" + "else\r\n" + " RenderFragment.RenderObject.Visibility = VisibilityEnum.Hidden\r\n" + "end if"; raDay.Children.Add(overflowArea); raWeekTab.Children.Add(raDay); raMonth.Children.Add(raWeekTab); raPage.Children.Add(raMonth); #endregion #region ** tasks // tasks RenderArea include = new RenderArea(); include.FormatDataBindingInstanceScript = "If Document.Tags!IncludeTasks.Value Or Document.Tags!IncludeBlankNotes.Value Or Document.Tags!IncludeLinedNotes.Value Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Visible \r\n" + "Else\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse \r\n" + "End If"; include.Width = "20%"; include.Height = "parent.Height - 28mm"; RenderArea raTasks = new RenderArea(); raTasks.FormatDataBindingInstanceScript = "If Not Document.Tags!IncludeTasks.Value Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse \r\n" + "End If\r\n" + "RenderObject.Height = Document.Tags!TaskHeight.Value"; raTasks.Style.Borders.All = LineDef.Default; raTasks.Style.Spacing.Top = "0.5mm"; raTasks.Style.Spacing.Left = "0.5mm"; raTasks.Width = "100%"; rt = new RenderText(); rt.Text = "Tasks"; rt.Style.Padding.Left = "2mm"; rt.Style.Borders.Bottom = LineDef.Default; raTasks.Children.Add(rt); include.Children.Add(raTasks); RenderArea raNotes = new RenderArea(); raNotes.FormatDataBindingInstanceScript = "If Not Document.Tags!IncludeBlankNotes.Value Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse \r\n" + "End If\r\n" + "RenderObject.Height = Document.Tags!TaskHeight.Value"; raNotes.Style.Borders.All = LineDef.Default; raNotes.Style.Spacing.Top = "0.5mm"; raNotes.Style.Spacing.Left = "0.5mm"; raNotes.Width = "100%"; rt = new RenderText(); rt.Text = "Notes"; rt.Style.Padding.Left = "2mm"; rt.Style.Borders.Bottom = LineDef.Default; raNotes.Children.Add(rt); include.Children.Add(raNotes); raNotes = new RenderArea(); raNotes.FormatDataBindingInstanceScript = "If Not Document.Tags!IncludeLinedNotes.Value Then\r\n" + " RenderObject.Visibility = VisibilityEnum.Collapse \r\n" + "End If\r\n" + "RenderObject.Height = Document.Tags!TaskHeight.Value"; raNotes.Style.Borders.All = LineDef.Default; raNotes.Style.Spacing.Top = "0.5mm"; raNotes.Style.Spacing.Left = "0.5mm"; raNotes.Width = "100%"; rt = new RenderText(); rt.Text = "Notes"; rt.Style.Padding.Left = "2mm"; rt.Style.Borders.Bottom = LineDef.Default; raNotes.Children.Add(rt); RenderTable lines = new RenderTable(); lines.Rows.Insert(0, 1); lines.Rows[0].Height = "0.5cm"; TableVectorGroup gr = lines.RowGroups[0, 1]; gr.Header = TableHeaderEnum.None; List<int> lst = new List<int>(60); for (int i = 0; i < 60; i++) { lst.Add(i); } gr.DataBinding.DataSource = lst; lines.Style.GridLines.Horz = LineDef.Default; lines.RowSizingMode = TableSizingModeEnum.Fixed; raNotes.Children.Add(lines); include.Children.Add(raNotes); raPage.Children.Add(include); #endregion doc.Body.Children.Add(raPage); AddCommonTags(doc); Tag newTag = new Tag("Appointments", null, typeof(IList<Appointment>)); newTag.ShowInDialog = false; newTag.SerializeValue = false; doc.Tags.Add(newTag); newTag = new Tag("WeekTabs", null, typeof(List<DateTime>)); newTag.ShowInDialog = false; newTag.SerializeValue = false; doc.Tags.Add(newTag); newTag = new Tag("WeekNumber", null, typeof(List<DateTime>)); newTag.ShowInDialog = false; newTag.SerializeValue = false; doc.Tags.Add(newTag); newTag = new Tag("MonthCalendars", null, typeof(List<DateTime>)); newTag.ShowInDialog = false; newTag.SerializeValue = false; doc.Tags.Add(newTag); newTag = new Tag("StartDate", DateTime.Today, typeof(DateTime)); newTag.InputParams = new TagDateTimeInputParams(); doc.Tags.Add(newTag); newTag = new Tag("EndDate", DateTime.Today.AddDays(1), typeof(DateTime)); newTag.InputParams = new TagDateTimeInputParams(); doc.Tags.Add(newTag); newTag = new Tag("HidePrivateAppointments", false, typeof(bool)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("TaskHeight", new Unit("33.3%"), typeof(Unit)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("DayWidth", new Unit("13.9%"), typeof(Unit)); newTag.ShowInDialog = false; doc.Tags.Add(newTag); newTag = new Tag("IncludeTasks", false, typeof(bool)); newTag.ShowInDialog = true; newTag.InputParams = new TagBoolInputParams(); newTag.Description = "Include Tasks"; doc.Tags.Add(newTag); newTag = new Tag("IncludeBlankNotes", false, typeof(bool)); newTag.ShowInDialog = true; newTag.InputParams = new TagBoolInputParams(); newTag.Description = "Include Notes (blank)"; doc.Tags.Add(newTag); newTag = new Tag("IncludeLinedNotes", false, typeof(bool)); newTag.ShowInDialog = true; newTag.InputParams = new TagBoolInputParams(); newTag.Description = "Include Notes (lined)"; doc.Tags.Add(newTag); newTag = new Tag("WorkDaysOnly", false, typeof(bool)); newTag.ShowInDialog = true; newTag.InputParams = new TagBoolInputParams(); newTag.Description = "Only Print Workdays"; doc.Tags.Add(newTag); }