2011-08-27 152 views
0

如何以FastReport表的形式显示数据?FastReport - 如何以表格形式显示数据?

编辑

我的意思是,我想创建这样一个报表:(用表格形式)。

enter image description here

+3

你究竟想让我们开始?请透露更多您尝试过的内容,以及它如何达不到您想要看到的内容。在StackOverflow上提出的76个问题我们不应再向您询问详细信息,您应该已经知道没有人可以给出合理的答案。至少我确实假设你不指望我们在这里重复任何来自FastReport的文档或示例代码? –

+0

但我认为这个问题对于使用'FastReport'的人来说是完全清楚的。 – Kermia

+0

无论如何,我编辑了这个问题。 – Kermia

回答

1

这将有可能使用Framing备忘录的属性。

+1

Kermia,你的问题不清楚,你想用数据作为图像来建立表格,还是仅仅需要为表格中的数据绘制线条? –

3

使用FR向导

从FR文件菜单>新建>标准报表向导

当你达到“布局”页面最简单的方法,选择从布局然后确定

表格
+0

我想手动做这个。 – Kermia

2

我认为你需要自己构建网格。以下是一些构建网格布局的代码,以帮助您入门。您将需要调整列宽并添加格式化代码(memo.frame)以获得所需的外观。

procedure CreateHeader(frxDataset: TfrxDBDataSet; Page: TfrxReportPage); 
var 
    i: Integer; 
    X, Y, ThisWidth: Extended; 
    HeaderMemo: TfrxCustomMemoView; 
    Column: TcxGridDBColumn; 
begin 
    Band := TfrxPageHeader.Create(Page); 
    Band.CreateUniqueName; 
    Band.SetBounds(0, 0, 0, fr01cm * 7); 
    Band.Height := edtHeightHeader.Value; 

    HeaderMemo := CreateMemo(Band); 
    HeaderMemo.SetBounds(0, 0, PageWidth, 0); 

    // Set memo style 
    // Or just add a frame HeaderMemo.Frame.... 
    HeaderMemo.Style := 'Header line'; 

    X := 0; 
    Y := 0; 

    Memo := CreateMemo(Band); 
    Memo.SetBounds(0, Y, X, fr01cm * 6); 
    Memo.Height := Band.Height - 1; 

    for i := 0 to pred(frxDataset.Fields.Count) do 
    begin 
    ThisWidth := 100; 

    Memo := CreateMemo(Band); 
    Memo.SetBounds(X, Y, ThisWidth, fr01cm * 6); 

    Memo.Text := frxDataset.Fields[i].FieldName; 

    // Set memo style 
    // Or just add a frame HeaderMemo.Frame.... 
    Memo.Style := 'Header'; 

    Memo.Height := Band.Height - 1; 

    X := X + ThisWidth; 
    end; 

    HeaderMemo.Height := Band.Height; 
end; 

procedure CreateFastReportDataBand(frxDataset: TfrxDBDataSet; Page: TfrxReportPage); 
var 
    i: Integer; 
    X, Y, ThisWidth: Extended; 
begin 
    Band := TfrxMasterData.Create(Page); 
    Band.CreateUniqueName; 
    Band.SetBounds(0, CurY, 0, 0); 
    Band.Height := edtHeightData.Value; 

    TfrxMasterData(Band).frxDataset := frxDataset; 

    X := 0; 
    Y := 0; 

    for i := 0 to pred(frxDataset.Fields.Count) do 
    begin 
    ThisWidth := 100; 

    Memo := CreateMemo(Band); 
    Memo.SetBounds(X, Y, ThisWidth, fr01cm * 5); 
    Memo.Dataset := frxDataset; 
    Memo.DataField := frxDataset.Fields[i].FieldName; 

    // Set memo style 
    // Or just add a frame HeaderMemo.Frame.... 
    Memo.Style := 'Data'; 

    Memo.Height := Band.Height - 1; 

    X := X + ThisWidth; 
    end; 
end; 

它应该工作正常,但我已经没有机会,因为从我的应用程序去耦它来测试。