- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
{*-----------------------------------------------------------------------------
Unit Name: TopFormU
@Author Mr. Arch Brooks, Software Engineer, Brooks Computing Systems LLC
@Version 1.0
Date: 04-Jan-2014
Purpose:
History:
-----------------------------------------------------------------------------}
unit TopFormU;
interface
uses
BCSXE3Utilsdp, System.Classes, System.SysUtils, System.Variants,
TopFormdmU, Vcl.ComCtrls, Vcl.Controls, Vcl.DBCtrls, Vcl.Dialogs,
Vcl.ExtCtrls, Vcl.Forms, Vcl.Graphics, Vcl.Grids, Vcl.Menus, Vcl.StdCtrls,
Vcl.TabNotBk, Winapi.Messages, Winapi.Windows, Vcl.DBGrids;
type
/// Tab Sheet Class
TTabSheet = class(Vcl.ComCtrls.TTabSheet)
private
/// Tab Control Color
FColor: TColor;
procedure SetColor(Value: TColor);
procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd); message WM_ERASEBKGND;
public
constructor Create(aOwner: TComponent); override;
property Color: TColor read FColor write SetColor;
end;
/// TopForm Primary Class
TTopFormC = class(TForm)
/// BCS XE3 Utilities Component
BCSXE3UtilsCmp1: TBCSXE3UtilsCmp;
/// TopForm Color Dialog
TopFormColor: TColorDialog;
/// TopForm Colors Menu Item
TopFormColors1: TMenuItem;
/// TopForm DB Navigator
TopFormDBNavigator1: TDBNavigator;
/// TopForm DB Memo
TopFormDBMemo1: TDBMemo;
/// TopForm SB Grid
TopFormDBGrid1: TDBGrid;
/// BCSPageColor Main Menu
TopFormMainMenu1: TMainMenu;
/// Main Page Control
TopFormPageControl1: TPageControl;
/// Help Menu Item
TopFormHelp1: TMenuItem;
/// Status Panel For Dialog
TopFormStatusPanel1: TStatusBar;
/// Tab sheet 1 for page control
TopFormTabSheet1: TTabSheet;
/// Tab sheet 2 for page control
TopFormTabSheet2: TTabSheet;
/// Timer for Dialog
TopFormTimer1: TTimer;
procedure TopFormColors1Click(Sender: TObject);
procedure TopFormCreate(Sender: TObject);
procedure TopFormDrawTab(Control: TCustomTabControl; TabIndex: Integer;
const Rect: TRect; Active: Boolean);
procedure TopFormFormActivate(Sender: TObject);
procedure TopFormGridColor;
procedure TopFormHelp1Click(Sender: TObject);
procedure TopFormStatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
procedure TopFormTimer1Timer(Sender: TObject);
public
{Public declarations}
end;
var
/// TopForm Dialog Pointer
TopFormC: TTopFormC;
implementation
{$R *.dfm}
var
/// TimeStamp Variable
ftime: String;
/// Item Index
i: Integer;
{*-----------------------------------------------------------------------------
Procedure: Create
Date: 04-Jan-2014
@Param aOwner: TComponent
@Return None
-----------------------------------------------------------------------------}
constructor TTabSheet.Create(aOwner: TComponent);
begin
inherited;
FColor := clWhite;
end;
{*-----------------------------------------------------------------------------
Procedure: SetColor
Date: 04-Jan-2014
@Param Value: TColor
@Return None
-----------------------------------------------------------------------------}
procedure TTabSheet.SetColor(Value: TColor);
begin
if FColor <> Value then
begin
FColor := Value;
Invalidate;
end;
end;
{*-----------------------------------------------------------------------------
Procedure: WMEraseBkGnd
Date: 04-Jan-2014
@Param var Msg: TWMEraseBkGnd
@Return None
-----------------------------------------------------------------------------}
procedure TTabSheet.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
begin
if FColor = clBtnFace then
inherited
else
begin
Brush.Color := FColor;
FillRect(Msg.dc, ClientRect, Brush.Handle);
Msg.Result := 1;
end;
end;
{*-----------------------------------------------------------------------------
Procedure: TopFormColors1Click
Date: 04-Jan-2014
@Param Sender: TObject
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormC.TopFormColors1Click(Sender: TObject);
var
ti: Integer;
begin
if TopFormColor.Execute then
begin
Color := TopFormColor.Color;
TopFormTabSheet1.Color := Color;
TopFormTabSheet2.Color := Color;
TopFormDBGrid1.Color := Color;
TopFormStatusPanel1.Color := Color;
TopFormGridColor;
TopFormDBGrid1.Repaint;
end;
end;
{*-----------------------------------------------------------------------------
Procedure: TopFormCreate
Date: 04-Jan-2014
@Param Sender: TObject
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormC.TopFormCreate(Sender: TObject);
begin
Color := $C9FCFA;
TopFormTabSheet1.Color := Color;
TopFormTabSheet2.Color := Color;
TopFormStatusPanel1.Color := Color;
end;
{*-----------------------------------------------------------------------------
Procedure: TopFormDrawTab
Date: 04-Jan-2014
@Param Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect;
Active: Boolean
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormC.TopFormDrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
AText: string;
APoint: TPoint;
begin
with (Control as TPageControl).Canvas do
begin
Brush.Color := Color;
FillRect(Rect);
AText := TPageControl(Control).Pages[TabIndex].Caption;
with Control.Canvas do
begin
APoint.x := (Rect.Right - Rect.Left) div 2 - TextWidth(AText) div 2;
APoint.y := (Rect.Bottom - Rect.Top) div 2 - TextHeight(AText) div 2;
TextRect(Rect, Rect.Left + APoint.x, Rect.Top + APoint.y, AText);
end;
end;
end;
{*-----------------------------------------------------------------------------
Procedure: FormActivate
Date: 05-Jan-2014
@Param Sender: TObject
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormC.TopFormFormActivate(Sender: TObject);
begin
TopFormDBGrid1.Invalidate;
TopFormDBGrid1.Color := Color;
TopFormDBGrid1.Canvas.Brush.Color := Color;
TopFormDBGrid1.Canvas.Refresh;
TopFormGridColor;
end;
{*-----------------------------------------------------------------------------
Procedure: TopFormGridColor
Date: 05-Jan-2014
@Param None
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormC.TopFormGridColor;
begin
i := 0;
repeat
TopFormDBGrid1.Columns[i].Color := Color;
Inc(i);
until i > TopFormDBGrid1.Columns.Count - 1;
TopFormDBGrid1.Repaint;
end;
{*-----------------------------------------------------------------------------
Procedure: TopFormHelp1Click
Date: 04-Jan-2014
@Param Sender: TObject
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormC.TopFormHelp1Click(Sender: TObject);
begin
BCSXE3UtilsCmp1.ShellExec('http://bcswebs.us/bcs002/');
end;
{*-----------------------------------------------------------------------------
Procedure: TopFormStatusBar1DrawPanel
Date: 04-Jan-2014
@Param StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormC.TopFormStatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
with StatusBar.Canvas do
begin
FillRect(Rect);
case Panel.Index of
0: // fist panel
begin
Brush.Color := Color;
Font.Color := clBlack;
// Font.Style := [fsBold];
TextRect(Rect, 2 + Rect.Left, 2 + Rect.Top, Panel.Text);
end;
1: // second panel
begin
Brush.Color := Color;
Font.Color := clBlack;
// Font.Style := [fsItalic];
TextRect(Rect, 2 + Rect.Left, 2 + Rect.Top, Panel.Text);
end;
2: // Third panel
begin
Brush.Color := Color;
Font.Color := clBlack;
// Font.Style := [fsItalic];
Panel.Text := ftime;
TextRect(Rect, 2 + Rect.Left, 2 + Rect.Top, Panel.Text);
TextOut(0, 0, ftime);
end;
end;
end;
end;
{*-----------------------------------------------------------------------------
Procedure: TopFormTimer1Timer
Date: 04-Jan-2014
@Param Sender: TObject
@Return None
-----------------------------------------------------------------------------}
procedure TTopFormC.TopFormTimer1Timer(Sender: TObject);
begin
DateTimeToString(ftime, 'dddd, mmmm dd, yyyy hh:mm:ss ', now);
TopFormStatusPanel1.Panels[2].Text := ftime;
end;
end.
您可以看到行不是白色的。网格其余部分的背景为白色。如何用颜色填充白色区域?
最佳答案
要更改未被单元格占据的区域的背景颜色,您必须设置 Color
属性,但这仅在 DrawingStyle
属性具有 gdsClassic 值。因此,为了保留主题 dbgrid 并更改背景颜色,您必须重写 Paint
方法。
尝试这个使用插入器类的示例
type
TDBGrid = class(Vcl.DBGrids.TDBGrid)
protected
procedure Paint; override;
end;
TForm1 = class(TForm)
DbGrid1: TDbGrid;
....
....
{ TDBGrid }
procedure TDBGrid.Paint;
var
LDrawInfo: TGridDrawInfo;
begin
inherited Paint;
CalcDrawInfo(LDrawInfo);
if LDrawInfo.Horz.GridBoundary < LDrawInfo.Horz.GridExtent then
begin
Canvas.Brush.Color := Color; //use the Color property to paint the background
Canvas.FillRect(Rect(LDrawInfo.Horz.GridBoundary, 0, LDrawInfo.Horz.GridExtent, LDrawInfo.Vert.GridBoundary));
end;
if LDrawInfo.Vert.GridBoundary < LDrawInfo.Vert.GridExtent then
begin
Canvas.Brush.Color := Color;//use the Color property to paint the background
Canvas.FillRect(Rect(0, LDrawInfo.Vert.GridBoundary, LDrawInfo.Horz.GridExtent, LDrawInfo.Vert.GridExtent));
end;
end;
关于delphi - DBGrid XE3背景色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955216/
如何使所有网格在我的表单上看起来都相同?我想实现必须应用于项目的所有网格的备用行颜色。是否可以不为每个网格添加相同的 DrawColumnCell 事件代码?我想避免为每个网格添加相同的代码。我的项目
好的,我正在使用 DBGrid 来显示数据库中的数据。 数据库包含一个包含 11 列的表。第 4 列称为客户名称,包含客户的姓名。 我想要一个搜索框(类似于谷歌搜索栏),我可以在其中写下我想要的客户名
我从 TDBGrid 继承了一个类,我希望它能够记住特定用户对列顺序和列宽所做的任何修改。而且,我希望能够完全在网格本身内做到这一点。我不想将代码附加到 TDataSet,因为这个网格在我的应用程序中
好吧,我对 DBGrid 垂直滚动有疑问。当我用鼠标滚轮或垂直滚动条垂直滚动它时,它会上下移动选定的行。我想让它滚动的不是选定的行,而是整个网格。就像它在 Microsoft Excel 中工作一
我遇到了 Delphi 的 DBGrid 最奇怪的问题。 我注意到 有时 ,我的意思是,当我将行加载到 delphi DBGrid 中时(它是完全随机的),网格不显示数据。 相反,它显示了几个压缩行,
我有一个带有查询、数据集、可编辑 dbgrid 和 updatesql 组件的表单。当我需要保存在 dbgrid 中所做的更改时,我调用此过程: procedure TEditCardDetailFo
我在 BDS 2006 中使用了 DBGrid。它有 6 列,在运行时填充。在mysql数据库中,一列的数据类型是char(150)。因为从数据库检索到 dbgrid 时,它会占用长度,并且列会随着滚
我有一个条目网格,用户可以单击以对流程进行多项选择。根据第一个选定行的值,某些条目将无效。 我知道DBGrid.SelectedRows.CurrentRowSelected,但我找不到合适的地方来检
我得到了: ADOTable1(代码人为整数,姓名人为字符串) DataSource1(日期集是ADOTable1) DBGrid1(连接到DataSource1,Options-dgRowSelec
我想扩展 DbGrid 功能以在奇数行和偶数行上添加颜色。所以我写了这个 procedure TGridx.DrawCell(ACol, ARow: Longint; ARect: TRect; AS
我正在使用 Delphi 10.2.3 并且想要更改 DBgrid 的背景颜色。例如,我有一个文本列和一个整数列。根据文本,如果值非零,我想更改整数单元格(同一行中)的颜色。 我得到了一些想法 how
我需要获取 Delphi 中 DBGrid 的选定单元格的值。 我不知道该怎么做。我尝试了 dbGrid 的 OnMouseMove pt : TGridCoord; ... pt:=dbGrid.M
{*----------------------------------------------------------------------------- Unit Name: TopFormU
我的问题是如何在 Delphi 7 中的 dbgrid 中设置一个带有复选框项目的列。 提前致谢。 最佳答案 经我测试,最简单、最完整的方法如下: 在单元的私有(private)部分中,声明一个用于保
我正在制作一个保存订单和打印发票的应用程序。我的表单上有一些标签、编辑、tmemos、按钮、数据源、adotable、弹出菜单和 dbgrid。 当我构建程序并向下滚动 dbgrid 滚动条时,它会在
我有一个 TDBGrid。它有效,但显示的列非常大。 如何设置“自动修复列宽”? 最佳答案 所需的列宽取决于网格 Canvas 的设置和每个字段的显示文本的最大长度。 procedure FitGri
我需要格式化 DBGrid 中的值,以某种格式显示,例如 '#,##0.00'。知道如何做到这一点吗? 问候,彼得 最佳答案 您可以使用DisplayFormat要格式化的字段的属性。 检查此示例 T
是否可以在 Delphi (xe) 中自动换行 DBgrid 单元格(高度)?我有一个 dbgrid,其中包含具有固定列宽的多列,并且某些列最多有 100 个字符,我需要它们在不更改列宽的情况下适合适
有没有办法隐藏 DBGrid 上的标题行和指示器列?我找不到任何此类属性(property)。我可以通过编程来完成吗? 最佳答案 关闭(设置为 False)对象检查器中的 Options.dgTitl
使用 TImage 列表中的图像在 DBGrid 中的数据单元格上绘制字形时出现问题: 我将“复选标记”的 bmp 图像代替特定数据单元格中的文本“完成”。它有效,但细胞中未被图像覆盖的部分始终存在黑
我是一名优秀的程序员,十分优秀!