2017-01-10 38 views
0

Я пишу программу, которая динамически создает счета-фактуры с использованием файлов Excel. Все работает отлично, за исключением того, что в разделе «Подробный отчет» показано много интервалов между строками, до 2 интервала. Я использую связанный ярлык для создания строк. Я читал, что использование XRRichText может помочь, но это не так. Не могли бы вы мне помочь?Динамический XtraReport дает мне много промежутков между строками в деталях

Доклад:

public partial class XtraReport1 : DevExpress.XtraReports.UI.XtraReport 
{ 
    public XtraReport1() 
    { 
     InitializeComponent(); 
    } 

    public void AddBoundLabel(String bindingMember, Rectangle bounds) 
    { 
     XRLabel label = new XRLabel(); 
     Detail.Controls.Add(label); 

     label.Font = new Font("Arial", 8); 
     label.Location = bounds.Location; 
     label.Size = bounds.Size; 
     label.DataBindings.Add("Text", null, bindingMember); 
     label.CanGrow = true; 
     label.CanShrink = true; 
     label.HeightF -= 50; 
     label.Padding = 0; 
    } 

    private void xrLabel_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
    { 
     XRRichText label = sender as XRRichText; 
     e.Cancel = true; 

     label.HeightF = 1 ; 
     label.Padding = 0; 
    } 
} 

Генерация отчетов:

private void button1_Click(object sender, EventArgs e) 

    { 
     int cantidad; 
     string codigo, descripcion; 
     double pU, pT; 
     ArrayList listBindingSource = new ArrayList(); 
     List<String> myList = dataGridView1.DataSource as List<String>; 

     for(int i = 0; i< dataGridView1.Rows.Count; i++) 
     { 
      cantidad = Convert.ToInt16(dataGridView1.Rows[i].Cells[0].Value); 
      codigo = dataGridView1.Rows[i].Cells[1].Value.ToString(); 
      descripcion = dataGridView1.Rows[i].Cells[2].Value.ToString(); 
      pU = Convert.ToDouble(dataGridView1.Rows[i].Cells[3].Value); 
      pT = Convert.ToDouble(dataGridView1.Rows[i].Cells[4].Value); 
      listBindingSource.Add(new FacturaRecord(cantidad, codigo, descripcion, pU, pT)); 
     } 

     XtraReport1 report = new XtraReport1(); 
     report.Margins = new System.Drawing.Printing.Margins(100, 100, 25, 25); 
     report.DataSource = listBindingSource; 

     report.xrLabel6.Text = String.Format("Date: {0}", dateTimePicker1.Value.ToShortDateString()); 
     report.xrLabel11.Text = String.Format("Invoice Number {0}", textBox1.Text); 
     report.xrLabel12.Text = String.Format("Total: ${0}", sum); 

     report.AddBoundLabel("cantidad", new Rectangle(100, 20, 50, 5)); 
     report.AddBoundLabel("codigo", new Rectangle(150, 20, 100, 5)); 
     report.AddBoundLabel("descripcion", new Rectangle(250, 20, 200, 5)); 
     report.AddBoundLabel("precioUnitario", new Rectangle(500, 20, 50, 5)); 
     report.AddBoundLabel("precioTotal", new Rectangle(600, 20, 50, 5)); 

     ReportPrintTool printTool = new ReportPrintTool(report); 
     printTool.ShowPreviewDialog(); 

    } 

ответ

0

Данные, связанные XtraReport делает каждую строку, используя настройки Detail Band. Настройки включают в себя не только компоненты, добавленные в диапазон деталей, но также и длину детализации. Чтобы уменьшить расстояние между строками, установите для свойства DetailBand.HeightF значение меньшее.

+0

И я предполагаю, что это идет в методе BeforePrint, правильно? –

+0

Вы можете изменить этот параметр в конструкторе XtraReport или даже в Visual Design Designer. – Uranus