DBGrid变换成HTML表格

转载 2006年05月17日 00:03:00
DBGrid变换成HTML表格
提交日期:2003-8-9  
关键词:DBGrid HTML 

///////Begin Source

function ColorToHtml(mColor: TColor): string;

begin

mColor := ColorToRGB(mColor);

Result := Format('#%.2x%.2x%.2x',

[GetRValue(mColor), GetGValue(mColor), GetBValue(mColor)]);

end; { ColorToHtml }

function StrToHtml(mStr: string; mFont: TFont = nil): string;

var

vLeft, vRight: string;

begin

Result := mStr;

Result := StringReplace(Result, '&', '&', [rfReplaceAll]);

Result := StringReplace(Result, '<', '&LT;', [rfReplaceAll]);

Result := StringReplace(Result, '>', '&GT;', [rfReplaceAll]);

if Result ='' then Result:='-';

if not Assigned(mFont) then Exit;

vLeft := Format('<FONT FACE="%s" COLOR="%s">',

[mFont.Name, ColorToHtml(mFont.Color)]);

vRight := '</FONT>';

if fsBold in mFont.Style then begin

vLeft := vLeft + '<B>';

vRight := '</B>' + vRight;

end;

if fsItalic in mFont.Style then begin

vLeft := vLeft + '<I>';

vRight := '</I>' + vRight;

end;

if fsUnderline in mFont.Style then begin

vLeft := vLeft + '<U>';

vRight := '</U>' + vRight;

end;

if fsStrikeOut in mFont.Style then begin

vLeft := vLeft + '<S>';

vRight := '</S>' + vRight;

end;

Result := vLeft + Result + vRight;

end; { StrToHtml }

function DBGridToHtmlTable(mDBGrid: TDBGrid; mStrings: TStrings;

mCaption: TCaption = ''): Boolean;

const

cAlignText: array[TAlignment] of string = ('LEFT', 'RIGHT', 'CENTER');

var

vColFormat: string;

vColText: string;

vAllWidth: Integer;

vWidths: array of Integer;

vBookmark: string;

I, J: Integer;

begin

Result := False;

if not Assigned(mStrings) then Exit;

if not Assigned(mDBGrid) then Exit;

if not Assigned(mDBGrid.DataSource) then Exit;

if not Assigned(mDBGrid.DataSource.DataSet) then Exit;

if not mDBGrid.DataSource.DataSet.Active then Exit;

vBookmark := mDBGrid.DataSource.DataSet.Bookmark;

mDBGrid.DataSource.DataSet.DisableControls;

try

J := 0;

vAllWidth := 0;

for I := 0 to mDBGrid.Columns.Count - 1 do

if mDBGrid.Columns[I].Visible then begin

Inc(J);

SetLength(vWidths, J);

vWidths[J - 1] := mDBGrid.Columns[I].Width;

Inc(vAllWidth, mDBGrid.Columns[I].Width);

end;

if J <= 0 then Exit;

mStrings.Clear;

mStrings.Add(Format('<TABLE BGCOLOR="%s" BORDER=1 WIDTH="100%%">',

[ColorToHtml(mDBGrid.Color)]));

if mCaption <> '' then

mStrings.Add(Format('<CAPTION>%s</CAPTION>', [StrToHtml(mCaption)]));

vColFormat := '';

vColText := '';

vColFormat := vColFormat + '<TR>'#13#10;

vColText := vColText + '<TR>'#13#10;

J := 0;

for I := 0 to mDBGrid.Columns.Count - 1 do

if mDBGrid.Columns[I].Visible then begin

vColFormat := vColFormat + Format(

' <TD BGCOLOR="%s" ALIGN=%s WIDTH="%d%%">DisplayText%d</TD>'#13#10,

[ColorToHtml(mDBGrid.Columns[I].Color),

cAlignText[mDBGrid.Columns[I].Alignment],

Round(vWidths[J] / vAllWidth * 100), J]);

vColText := vColText + Format(

' <TD BGCOLOR="%s" ALIGN=%s WIDTH="%d%%">%s</TD>'#13#10,

[ColorToHtml(mDBGrid.Columns[I].Title.Color),

cAlignText[mDBGrid.Columns[I].Alignment],

Round(vWidths[J] / vAllWidth * 100),

StrToHtml(mDBGrid.Columns[I].Title.Caption,

mDBGrid.Columns[I].Title.Font)]);

Inc(J);

end;

vColFormat := vColFormat + '</TR>'#13#10;

vColText := vColText + '</TR>'#13#10;

mStrings.Text := mStrings.Text + vColText;

mDBGrid.DataSource.DataSet.First;

while not mDBGrid.DataSource.DataSet.Eof do begin

J := 0;

vColText := vColFormat;

for I := 0 to mDBGrid.Columns.Count - 1 do

if mDBGrid.Columns[I].Visible then begin

vColText := StringReplace(vColText, Format('>DisplayText%d<', [J]),

Format('>%s<', [StrToHtml(mDBGrid.Columns[I].Field.DisplayText,

mDBGrid.Columns[I].Font)]),

[rfReplaceAll]);

Inc(J);

end;

mStrings.Text := mStrings.Text + vColText;

mDBGrid.DataSource.DataSet.Next;

end;

mStrings.Add('</TABLE>');

finally

mDBGrid.DataSource.DataSet.Bookmark := vBookmark;

mDBGrid.DataSource.DataSet.EnableControls;

vWidths := nil;

end;

Result := True;

end; { DBGridToHtmlTable }

///////End Source

{ uses ShellApi; }

///////Begin Demo

procedure TForm1.Button1Click(Sender: TObject);

begin

DBGridToHtmlTable(DBGrid1, Memo1.Lines, Caption);

Memo1.Lines.SaveToFile('c:.htm');

ShellExecute(Handle, nil, 'c:.htm', nil, nil, SW_SHOW);

end;

///////End Demo

Dbgrid使用技巧(下)-

Dbgrid使用技巧(下)- -                                       二、建立项目,实现功能 1.新建一项目,并为表单添加相关控件,各控件主要属性如下表: 2....
  • xiaomaoxia
  • xiaomaoxia
  • 2006年04月28日 15:59
  • 3042

设置DBGrid单元格颜色

一、设置某个单元格颜色:        if Column.FieldName=BookListNO  then   //按字段为BookListNO的列,来显示单元格颜色       begin  ...
  • 78hgdong
  • 78hgdong
  • 2009年12月13日 10:33
  • 2255

delphi DBGrid自动适应列宽(转)

比如有一个名称字段设置的长度是50,在DBGRID里面显示1条记录,这个名称只有3个字,要让DBGRID自动把这个字段的宽度缩到3个字宽。 uses Math; function D...
  • nextop88
  • nextop88
  • 2017年09月15日 11:08
  • 357

html单线表格

单线表格 单线表格 单线表格
  • wushuang5566110
  • wushuang5566110
  • 2014年05月30日 13:46
  • 5175

[Javascript]在HTML页面中动态添加表格,动态生成行的示例

"http://www.w3.org/TR/html4/loose.dtd">动态添加表格示例//CopyRight@liwei 2005/11//动态删除行的函数还没有完成。注意innerHTML里...
  • softwave
  • softwave
  • 2005年11月18日 08:47
  • 12324

在DBGrid表格控件中实现下拉表格控件

一、DBGrid网格处理的原理         Delphi提供了功能强大的DBGrid组件,以方便进行数据库应用程序设计。但是如果我们仅仅利用DBGrid组件,每一个获得焦点(Grid)只是一个简...
  • xiongmao000738
  • xiongmao000738
  • 2011年11月26日 13:00
  • 2949

jquery表格可编辑修改表格里面的值,点击td变input无刷新更新表格

td点击后变为input可以输入,更新数据,无刷新更新演示 XML/HTML Codetable border="0" cellpadding="0" cellspacing="0">        ...
  • piperzero
  • piperzero
  • 2013年09月17日 10:01
  • 5135

如何用DBGrid实现排序

我找到了使用 ADOQUERY 控件实现的方法,可做参考: 巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能 很多朋友在使用DBGrid控件时,抱怨没有点击标题栏便可自动排序的功能,...
  • zjluming
  • zjluming
  • 2014年03月07日 12:42
  • 1492

html实线边框的表格样式定义

实线边框的表格很大方,但是定义起来稍微有些麻烦的, 这个样式记住,可以套用  TABLE {  border-collapse:collapse;  border-left:solid 1 #0000...
  • henrytsu
  • henrytsu
  • 2008年12月04日 18:46
  • 3282

【Html】鼠标移动上去变色&移动上去变小手

写在前面: 我是搞设计的,
  • Abu903
  • Abu903
  • 2014年08月18日 09:38
  • 3530
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DBGrid变换成HTML表格
举报原因:
原因补充:

(最多只允许输入30个字)