【delphi开源代码栏目提醒】:以下是网学会员为您推荐的delphi开源代码-ColumnInfo.pas,希望本篇文章对您学习有所帮助。
unit ColumnInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, ValEdit,DBGrids;
type
PColumnInfo = ^TColumnInfo;
TColumnInfo = record
FieldName:string;
Caption:string;
ReadOnly:Boolean;
Visible:Boolean;
Width:Integer;
Data:TObject;
end;
TFrmColumnInfo = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
Panel3: TPanel;
ListBox1: TListBox;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
ValueListEditor1: TValueListEditor;
procedure ListBox1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure ValueListEditor1Exit(Sender: TObject);
private
FDBGrid:TDBGrid;
procedure GetAttribute(ColumnInfo:PColumnInfo);
procedure SetAttribute(ColumnInfo:PColumnInfo);
procedure SetEditStyle(KeyIndex:Integer);
procedure InitColumns(DBGrid:TDBGrid);
procedure SaveColumns;
public
property DBGrid:TDBGrid read FDBGrid write FDBGrid;
end;
var
FrmColumnInfo: TFrmColumnInfo;
implementation
{$R *.dfm}
{ TFrmColumnInfo }
procedure TFrmColumnInfo.GetAttribute(ColumnInfo:PColumnInfo);
begin
SetEditStyle(0);
SetEditStyle(2);
SetEditStyle(3);
ValueListEditor1.Values['FieldName']:=ColumnInfo.FieldName;
ValueListEditor1.Values['Caption']:=ColumnInfo.Caption;
ValueListEditor1.Values['ReadOnly']:=BoolToStr(ColumnInfo.ReadOnly,True);
ValueListEditor1.Values['Visible']:=BoolToStr(ColumnInfo.Visible,True);
ValueListEditor1.Values['Width']:=IntToStr(ColumnInfo.Width);
end;
procedure TFrmColumnInfo.InitColumns(DBGrid: TDBGrid);
var
I:Integer;
Columninfo:PColumnInfo;
begin
ListBox1.Clear;
for i:=0 to DBGrid.Columns.Count-1 do
begin
New(Columninfo);
Columninfo.Data := DBGrid.Columns[i];
Columninfo.FieldName := DBGrid.Columns[i].FieldName;
Columninfo.Caption := DBGrid.Columns[i].Title.Caption;
Columninfo.ReadOnly := DBGrid.Columns[i].ReadOnly;
Columninfo.Visible := DBGrid.Columns[i].Visible;
Columninfo.Width := DBGrid.Columns[i].Width;
ListBox1.AddItem(DBGrid.Columns[i].Title.Caption,TObject(Columninfo));
end;
if ListBox1.Items.Count > 0 then
begin
GetAttribute(PColumnInfo(ListBox1.Items.Objects[0]));
ListBox1.ItemIndex := 0;
end;
end;
procedure TFrmColumnInfo.ListBox1Click(Sender: TObject);
begin
if ListBox1.ItemIndex <> -1 then
begin
GetAttribute(PColumnInfo(ListBox1.Items.Objects[ListBox1.ItemIndex]));
end;
end;
procedure TFrmColumnInfo.SetEditStyle(KeyIndex: Integer);
var
i:Integer;
begin
case KeyIndex of
0:begin
ValueListEditor1.ItemProps[KeyIndex].EditStyle := esPickList;
ValueListEditor1.ItemProps[KeyIndex].PickList.Clear;
for i:=0 to FDBGrid.DataSource.DataSet.Fields.Count-1 do
begin
ValueListEditor1.ItemProps[KeyIndex].PickList.
Add(FDBGrid.DataSource.DataSet.Fields[i].FieldName);
end;
end;
2..3:begin
ValueListEditor1.ItemProps[KeyIndex].EditStyle := esPickList;
ValueListEditor1.ItemProps[KeyIndex].PickList.Clear;
ValueListEditor1.ItemProps[KeyIndex].PickList.Add('True');
ValueListEditor1.ItemProps[KeyIndex].PickList.Add('False');
end;
end;
end;
procedure TFrmColumnInfo.FormShow(Sender: TObject);
begin
InitColumns(FDBGrid);
end;
procedure TFrmColumnInfo.SaveColumns;
var
i:Integer;
ColumnInfo:PColumnInfo;
Column:TColumn;
begin
for i:=0 to ListBox1.Items.Count - 1 do
begin
ColumnInfo := PColumnInfo(ListBox1.Items.Objects[i]);
Column := TColumn(ColumnInfo.Data);
Column.FieldName := ColumnInfo.FieldName;
Column.Title.Caption := ColumnInfo.Caption;
Column.ReadOnly := ColumnInfo.ReadOnly;
Column.Visible := ColumnInfo.Visible;
Column.Width := ColumnInfo.Width;
end;
end;
procedure TFrmColumnInfo.SetAttribute(ColumnInfo:PColumnInfo);
begin
ColumnInfo.FieldName := ValueListEditor1.Values['FieldName'];
ColumnInfo.Caption := ValueListEditor1.Values['Caption'];
ColumnInfo.ReadOnly := StrToBool(ValueListEditor1.Values['ReadOnly']);
ColumnInfo.Visible := StrToBool(ValueListEditor1.Values['Visible']);
ColumnInfo.Width := StrToInt(ValueListEditor1.Values['Width']);
end;
procedure TFrmColumnInfo.SpeedButton2Click(Sender: TObject);
begin
Close;
end;
procedure TFrmColumnInfo.SpeedButton1Click(Sender: TObject);
begin
ValueListEditor1Exit(nil);
SaveColumns;
Close;
end;
procedure TFrmColumnInfo.ValueListEditor1Exit(Sender: TObject);
begin
if ListBox1.ItemIndex <> -1 then
begin
SetAttribute(PColumnInfo(ListBox1.Items.Objects[ListBox1.ItemIndex]));
end;
end;
end.
上一篇:
Doctor.cpp
下一篇:
临床前药物安全性评价中毒性病理学新技术的应用