PlexityHide.GTP

This is really old snippet but here’s something that might be useful

using PlexityHide.GTP;
 
public static class PlexityGridController {
    public static void ViewGrid(Grid grid) {
        List<string> columns = new List<string>();
        foreach (GridColumn column in grid.Columns) {
            columns.Add(column.Title);
        }
        //Debug("columns({0}): {1}", columns.Count, String.Join(", ", columns.ToArray()));
        List<string> nodes = new List<string>();
        foreach (GridNode node in grid.RootNodes) {
            nodes.Add(ReadAllCells(node));
        }
        //Debug("nodes({0}): {1}", nodes.Count, String.Join(", ", nodes.ToArray()));
    }
     
    public static int IndexOf(GridColumns columns, string title) {
        foreach (GridColumn column in columns) {
            if (column.Title == title) {
                return column.Index;
            }
        }
        return -1;
    }
 
    public static GridColumn AddColumn(Grid grid, CellType type, string title) {
        GridStructure structure = new GridStructure(grid);
        GridColumn column = new GridColumn(type, structure);
        column.Title = title;
        grid.Columns.Add(column);
        return column;
    }
 
    public static void MoveColumn(Grid grid, GridColumn moveable, int moveTo) {
        List<gridcolumn> columns = new List<gridcolumn>();
        for (int index = 0; index < grid.Columns.Count; index++) {
            GridColumn column = grid.Columns[index];
            if (index == moveTo) {
                columns.Add(moveable);
            }
            if (column.Title == moveable.Title) {
                continue;
            }
            columns.Add(column);
        }
        grid.Columns.Clear();
        foreach (GridColumn column in columns) {
            grid.Columns.Add(column);
        }
    }
 
    public static Cell GetCellByColumnTitle(GridNode node, string title) {
        for (int index = 0; index < node.GridControl.Columns.Count; index++) {
            Cell cell = node.GetCell(index);
            if (cell.Column.Title == title) {
                return cell;
            }
        }
        return null;
    }
     
    public static void SetCellValue(Cell cell, object @value) {
        cell.Content.Value = @value;
    }
     
    private static string ReadAllCells(GridNode node) {
        List<string> cells = new List<string>();
        int index = 0;
        bool hasMore = true;
        while (hasMore) {
            if (index > node.GridControl.Columns.Count) {
                break;
            }
            try {
                Cell cell = node.GetCell(index);
                index = index + 1;
                if (cell == null) {
                    continue;
                }
                ContentEntity content = cell.Content;
                if (content == null) {
                    continue;
                }
                object val = content.Value;
                if (val == null) {
                    continue;
                }
                cells.Add(val.ToString());
            } catch (Exception e) {
                hasMore = false;
            }
        }
        return String.Join(", ", cells.ToArray());
    }
}

Here’s how to modify the Plexity ToolTip

//Gist File: scheduling_board.cs
 
private static PlexityHide.GTP.Gantt gntJobs;
private static PlexityHide.GTP.TimeAreaOffscreenDraw gntTimeArea;
private static PlexityHide.GTP.GridNode currentNode;
private DynamicQueryAdapter dqa;
QueryExecutionDataSet qeds;
 
InitCustomCode()
{
  //Get a hold of the grid
  gntJobs = (PlexityHide.GTP.Gantt)csm.GetNativeControlReference("listPanel1.gntJobs");
   
  //Use our Event Helper Class (other gist) to remove the Epicor Native ToolTip
  cEventHelper.RemoveEventHandler(gntJobs, "OnTimeItem_Hoover");
  //Register the Hoover Event
  gntJobs.OnTimeItem_Hoover += new PlexityHide.GTP.TimeItemEvent(this.gntJobs_OnTimeItem_Hoover);
}
 
private void gntJobs_OnTimeItem_Hoover(Gantt aGantt, TimeItemEventArgs e)
{
        Erp.UI.App.MultiResourceSchedulingBoard.ListPanel lp= (Erp.UI.App.MultiResourceSchedulingBoard.ListPanel)csm.GetNativeControlReference("2a0f08ca-a115-4547-999a-e658594fa6b5");
 
        string jobNum="";
        StringBuilder sb = new StringBuilder();
        try
        {
            if (e.TimeItem != null)
            {
                Epicor.Mfg.Lib.Scheduling.taskData td =(Epicor.Mfg.Lib.Scheduling.taskData)e.TimeItem.UserReference;
                qeds.ExecutionParameter.Clear();
                qeds.ExecutionParameter.AddExecutionParameterRow("JobNum", td.JobNum , "nvarchar",false, Guid.NewGuid(),"A");
                qeds.ExecutionParameter.AddExecutionParameterRow("Assy", td.AsmNum.ToString() , "int",false, Guid.NewGuid(),"A");
                dqa.ExecuteByID("SchedBoardToolTip",qeds);
                sb.AppendLine("JobNum: " + td.JobNum);
                sb.AppendLine("Assembly: " + td.AsmNum + " - " + dqa.QueryResults.Tables["Results"].Rows[0]["JobAsmbl_Description"]);
                sb.AppendLine("Order: " +dqa.QueryResults.Tables["Results"].Rows[0]["JobProd_OrderNum"]);
                sb.AppendLine("Customer: " +dqa.QueryResults.Tables["Results"].Rows[0]["Customer_CustID"] + " - " + dqa.QueryResults.Tables["Results"].Rows[0]["Customer_Name"]);
            }
            lp.setGanttToolTip(sb.ToString());
        }
        catch(Exception ex)
        {
        }
}