1-) C# RMOS - XtraReport design kaydetme save buttonunu ovveride etme XRDesignPanel XRDesignForm
kaynak : https://docs.devexpress.com/XtraReports/2211/create-end-user-reporting-applications/winforms-reporting/end-user-report-designer/api-and-customization/override-commands-in-end-user-report-designer-implement-custom-saving
static XRDesignMdiController mdiController;
public static void MyRaporDuzenleS(string pFullPath, string pRaporAdi)
{
try
{
XRDesignForm form = new XRDesignForm();
string pSQL = dbtolls.DegerGetir(" select top 1 uRapor_sql from uRapor where uRapor_ad='" + pRaporAdi + "'");
report = new XtraReport();
if (!pSQL.Equals("-1"))
{
DataTable dt = dbtolls.SelectTable(pSQL);
if (dt != null)
{
report.DataSource = dt;
if (File.Exists(pFullPath))
{
report.LoadLayout(pFullPath);
//report.ShowDesigner();
report.Tag = pFullPath;
// aşağısı sonradan
mdiController = form.DesignMdiController;
mdiController.DesignPanelLoaded +=
new DesignerLoadedEventHandler(mdiController_DesignPanelLoaded);
mdiController.OpenReport(report);
form.ShowDialog();
if (mdiController.ActiveDesignPanel != null)
{
mdiController.ActiveDesignPanel.CloseReport();
}
}
else
{
RHMesaj.MyMessage(pFullPath + " \n Yolunda Dosya Bulunamıyor!");
}
}
}
else
{
RHMesaj.MyMessageInformation("Raporlanacak Veri Yok! Veya \\Raporlar\\" + pRaporAdi + " Bulunamıyor!");
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public static void mdiController_DesignPanelLoaded(object sender, DesignerLoadedEventArgs e)
{
XRDesignPanel panel = (XRDesignPanel)sender;
panel.AddCommandHandler(new SaveCommandHandler(panel));
}
public class SaveCommandHandler : DevExpress.XtraReports.UserDesigner.ICommandHandler
{
XRDesignPanel panel;
public SaveCommandHandler(XRDesignPanel panel)
{
this.panel = panel;
}
public void HandleCommand(DevExpress.XtraReports.UserDesigner.ReportCommand command,
object[] args)
{
// Save the report.
Save();
}
public bool CanHandleCommand(DevExpress.XtraReports.UserDesigner.ReportCommand command,
ref bool useNextHandler)
{
useNextHandler = !(command == ReportCommand.SaveFile ||
command == ReportCommand.SaveFileAs);
return !useNextHandler;
}
void Save()
{
//panel.Report.SaveLayout("C:\\cc\\report1.repx");
panel.Report.SaveLayout(panel.Report.Tag.ToString());
panel.ReportState = ReportState.Saved;
}
}