902 lines
30 KiB
ObjectPascal
902 lines
30 KiB
ObjectPascal
unit U_WindowFormdesign;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, SysUtils, Messages, Classes, Controls, StdCtrls, ComCtrls, Forms,
|
||
ExtCtrls, ComObj, DXCORE, ActiveX, cxMemo, cxButtons, Graphics, IniFiles, DBClient,
|
||
Dialogs, Menus, DB, ADODB, cxLabel, BtnEdit, RTComboBox, cxTextEdit, cxMRUEdit,
|
||
cxDBData, cxGridLevel, cxButtonEdit, cxCurrencyEdit, cxGridTableView, cxGrid,
|
||
cxGridCustomTableView, cxGraphics, cxCalendar, cxCheckBox, cxGridDBTableView,
|
||
cxGridDBBandedTableView, cxStyles, cxPc, cxGroupBox, U_cxGridCustomCss,dxSkinsCore, dxSkinWXI,dxSkinsDefaultPainters,
|
||
cxCustomData, cxClasses, cxTimeEdit, cxEdit, cxLookAndFeels,dxLayoutControl,
|
||
cxLookAndFeelPainters, cxGridCustomView, Buttons, cxDropDownEdit;
|
||
|
||
type
|
||
TWindowFormDeSign = class(TObject)
|
||
private
|
||
fFontSize: integer;
|
||
fWhatDesign: string;
|
||
fFormCaption: string;
|
||
fDllName: string;
|
||
fFormName: string;
|
||
fFormId: integer;
|
||
fIsShowColumnfilter: boolean;
|
||
ADOQueryCmd: TADOQuery;
|
||
ADOQueryTmp: TADOQuery;
|
||
client1:TClientDataSet ;
|
||
|
||
// procedure SetCxGridColumnBestWidth(cxGrid: TcxGridDBTableView);
|
||
// function SaveFormGridInfo(mCxGridView: TcxGridDBTableView; ADOCmd: TADOQuery; mdesignCode: string; mGridName: string; mGridType: integer): boolean;
|
||
// procedure SetFormOperRight(mParent: TwinControl; mRightCaptions: string);
|
||
function GetMaxId(): integer;
|
||
procedure cxGridViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
|
||
procedure cxGridViewSelectionChanged(Sender: TcxCustomGridTableView);
|
||
function InitCtrlData(mCtrl: TControl; mSql: string; mdefault: string): boolean;
|
||
procedure OpenGridDesignWin(mCxGridView: TcxGridDBTableView);
|
||
function getChgDefaultValue(mValue: string): string;
|
||
procedure dxLayoutControl1DblClick(Sender: TObject);
|
||
function getColumnRelation(tv1:TcxGridDBTableView):TclientDataSet;
|
||
procedure cxGridViewCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
|
||
public
|
||
function FormStyleInit(mForm: Tform; mFormId: integer; ADOTmp: TADOQuery; ADOQCmd: TADOQuery; mStyleCode: string = '01'; mRightCaptions: string = ''): boolean;
|
||
procedure QueryDataPlus(ADOTmp: TADOQuery);
|
||
//function IsHasDesignRight(ADOTmp: TADOQuery): boolean;
|
||
end;
|
||
|
||
const
|
||
// panel<65><6C><EFBFBD><EFBFBD>
|
||
clPanelBack = TColor($00FAF8F7);
|
||
clToolBarBack = TColor($00FAF8F7);
|
||
// <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ɫ
|
||
clFormBack = TColor($00FAF8F7);
|
||
|
||
implementation
|
||
|
||
uses
|
||
U_DataLink, U_globalVar,U_cxGridCustomSet,U_FormLayOutDesign;
|
||
|
||
/// //////////////////////////////////////////////////////
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ã<EFBFBD>
|
||
/// //////////////////////////////////////////////////////
|
||
function TWindowFormDeSign.FormStyleInit(mForm: Tform; mFormId: integer; ADOTmp: TADOQuery; ADOQCmd: TADOQuery; mStyleCode: string = '01'; mRightCaptions: string = ''): boolean;
|
||
var
|
||
i: integer;
|
||
cxStyle_GridOddRow: TcxStyle;
|
||
cxStyle_GridEvenRow: TcxStyle;
|
||
cxStyle_active: TcxStyle;
|
||
cxStyle_gridGroupBox: TcxStyle;
|
||
cxStyle_gridFoot: TcxStyle;
|
||
cxStyle_selection: TcxStyle;
|
||
mvalue: TcxStyleValues;
|
||
mCtl3D, mToolBarList: boolean;
|
||
mIsCustomBackColor: boolean;
|
||
mIsDrawGridHeader: boolean;
|
||
mdesignCode: string;
|
||
begin
|
||
ADOQueryCmd := ADOQCmd;
|
||
ADOQueryTmp := ADOTmp;
|
||
fDllName := gDllFileName;
|
||
fFormName := Tform(mForm).name;
|
||
fFormId := mFormId;
|
||
gIsCanDesign :=IsHasDesignRight(ADOTmp,PWideChar(dCode)) ;
|
||
|
||
if trim(mStyleCode) = '' then
|
||
mStyleCode := '01';
|
||
|
||
fFontSize := getSystemFontSize(ADOTmp,PWideChar(mStyleCode));
|
||
if fFontSize <= 9 then
|
||
fFontSize := 9;
|
||
|
||
mForm.Font.Size := fFontSize;
|
||
// <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ɫ
|
||
if mIsCustomBackColor then
|
||
mForm.Color := clFormBack;
|
||
|
||
for i := 0 to mForm.ComponentCount - 1 do
|
||
begin
|
||
if (fFontSize > 9) then
|
||
begin
|
||
if mForm.Components[i] is Tlabel then
|
||
begin
|
||
if Tlabel(mForm.Components[i]).Left >= fFontSize then
|
||
Tlabel(mForm.Components[i]).Left := Tlabel(mForm.Components[i]).Left - fFontSize;
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is TdatetimePicker then
|
||
begin
|
||
if TdatetimePicker(mForm.Components[i]).Width <= 90 then
|
||
TdatetimePicker(mForm.Components[i]).Width := TdatetimePicker(mForm.Components[i]).Width + ffontsize * 2;
|
||
continue;
|
||
end;
|
||
end;
|
||
if mForm.Components[i] is TcxdateEdit then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TcxdateEdit(mForm.Components[i]).ParentFont:=True;
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is TcxTextEdit then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TcxTextEdit(mForm.Components[i]).ParentFont:=True;
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is TcxButtonEdit then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TcxButtonEdit(mForm.Components[i]).ParentFont:=True;
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is TcxMemo then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TcxMemo(mForm.Components[i]).ParentFont:=True;
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is Tlabel and (mForm.Components[i].Tag=99) then
|
||
begin
|
||
Tlabel(mForm.Components[i]).Font.Size:=fFontSize;
|
||
Tlabel(mForm.Components[i]).Font.Name:=mForm.Font.Name ;
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is TToolBar then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TToolBar(mForm.Components[i]).ParentFont:=True;
|
||
TToolBar(mForm.Components[i]).AutoSize := true;
|
||
TToolBar(mForm.Components[i]).Flat := true;
|
||
if mIsCustomBackColor then
|
||
TToolBar(mForm.Components[i]).Color := clToolBarBack;
|
||
if mForm.Components[i].Tag = 0 then
|
||
begin
|
||
if ADOTmp.IsEmpty then
|
||
TToolBar(mForm.Components[i]).List := false
|
||
else
|
||
TToolBar(mForm.Components[i]).List := mToolBarList;
|
||
end;
|
||
if mRightCaptions<>'' then
|
||
SetFormOperRight(application,TToolBar(mForm.Components[i]), PWideChar(mRightCaptions));
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is TcxTabControl then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TdxLayoutControl(mForm.Components[i]).ParentFont:=true;
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is TcomBoBox then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TcomBoBox(mForm.Components[i]).ParentFont:=true;
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is TdxCustomLayoutControl then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TdxLayoutControl(mForm.Components[i]).ParentFont:=true;
|
||
if mForm.Components[i].Tag<>1000 then
|
||
begin
|
||
TdxLayoutControl(mForm.Components[i]).OnDblClick := dxLayoutControl1DblClick ;
|
||
readLayOut(application,TdxLayoutControl(mForm.Components[i]),ADOTmp,PWideChar( fDllFileName+'|'+mForm.name+'|'+TdxLayoutControl(mForm.Components[i]).Name+'.ini'));
|
||
end;
|
||
continue;
|
||
end;
|
||
// Tpanel
|
||
if mForm.Components[i] is Tpanel then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
Tpanel(mForm.Components[i]).ParentFont:=True;
|
||
|
||
if mIsCustomBackColor and (Tpanel(mForm.Components[i]).Tag < 99) then
|
||
Tpanel(mForm.Components[i]).Color := clPanelBack;
|
||
Tpanel(mForm.Components[i]).Ctl3D := mCtl3D;
|
||
mdesignCode := fFormName + '_' + intTostr(fFormId) + '_' + Tpanel(mForm.Components[i]).name;
|
||
|
||
continue;
|
||
end;
|
||
// Tpanel
|
||
if mForm.Components[i] is TScrollBox then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TScrollBox(mForm.Components[i]).ParentFont:=true;
|
||
|
||
if mIsCustomBackColor and (Tpanel(mForm.Components[i]).Tag < 99) then
|
||
Tpanel(mForm.Components[i]).Color := clPanelBack;
|
||
Tpanel(mForm.Components[i]).Ctl3D := mCtl3D;
|
||
|
||
mdesignCode := fFormName + '_' + intTostr(fFormId) + '_' + TScrollBox(mForm.Components[i]).name;
|
||
|
||
continue;
|
||
end;
|
||
// Tcxgroup
|
||
if mForm.Components[i] is TgroupBox then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TgroupBox(mForm.Components[i]).ParentFont:=true;
|
||
if mIsCustomBackColor then
|
||
TgroupBox(mForm.Components[i]).Color := clPanelBack;
|
||
TgroupBox(mForm.Components[i]).Ctl3D := mCtl3D;
|
||
|
||
continue;
|
||
end;
|
||
// TcxPageControl
|
||
if mForm.Components[i] is TcxPageControl then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TcxPageControl(mForm.Components[i]).ParentFont:=True;
|
||
if mIsCustomBackColor then
|
||
TcxPageControl(mForm.Components[i]).Color := clPanelBack;
|
||
|
||
continue;
|
||
end;
|
||
// Tcxgroup
|
||
if mForm.Components[i] is TcxgroupBox then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
TcxgroupBox(mForm.Components[i]).ParentFont:=True;
|
||
if mIsCustomBackColor then
|
||
TcxgroupBox(mForm.Components[i]).Color := clPanelBack;
|
||
TcxgroupBox(mForm.Components[i]).Ctl3D := mCtl3D;
|
||
mdesignCode := fFormName + '_' + intTostr(fFormId) + '_' + TcxgroupBox(mForm.Components[i]).name;
|
||
|
||
continue;
|
||
end;
|
||
if mForm.Components[i] is Tcxtimeedit then
|
||
begin
|
||
if mForm.Components[i].Tag<999 then
|
||
Tcxtimeedit(mForm.Components[i]).ParentFont:=true;
|
||
Tcxtimeedit(mForm.Components[i]).Style.BorderStyle := ebsFlat;
|
||
continue;
|
||
end;
|
||
// TcxGrid and gIsCustomDrawGridHeader
|
||
if mForm.Components[i] is TcxGrid then
|
||
begin
|
||
if mForm.Components[i].Tag>=999 then Continue;
|
||
TcxGrid(mForm.Components[i]).ParentFont:=true;
|
||
|
||
TcxGrid(mForm.Components[i]).LookAndFeel.ScrollbarMode := sbmClassic;
|
||
|
||
// cxStyle_GridOddRow := TcxStyle.Create(mForm.Components[i]);
|
||
// cxStyle_GridEvenRow := TcxStyle.Create(mForm.Components[i]);
|
||
// cxStyle_active := TcxStyle.Create(mForm.Components[i]);
|
||
// cxStyle_selection := TcxStyle.Create(mForm.Components[i]);
|
||
// cxStyle_gridGroupBox := TcxStyle.Create(mForm.Components[i]);
|
||
// cxStyle_gridFoot := TcxStyle.Create(mForm.Components[i]);
|
||
//
|
||
// cxStyle_active.Font.name := '<><CEA2><EFBFBD>ź<EFBFBD>';
|
||
//
|
||
// cxStyle_gridGroupBox.Color := $20F3FBFB;
|
||
// cxStyle_selection.Color := $0047D5FE;
|
||
// cxStyle_gridFoot.Color := clPanelBack;
|
||
// cxStyle_gridFoot.Font.Color := clBlack;
|
||
//
|
||
// cxStyle_selection.Font.Color := clBlack;
|
||
// cxStyle_selection.Font.Style := [];
|
||
// cxStyle_selection.Font.name := '<><CEA2><EFBFBD>ź<EFBFBD>';
|
||
//
|
||
//
|
||
// cxStyle_active.Font.Size := fFontsize;
|
||
// cxStyle_gridFoot.Font.Size := ffontsize;
|
||
// cxStyle_selection.Font.Size := ffontsize;
|
||
|
||
// if TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.Header <> nil then
|
||
// TcxStyle(TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.Header).Font.Size := ffontsize;
|
||
//
|
||
// if TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.contentOdd = nil then
|
||
// TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.contentOdd := cxStyle_GridOddRow;
|
||
// if TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.contentEven = nil then
|
||
// TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.contentEven := cxStyle_GridEvenRow;
|
||
// if TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.inactive = nil then
|
||
// TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.inactive := cxStyle_active
|
||
// else
|
||
// TcxStyle(TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.inactive).Font.Size := ffontsize;
|
||
//
|
||
// if TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.selection = nil then
|
||
// begin
|
||
// TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.selection := cxStyle_selection;
|
||
// TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.selection.AssignedValues := [];
|
||
// end
|
||
// else
|
||
// TcxStyle(TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.selection).Font.Size := ffontsize;
|
||
//
|
||
|
||
|
||
TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).optionsView.groupByBox := false;
|
||
// if mIsDrawGridHeader and (TcxGrid(mForm.Components[i]).Tag <> 1) then
|
||
// begin
|
||
// TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).optionsCustomize.columnfiltering := true;
|
||
|
||
// end;
|
||
|
||
//<2F>Զ<EFBFBD><D4B6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||
TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).dataController.filter.AutoDataSetFilter := true;
|
||
|
||
//if mForm.Components[i].Tag < 99 then
|
||
// SetCxGridColumnBestWidth(TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]));
|
||
|
||
TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).OnKeyDown := cxGridViewKeyDown;
|
||
TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).OnSelectionChanged := cxGridViewSelectionChanged;
|
||
|
||
TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).OnCustomDrawIndicatorCell := cxGridViewCustomDrawIndicatorCell;
|
||
|
||
TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).optionsCustomize.columnfiltering := true;
|
||
mdesignCode := fDllFileName +'|'+mForm.name+ '|' + intTostr(fFormId) + '|' + TcxGrid(mForm.Components[i]).name;
|
||
|
||
|
||
CreateCxGridColumn(application, TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]),ADOQueryTmp,PWideChar(mdesignCode));
|
||
|
||
continue;
|
||
end;
|
||
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
/// ////////////////////////////////////////////////////////////////////
|
||
// <20><><EFBFBD>洰<EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD>е<EFBFBD>ԭʼ<D4AD><CABC>Ϣ
|
||
/// ///////////////////////////////////////////////////////////////////////
|
||
//function TWindowFormDeSign.SaveFormGridInfo(mCxGridView: TcxGridDBTableView; ADOCmd: TADOQuery; mdesignCode: string; mGridName: string; mGridType: integer): boolean;
|
||
//var
|
||
// i: integer;
|
||
// mfieldName: string;
|
||
//begin
|
||
// result := false;
|
||
// try
|
||
// /// ////////////////
|
||
// /// ////////////////
|
||
// with ADOQueryCmd do
|
||
// begin
|
||
// close;
|
||
// sql.Clear;
|
||
// sql.Add('select * from SD_FormGrid_Main A');
|
||
// sql.Add('where A.designCode=' + quotedStr(mdesignCode));
|
||
// open;
|
||
// if RecordCount <= 0 then
|
||
// begin
|
||
// append;
|
||
// fieldByName('designCode').value := mdesignCode;
|
||
// fieldByName('GridType').value := mGridType;
|
||
// fieldByName('gridName').value := TcxGrid(TcxGridLevel(mCxGridView.level).Control).name;
|
||
// end
|
||
// else
|
||
// edit;
|
||
//
|
||
// fieldByName('ProcedureParam').value := '';
|
||
// fieldByName('newProcedureName').value := '';
|
||
// post;
|
||
//
|
||
// close;
|
||
//
|
||
// end;
|
||
// // <20><><EFBFBD><EFBFBD>Ϣ
|
||
// with ADOCmd do
|
||
// begin
|
||
// close;
|
||
// sql.Clear;
|
||
// sql.Add('select * from SD_FormGrid_Design');
|
||
// sql.Add('where designCode=' + quotedStr(mdesignCode));
|
||
// sql.Add('and formId=' + intTostr(fFormId));
|
||
// sql.Add('and formName=' + quotedStr(fFormName));
|
||
// // sql.Add('and GridName='+QuotedStr(mgridName));
|
||
// open;
|
||
//
|
||
// for i := mCxGridView.ColumnCount - 1 downto 0 do
|
||
// begin
|
||
// mfieldName := TcxGridDBColumn(mCxGridView.Columns[i]).DataBinding.FieldName;
|
||
//
|
||
// if locate('fieldName', mfieldName, []) then
|
||
// begin
|
||
// continue;
|
||
// end
|
||
// else
|
||
// begin
|
||
// append;
|
||
// fieldByName('Id').value := GetMaxId();
|
||
// fieldByName('formId').value := fFormId;
|
||
// fieldByName('formName').value := fFormName;
|
||
// fieldByName('designCode').value := mdesignCode;
|
||
// fieldByName('GridName').value := mGridName;
|
||
//
|
||
// fieldByName('ColumnName').value := mCxGridView.Columns[i].name;
|
||
// fieldByName('Visible').value := mCxGridView.Columns[i].Visible;
|
||
// fieldByName('ColumnHide').value := mCxGridView.Columns[i].Hidden;
|
||
// fieldByName('oldCaption').value := mCxGridView.Columns[i].Caption;
|
||
// fieldByName('Valid').value := 1;
|
||
// end;
|
||
//
|
||
// fieldByName('GridIndex').value := mGridType;
|
||
// fieldByName('FieldName').value := trim(TcxGridDBColumn(mCxGridView.Columns[i]).DataBinding.FieldName);
|
||
// fieldByName('Caption').value := mCxGridView.Columns[i].Caption;
|
||
// fieldByName('ColumnType').value := trim(TcxGridDBColumn(mCxGridView.Columns[i]).DataBinding.ValueType);
|
||
//
|
||
// fieldByName('Width').value := mCxGridView.Columns[i].Width;
|
||
// fieldByName('IsOrder').value := 1;
|
||
// fieldByName('ColumnFilter').value := mCxGridView.Columns[i].Filtered;
|
||
// fieldByName('ColumnOrder').value := mCxGridView.Columns[i].Index;
|
||
// if mCxGridView.Columns[i].FixedKind= fkLeftDynamic then
|
||
// begin
|
||
// fieldByName('fixColumn').value := True;
|
||
// end
|
||
// else
|
||
// begin
|
||
// fieldByName('fixColumn').value := false;
|
||
// end;
|
||
// post;
|
||
// end;
|
||
//
|
||
// close;
|
||
// end;
|
||
//
|
||
// /// /////////////////////////////////////////////
|
||
// //
|
||
// for i := 0 to mCxGridView.dataController.DataSet.FieldCount - 1 do
|
||
// begin
|
||
// mfieldName := trim(mCxGridView.dataController.DataSet.Fields[i].FieldName);
|
||
// if mfieldName = '' then
|
||
// continue;
|
||
// with ADOCmd do
|
||
// begin
|
||
// close;
|
||
// sql.Clear;
|
||
// sql.Add('select * from SD_FormGrid_Design');
|
||
// sql.Add('where designCode=' + quotedStr(mdesignCode));
|
||
// // sql.Add('and GridName='+QuotedStr(mgridName));
|
||
// sql.Add('and fieldName=' + quotedStr(mfieldName));
|
||
// open;
|
||
// if RecordCount <= 0 then
|
||
// begin
|
||
// append;
|
||
// fieldByName('Id').value := GetMaxId();
|
||
// fieldByName('formName').value := fFormName;
|
||
// fieldByName('formId').value := fFormId;
|
||
// fieldByName('GridName').value := mGridName;
|
||
// fieldByName('GridIndex').value := mGridType;
|
||
// fieldByName('designCode').value := mdesignCode;
|
||
//
|
||
// fieldByName('fieldName').value := mfieldName;
|
||
//
|
||
// fieldByName('ColumnType').value := mCxGridView.dataController.DataSet.Fields[i].DataType;
|
||
// fieldByName('Caption').value := 'δ<><CEB4><EFBFBD><EFBFBD>';
|
||
// fieldByName('ColumnName').value := mCxGridView.name + mfieldName;
|
||
// fieldByName('Visible').value := false;
|
||
// fieldByName('AddFlag').value := true;
|
||
//
|
||
// fieldByName('Width').value := 60;
|
||
// fieldByName('ColumnOrder').value := 99;
|
||
//
|
||
// fieldByName('Valid').value := 0;
|
||
// post;
|
||
// end;
|
||
// close;
|
||
// end;
|
||
// end;
|
||
// result := true;
|
||
// except
|
||
// application.MessageBox('<27><><EFBFBD>洰<EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>Ϣʱ<CFA2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
|
||
// end;
|
||
//end;
|
||
|
||
/// /////////////////////////////////////////////////
|
||
//
|
||
/// ///////////////////////////////////////////////////
|
||
/// ////////////////////////////////////////////////////////////////
|
||
// <20><>ʼ<EFBFBD><CABC><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>SQL<51>Ŀؼ<C4BF>
|
||
/// ////////////////////////////////////////////////////////////////
|
||
function TWindowFormDeSign.InitCtrlData(mCtrl: TControl; mSql: string; mdefault: string): boolean;
|
||
var
|
||
idx: integer;
|
||
begin
|
||
result := false;
|
||
try
|
||
with ADOQueryCmd do
|
||
begin
|
||
close;
|
||
sql.Clear;
|
||
sql.Add(mSql);
|
||
open;
|
||
end;
|
||
|
||
if mCtrl is TcomBoBox then
|
||
begin
|
||
if ADOQueryTmp.RecordCount > 0 then
|
||
TcomBoBox(mCtrl).Clear;
|
||
while not ADOQueryTmp.Eof do
|
||
begin
|
||
TcomBoBox(mCtrl).Items.Add(trim(ADOQueryCmd.Fields[0].AsString));
|
||
ADOQueryCmd.Next;
|
||
end;
|
||
|
||
if mdefault <> '' then
|
||
begin
|
||
idx := TcomBoBox(mCtrl).Items.IndexOf(mdefault);
|
||
if idx >= 0 then
|
||
begin
|
||
TcomBoBox(mCtrl).ItemIndex := idx;
|
||
end;
|
||
end;
|
||
exit;
|
||
end;
|
||
/// //////////////
|
||
if mCtrl is TcxComboBox then
|
||
begin
|
||
if ADOQueryCmd.RecordCount > 0 then
|
||
begin
|
||
TcxComboBox(mCtrl).Clear;
|
||
TcxComboBox(mCtrl).Properties.Items.Clear;
|
||
end;
|
||
while not ADOQueryCmd.Eof do
|
||
begin
|
||
TcxComboBox(mCtrl).Properties.Items.Add(trim(ADOQueryCmd.Fields[0].AsString));
|
||
ADOQueryCmd.Next;
|
||
end;
|
||
if mdefault <> '' then
|
||
begin
|
||
idx := TcxComboBox(mCtrl).Properties.Items.IndexOf(mdefault);
|
||
if idx >= 0 then
|
||
begin
|
||
TcxComboBox(mCtrl).ItemIndex := idx;
|
||
end;
|
||
end;
|
||
exit;
|
||
end;
|
||
|
||
if mCtrl is Tdatetimepicker then
|
||
begin
|
||
Tdatetimepicker(mCtrl).Date := ADOQueryCmd.Fields[0].AsDateTime;
|
||
exit;
|
||
end;
|
||
if mCtrl is TcxDateEdit then
|
||
begin
|
||
TcxDateEdit(mCtrl).Date := ADOQueryCmd.Fields[0].AsDateTime;
|
||
exit;
|
||
end;
|
||
result := true;
|
||
except
|
||
application.MessageBox('<27><>ʼ<EFBFBD><CABC><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
|
||
end;
|
||
end;
|
||
|
||
/// ///////////////////////////////////////////////////////////////////////////////////////
|
||
//
|
||
/// ///////////////////////////////////////////////////////////////////////////////////////
|
||
//procedure TWindowFormDeSign.SetCxGridColumnBestWidth(cxGrid: TcxGridDBTableView);
|
||
//var
|
||
// i: integer;
|
||
// mCaption: string;
|
||
// mMinWidth: integer;
|
||
//begin
|
||
// try
|
||
// cxGrid.BeginUpdate;
|
||
// for i := 0 to cxGrid.ColumnCount - 1 do
|
||
// begin
|
||
// if cxGrid.ColumnCount < 6 then
|
||
// begin
|
||
// cxGrid.Columns[i].Width := 120;
|
||
// continue;
|
||
// end;
|
||
// mCaption := trim(cxGrid.Columns[i].Caption);
|
||
// if length(mCaption) <= 2 then
|
||
// mMinWidth := (length(mCaption) + 3) * 12
|
||
// else if (length(mCaption) > 2) and (length(mCaption) <= 4) then
|
||
// mMinWidth := (length(mCaption) + 2) * 12
|
||
// else if (length(mCaption) > 4) and (length(mCaption) <= 8) then
|
||
// mMinWidth := (length(mCaption) + 1) * 12
|
||
// else
|
||
// mMinWidth := (length(mCaption)) * 9;
|
||
// cxGrid.Columns[i].Width := mMinWidth;
|
||
// end;
|
||
// finally
|
||
// cxGrid.EndUpdate;
|
||
// end;
|
||
//end;
|
||
|
||
|
||
|
||
|
||
/// ////////////////////////////////////////
|
||
procedure TWindowFormDeSign.cxGridViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
var
|
||
mGridDBTableView: TcxGridDBTableView;
|
||
begin
|
||
if Key = vk_f12 then
|
||
begin
|
||
mGridDBTableView := TcxGridDBTableView(TcxGridSite(Sender).ViewInfo.GridView);
|
||
OpenGridDesignWin(mGridDBTableView);
|
||
end;
|
||
|
||
end;
|
||
|
||
/////////////////////////////////////////////
|
||
procedure TWindowFormDeSign.dxLayoutControl1DblClick(Sender: TObject);
|
||
begin
|
||
layoutDesign(TdxLayoutControl(Sender),ADOQueryCmd,PWideChar(dcode));
|
||
end;
|
||
|
||
/// ////////////////////////////////////////////////////////////////
|
||
// <20><EFBFBD><F2BFAAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
|
||
// 0: mGridType <20><>ѯ; 1:<3A><><EFBFBD><EFBFBD>
|
||
/// /////////////////////////////////////////////////////////////////
|
||
procedure TWindowFormDeSign.OpenGridDesignWin(mCxGridView: TcxGridDBTableView);
|
||
type
|
||
TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; UID: pchar; UName: pchar; dataBase: pchar; Title: pchar; Parameters1: pchar; Parameters2: pchar): hwnd; stdcall;
|
||
var
|
||
Tf: TMyFunc;
|
||
Tp: TFarProc;
|
||
Th: Thandle;
|
||
newh: hwnd;
|
||
mGridType: integer;
|
||
mdesignCode: string;
|
||
mGridName: string;
|
||
k: integer;
|
||
client1:TClientDataSet;
|
||
begin
|
||
/// ////////////////////////////////////
|
||
// Ȩ<><EFBFBD><DEBF><EFBFBD>
|
||
mdesignCode := fFormName + '|' + intTostr(fFormId) + '|' + mCxGridView.name;
|
||
mGridName := TcxGrid(TcxGridLevel(mCxGridView.level).Control).name;
|
||
if not IsHasDesignRight(ADOQueryCmd,PWideChar(dcode)) then
|
||
exit;
|
||
|
||
ShowCxGridDesign(application, mCxGridView, getColumnRelation(mCxGridView),AdOQueryCmd,PWideChar(fFormName) ,PWideChar(mGridName),PWideChar(fDllFileName),fformId,0);
|
||
CreateCxGridColumn(application, mCxGridView,ADOQueryTmp,PWideChar(mdesignCode));
|
||
end;
|
||
|
||
/// //////////////////////////////////////
|
||
//
|
||
/// ///////////////////////////////////////
|
||
function TWindowFormDeSign.GetMaxId(): integer;
|
||
begin
|
||
result := 0;
|
||
try
|
||
with ADOQueryTmp do
|
||
begin
|
||
close;
|
||
sql.Clear;
|
||
Filtered := false;
|
||
sql.Add('select max(id) as id');
|
||
sql.Add('from SD_FormGrid_Design A');
|
||
open;
|
||
result := fieldByName('id').AsInteger + 1;
|
||
end;
|
||
except
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
/// //////////////////////////////////////////////////////////////
|
||
// <20><><EFBFBD><EFBFBD>toolbar<61><72>ťȨ<C5A5><EFBFBD><DEB2><EFBFBD>
|
||
/// //////////////////////////////////////////////////////////////
|
||
//procedure TWindowFormDeSign.SetFormOperRight(mParent: TwinControl; mRightCaptions: string);
|
||
//var
|
||
// i: integer;
|
||
// mCaption: string;
|
||
// mOperRight: string;
|
||
//begin
|
||
// mOperRight := mRightCaptions;
|
||
//
|
||
// if mOperRight = '' then
|
||
// exit;
|
||
//
|
||
// try
|
||
// /// ////////////////////////////////////////////
|
||
// if mParent is TToolBar then
|
||
// begin
|
||
// for i := 0 to TToolBar(mParent).ButtonCount - 1 do
|
||
// begin
|
||
// mCaption := trim(TToolBar(mParent).Buttons[i].Caption);
|
||
// if (mCaption = '<27>ر<EFBFBD>') or (mCaption = '<27>˳<EFBFBD>') or (mCaption = '<27><><EFBFBD><EFBFBD>') then
|
||
// exit;
|
||
// /// //////////////////////////
|
||
// if trim(mOperRight) = '<27><>ѯ' then
|
||
// begin
|
||
// if pos(mCaption, '<27><>ѯ,ˢ<><CBA2>,<2C><><EFBFBD><EFBFBD>,<2C><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>,<2C><EFBFBD><DFBC><EFBFBD>ѯ') > 0 then // ,<2C>鿴,<2C><>ϸ
|
||
// begin
|
||
// TToolBar(mParent).Buttons[i].Visible := true;
|
||
// end
|
||
// else
|
||
// begin
|
||
// TToolBar(mParent).Buttons[i].Visible := false;
|
||
// end;
|
||
// end
|
||
// else
|
||
// begin
|
||
// if (pos(mCaption, mOperRight) > 0) or (pos(mCaption, '<27><>ѯ,ˢ<><CBA2>,<2C><><EFBFBD><EFBFBD>,<2C><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>,<2C><EFBFBD><DFBC><EFBFBD>ѯ') > 0) then // <20>鿴,
|
||
// begin
|
||
// TToolBar(mParent).Buttons[i].Visible := true;
|
||
// end
|
||
// else
|
||
// begin
|
||
// TToolBar(mParent).Buttons[i].Visible := false;
|
||
// end;
|
||
// end;
|
||
// end;
|
||
// exit;
|
||
// end;
|
||
// /// ////////////////////////////////////////////////
|
||
// if trim(mOperRight) = '<27><>ѯ' then
|
||
// exit;
|
||
// with mParent do
|
||
// begin
|
||
// for i := 0 to ControlCount - 1 do
|
||
// begin
|
||
// mCaption := '';
|
||
// if (Controls[i] is TBitBtn) then
|
||
// mCaption := trim(TBitBtn(Controls[i]).Caption)
|
||
// else if (Controls[i] is TButton) then
|
||
// mCaption := trim(TButton(Controls[i]).Caption)
|
||
// else if (Controls[i] is TSpeedButton) then
|
||
// mCaption := trim(TSpeedButton(Controls[i]).Caption)
|
||
// else
|
||
// continue;
|
||
// if (Controls[i] is TBitBtn) or (Controls[i] is TButton) or (Controls[i] is TSpeedButton) then
|
||
// begin
|
||
// if (pos(mCaption, mOperRight) > 0) or (mCaption = '<27><>ѯ') or (mCaption = '<27><><EFBFBD><EFBFBD>') or (mCaption = '<27><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>') then
|
||
// begin
|
||
// Controls[i].Visible := true;
|
||
// end
|
||
// else
|
||
// Controls[i].Visible := false;
|
||
// end;
|
||
// end;
|
||
// end;
|
||
//
|
||
// except
|
||
// application.MessageBox('<27><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD>ťȨ<C5A5><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', 0);
|
||
// end;
|
||
//end;
|
||
|
||
/// ////////////////////////////////////////////////////////////
|
||
//
|
||
/// ////////////////////////////////////////////////////////////
|
||
function TWindowFormDeSign.getChgDefaultValue(mValue: string): string;
|
||
begin
|
||
if '$$USERNAME' = mValue then
|
||
begin
|
||
result := DName;
|
||
end
|
||
else
|
||
result := mValue;
|
||
end;
|
||
|
||
/// ////////////////////////////////////////////////////
|
||
// <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ
|
||
/// /////////////////////////////////////////////////////
|
||
procedure TWindowFormDeSign.QueryDataPlus(ADOTmp: TADOQuery);
|
||
begin
|
||
|
||
end;
|
||
|
||
/////////////////////////////////////////////////////////
|
||
///
|
||
//////////////////////////////////////////////////////////
|
||
|
||
procedure TWindowFormDeSign.cxGridViewSelectionChanged(Sender: TcxCustomGridTableView);
|
||
var
|
||
i, J, idx: integer;
|
||
FocusedRowIndex: integer;
|
||
begin
|
||
if Sender.Tag = 888 then
|
||
exit;
|
||
try
|
||
Sender.BeginUpdate();
|
||
TcxGridDbTableView(Sender).BeginUpdate();
|
||
|
||
FocusedRowIndex := TcxGridDbTableView(Sender).Controller.FocusedRowIndex;
|
||
Sender.DataController.GotoFirst;
|
||
if TcxGridDbTableView(Sender).DataController.DataSet.FieldByName('ssel') = nil then
|
||
exit;
|
||
if TcxGridDbTableView(Sender).GetColumnByFieldName('ssel') = nil then
|
||
exit;
|
||
idx := TcxGridDbTableView(Sender).GetColumnByFieldName('ssel').Index;
|
||
for i := 0 to Sender.DataController.RecordCount - 1 do
|
||
begin
|
||
if TcxGridDbTableView(Sender).DataController.GetItemByFieldName('ssel').EditValue = true then
|
||
begin
|
||
TcxGridDbTableView(Sender).DataController.Edit;
|
||
TcxGridDbTableView(Sender).DataController.GetItemByFieldName('ssel').EditValue := false;
|
||
TcxGridDbTableView(Sender).DataController.Post();
|
||
end;
|
||
Sender.DataController.GotoNext;
|
||
end;
|
||
|
||
for i := 0 to Sender.DataController.GetSelectedCount - 1 do
|
||
begin
|
||
TcxGridDbTableView(Sender).Controller.FocusedRow := TcxGridDbTableView(Sender).Controller.SelectedRows[i];
|
||
if TcxGridDbTableView(Sender).DataController.GetItemByFieldName('ssel').EditValue = false then
|
||
begin
|
||
TcxGridDbTableView(Sender).DataController.Edit;
|
||
TcxGridDbTableView(Sender).DataController.GetItemByFieldName('ssel').EditValue := true;
|
||
TcxGridDbTableView(Sender).DataController.Post();
|
||
|
||
end;
|
||
|
||
end;
|
||
|
||
finally
|
||
TcxGridDbTableView(Sender).Controller.FocusedRowIndex := FocusedRowIndex;
|
||
TcxGridDbTableView(Sender).EndUpdate;
|
||
Sender.EndUpdate;
|
||
|
||
end;
|
||
|
||
end;
|
||
///////////////////////////////////////////////////////////////
|
||
///
|
||
///
|
||
|
||
procedure TWindowFormDeSign.cxGridViewCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
|
||
var
|
||
AIndicatorViewInfo: TcxGridIndicatorRowItemViewInfo;
|
||
ATextRect: TRect;
|
||
// AStyle: TcxStyle;
|
||
aCV: TcxCanvas;
|
||
begin
|
||
if not (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
|
||
Exit;
|
||
Sender.BeginUpdate() ;
|
||
|
||
aCV := ACanvas;
|
||
AViewInfo.GetBestFitWidth ;
|
||
ATextRect := AViewInfo.ContentBounds;
|
||
|
||
AIndicatorViewInfo := AViewInfo as TcxGridIndicatorRowItemViewInfo;
|
||
InflateRect(ATextRect, -2, -1);
|
||
|
||
if AIndicatorViewInfo.GridRecord.Selected then //<2F><><EFBFBD><EFBFBD>if<69><66><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>кŴ<D0BA><C5B4>Ѱ<EFBFBD>ѡ<EFBFBD>е<EFBFBD><D0B5>кŸ<D0BA><C5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD>
|
||
begin
|
||
aCV.Font.Style := ACanvas.Font.Style + [fsBold];
|
||
aCV.Font.Color := clRed;
|
||
end
|
||
else
|
||
begin
|
||
aCV.Font.Style := ACanvas.Font.Style - [fsBold];
|
||
aCV.Font.Color := clblack;
|
||
end;
|
||
|
||
Sender.LookAndFeelPainter.DrawHeader(ACanvas, AViewInfo.ContentBounds, ATextRect, [], cxBordersAll, cxbsNormal, taCenter, vaCenter, False, False, IntToStr(AIndicatorViewInfo.GridRecord.Index + 1),
|
||
aCV.Font, aCV.font.Color, aCV.Brush.color);
|
||
Sender.EndUpdate;
|
||
ADone := True;
|
||
|
||
end;
|
||
|
||
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////
|
||
///
|
||
function TWindowFormDeSign.getColumnRelation(tv1:TcxGridDBTableView):TclientDataSet;
|
||
var
|
||
i:Integer;
|
||
begin
|
||
if client1=nil then
|
||
begin
|
||
client1 := TClientDataSet.Create(nil);
|
||
client1.FieldDefs.Add('fieldName', ftString, 100);
|
||
client1.FieldDefs.Add('caption', ftString,100);
|
||
client1.FieldDefs.Add('ValueType', ftString,100);
|
||
|
||
client1.CreateDataSet;
|
||
end
|
||
else
|
||
client1.EmptyDataSet;
|
||
|
||
for i := 0 to tv1.ColumnCount - 1 do
|
||
begin
|
||
client1.Append;
|
||
client1.FieldByName('fieldName').Value:=tv1.Columns[i].DataBinding.FieldName;
|
||
client1.FieldByName('caption').Value:=tv1.Columns[i].Caption;
|
||
client1.FieldByName('ValueType').Value:=tv1.Columns[i].DataBinding.ValueType;
|
||
client1.Post;
|
||
end;
|
||
result:=client1;
|
||
end;
|
||
|
||
end.
|
||
|