RtTool/Delphi10/开发档案/Dp10Repo/public10/design/U_WindowFormdesign.pas
2024-12-23 17:08:59 +08:00

1454 lines
49 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit U_WindowFormdesign;
interface
uses
Windows, SysUtils, Messages, Classes, Controls, StdCtrls, ComCtrls, Forms,
ExtCtrls, ComObj, DXCORE, ActiveX, cxMemo, cxButtons, Graphics, IniFiles,
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,
cxCustomData, cxClasses, cxTimeEdit, cxEdit, cxLookAndFeels,
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;
function IsHasDesignRight(ADOTmp: TADOQuery): boolean;
procedure SetCxGridColumnBestWidth(cxGrid: TcxGridDBTableView);
function SaveFormGridInfo(mCxGridView: TcxGridDBTableView; ADOCmd: TADOQuery; mdesignCode: string; mGridName: string; mGridType: integer): boolean;
function InitContainerControls(mdesignCode: string; containerCtrl: TwinControl): boolean;
procedure SetFormOperRight(mParent: TwinControl; mRightCaptions: string);
function GetMaxId(): integer;
procedure onDesignDblClick(Sender: TObject);
procedure cxGridViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure cxGridViewSelectionChanged(Sender: TcxCustomGridTableView);
procedure CustomDrawcxGridHeader(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: boolean);
procedure CreateCxGridColumn(tv1: TcxGridDBTableView; ADOQueryTmp: TADOQuery; mdesignCode, mGridName: string; HasFooter: boolean = true);
function SaveContainerControInfo(mParentCtrl: TwinControl; ADOCmd: TADOQuery; mdesignCode: string; mDesigntype: integer): boolean;
function InitCtrlData(mCtrl: TControl; mSql: string; mdefault: string): boolean;
procedure OpenGridDesignWin(mCxGridView: TcxGridDBTableView);
procedure OpenContainerDesign(containerCtrl: TwinControl);
procedure ReadINIFileSetInfo(mfontSize: integer);
function getChgDefaultValue(mValue: string): string;
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);
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;
/// //////////////////////////////////////////////////////
// <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;
if fFontSize < 9 then
fFontSize := 9;
if trim(mStyleCode) = '' then
mStyleCode := '01';
/// /////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
with ADOTmp do
begin
close;
sql.Clear;
sql.Add('select * from SD_ErpStyleParam');
sql.Add('where StyleCode=' + quotedStr(mStyleCode));
open;
if RecordCount > 0 then
begin
fWhatDesign := trim(fieldByName('WhatDesign').AsString);
mCtl3D := fieldByName('IsCtl3D').AsBoolean;
mToolBarList := fieldByName('IsToolBarList').AsBoolean;
mIsCustomBackColor := fieldByName('IsCustomBackColor').AsBoolean;
mIsDrawGridHeader := fieldByName('IsDrawGridHeader').AsBoolean;
fIsShowColumnfilter := fieldByName('IsShowColumnfilter').AsBoolean;
if fieldByName('fontSize').AsInteger > 9 then
begin
fFontSize := fieldByName('fontSize').AsInteger;
end;
end;
end;
ReadINIFileSetInfo(fFontSize);
//mForm.Font.name := '<27><><EFBFBD><EFBFBD>';
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 TToolBar then
begin
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;
SetFormOperRight(TToolBar(mForm.Components[i]), mRightCaptions);
continue;
end;
if mForm.Components[i] is TcxTabControl then
begin
// TcxTabControl(mForm.Components[i]).Color := clToolBarBack ;
continue;
end;
if mForm.Components[i] is TcomBoBox then
begin
// TcomBoBox(mForm.Components[i]).Color := clToolBarBack ;
continue;
end;
// Tpanel
if mForm.Components[i] is Tpanel then
begin
Tpanel(mForm.Components[i]).OnDblClick := onDesignDblClick;
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;
InitContainerControls(mdesignCode, Tpanel(mForm.Components[i]));
continue;
end;
// Tpanel
if mForm.Components[i] is TScrollBox then
begin
TScrollBox(mForm.Components[i]).OnDblClick := onDesignDblClick;
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;
InitContainerControls(mdesignCode, TScrollBox(mForm.Components[i]));
continue;
end;
// Tcxgroup
if mForm.Components[i] is TgroupBox then
begin
TgroupBox(mForm.Components[i]).OnDblClick := onDesignDblClick;
if mIsCustomBackColor then
TgroupBox(mForm.Components[i]).Color := clPanelBack;
TgroupBox(mForm.Components[i]).Ctl3D := mCtl3D;
mdesignCode := fFormName + '_' + intTostr(fFormId) + '_' + TgroupBox(mForm.Components[i]).name;
InitContainerControls(mdesignCode, TgroupBox(mForm.Components[i]));
continue;
end;
// TcxPageControl
if mForm.Components[i] is TcxPageControl then
begin
// TcxPageControl(mForm.Components[i]).OnDblClick:= onDesignDblClick ;
if mIsCustomBackColor then
TcxPageControl(mForm.Components[i]).Color := clPanelBack;
// mDesignCode:=fFormName+'_'+intTostr(fFormid)+'_'+ TcxPageControl(mForm.Components[i]).Name ;
// InitContainerControls(mDesignCode, TcxPageControl(mForm.Components[i]));
continue;
end;
// Tcxgroup
if mForm.Components[i] is TcxgroupBox then
begin
TcxgroupBox(mForm.Components[i]).OnDblClick := onDesignDblClick;
if mIsCustomBackColor then
TcxgroupBox(mForm.Components[i]).Color := clPanelBack;
TcxgroupBox(mForm.Components[i]).Ctl3D := mCtl3D;
mdesignCode := fFormName + '_' + intTostr(fFormId) + '_' + TcxgroupBox(mForm.Components[i]).name;
InitContainerControls(mdesignCode, TcxgroupBox(mForm.Components[i]));
continue;
end;
if mForm.Components[i] is Tcxtimeedit then
begin
Tcxtimeedit(mForm.Components[i]).Style.BorderStyle := ebsFlat;
continue;
end;
// TcxGrid and gIsCustomDrawGridHeader
if mForm.Components[i] is TcxGrid then
begin
TcxGrid(mForm.Components[i]).Font.Size := fFontsize;
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_GridOddRow.Color := $00FDFAF9; // $00FBF6F2;
cxStyle_GridEvenRow.Color := $20F3FBFB;
cxStyle_active.Color := $0047D5FE; // $00C4EFFF; $00C6D9F9
cxStyle_active.Font.Style := [];
cxStyle_active.Font.name := '<27><><EFBFBD><EFBFBD>';
cxStyle_gridGroupBox.Color := $20F3FBFB;
cxStyle_selection.Color := $0047D5FE;
cxStyle_gridFoot.Color := clPanelBack;
cxStyle_gridFoot.Font.Color := clBlack;
//cxStyle_gridFoot.Font.name:='<27><><EFBFBD><EFBFBD>';
cxStyle_selection.Font.Color := clBlack;
cxStyle_selection.Font.Style := [];
cxStyle_selection.Font.name := '<27><><EFBFBD><EFBFBD>';
//cxStyle_active.Font.color := clBlack;
cxStyle_active.Font.Size := fFontsize;
cxStyle_gridFoot.Font.Size := ffontsize;
cxStyle_selection.Font.Size := ffontsize;
//cxStyle_gridGroupBox.Font.Size:= ffontsize;
// cxStyle_gridOddRow.font.Size:=ffontsize;
// cxStyle_GridEvenRow.Font.Size:=ffontsize;
// cxStyle_gridFoot.font.Style:=[fsBold];
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]).styles.groupByBox := cxStyle_gridGroupBox;
TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).styles.Footer := cxStyle_gridFoot;
//TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0])
// .styles.Header := nil;
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 := fFormName + '_' + intTostr(fFormId) + '_' + TcxGridDBTableView(TcxGrid(mForm.Components[i]).Views[0]).name;
// CreateCxGridColumn(TcxGridDBTableView(TcxGrid(mForm.Components[i])
// .Views[0]), ADOQueryTmp, mdesignCode, '');
continue;
end;
end;
end;
/// ////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϣ
/// ///////////////////////////////////////////////////////////////////////
function TWindowFormDeSign.SaveContainerControInfo(mParentCtrl: TwinControl; ADOCmd: TADOQuery; mdesignCode: string; mDesigntype: integer): boolean;
var
i: integer;
begin
result := false;
try
with ADOCmd do
begin
close;
sql.Clear;
sql.Add('select * ');
sql.Add('from SD_FormControl_Design');
sql.Add('where designCode=' + quotedStr(mdesignCode));
open;
if RecordCount <= 0 then
begin
append;
fieldByName('designCode').value := mdesignCode;
fieldByName('InitType').value := 'systemset';
fieldByName('Createman').value := DName;
fieldByName('valid').value := 'Y';
end
else
begin
edit;
end;
fieldByName('Designtype').value := mDesigntype;
fieldByName('ParentCtrlName').value := mParentCtrl.name;
fieldByName('ParentCtrlType').value := mParentCtrl.ClassName;
fieldByName('ParentHeight').value := mParentCtrl.Height;
fieldByName('DllFileName').value := fDllName;
fieldByName('formId').value := fFormId;
fieldByName('formName').value := fFormName;
post;
end;
/// ////////////////
// <20><><EFBFBD><EFBFBD>Ϣ
with ADOCmd do
begin
close;
sql.Clear;
sql.Add('select * ');
sql.Add('from SD_FormControl_Design_sub');
sql.Add('where designCode=' + quotedStr(mdesignCode));
open;
for i := mParentCtrl.ControlCount - 1 downto 0 do
begin
if not locate('ControlName', mParentCtrl.Controls[i].name, []) then
begin
append;
fieldByName('designCode').value := trim(mdesignCode);
fieldByName('ControlName').value := mParentCtrl.Controls[i].name;
if (mParentCtrl.Controls[i] is Tlabel) or (mParentCtrl.Controls[i] is Tcxlabel) then
fieldByName('DefaultCaption').value := Tlabel(mParentCtrl.Controls[i]).Caption
else if (mParentCtrl.Controls[i] is TButton) or (mParentCtrl.Controls[i] is TcxButtonEdit) then
fieldByName('DefaultCaption').value := TButton(mParentCtrl.Controls[i]).Caption
else if (mParentCtrl.Controls[i] is TRadioButton) then
fieldByName('DefaultCaption').value := TRadioButton(mParentCtrl.Controls[i]).Caption;
fieldByName('ControlClass').value := mParentCtrl.Controls[i].ClassName;
// fieldByName('DefLeftPos').Value :=TWinControl(mParentCtrl.Controls[i]).Left;
// fieldByName('DefTopPos').Value :=TWinControl(mParentCtrl.Controls[i]).Top;
// fieldByName('DefWidth').Value :=TWinControl(mParentCtrl.Controls[i]).Width;
// fieldByName('DefHeight').Value :=TWinControl(mParentCtrl.Controls[i]).Height;
fieldByName('TabOrder').value := TwinControl(mParentCtrl.Controls[i]).TabOrder;
// fieldByName('defTabOrder').Value := TWinControl(mParentCtrl.Controls[i]).TabOrder ;
fieldByName('Visible').value := TwinControl(mParentCtrl.Controls[i]).Visible;
fieldByName('creator').value := DName;
fieldByName('Valid').value := 'Y';
end
else
begin
continue;
// Edit;
end;
fieldByName('ControlLeft').value := TwinControl(mParentCtrl.Controls[i]).Left;
fieldByName('ControlTop').value := TwinControl(mParentCtrl.Controls[i]).Top;
fieldByName('ControlWidth').value := TwinControl(mParentCtrl.Controls[i]).Width;
fieldByName('ControlHeight').value := TwinControl(mParentCtrl.Controls[i]).Height;
if (mParentCtrl.Controls[i] is Tlabel) or (mParentCtrl.Controls[i] is Tcxlabel) then
fieldByName('Caption').value := Tlabel(mParentCtrl.Controls[i]).Caption
else if (mParentCtrl.Controls[i] is TButton) or (mParentCtrl.Controls[i] is TcxButtonEdit) then
fieldByName('Caption').value := TButton(mParentCtrl.Controls[i]).Caption
else if (mParentCtrl.Controls[i] is TcheckBox) then
fieldByName('Caption').value := TcheckBox(mParentCtrl.Controls[i]).Caption
else if (mParentCtrl.Controls[i] is TcxcheckBox) then
fieldByName('Caption').value := TcxcheckBox(mParentCtrl.Controls[i]).Caption
else if (mParentCtrl.Controls[i] is TRadioButton) then
fieldByName('Caption').value := TRadioButton(mParentCtrl.Controls[i]).Caption;
if mParentCtrl.Controls[i] is Tlabel then
begin
fieldByName('fontSize').value := Tlabel(mParentCtrl.Controls[i]).Font.Size;
fieldByName('fontColor').value := Tlabel(mParentCtrl.Controls[i]).Font.Color;
end;
post;
end;
end;
ADOCmd.close;
result := true;
except
application.MessageBox('<27><><EFBFBD><EFBFBD><E6B8B8><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>Ϣʱ<CFA2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
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;
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.onDesignDblClick(Sender: TObject);
begin
OpenContainerDesign(TwinControl(Sender));
end;
/// ///////////////////////////////////////////////////////////////
//
/// ////////////////////////////////////////////////////////////////
procedure TWindowFormDeSign.CustomDrawcxGridHeader(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: boolean);
var
ARect: TRect;
ATextToDraw: string;
AIsVertical: boolean;
FColorScheme: TColorSchemes;
FCustomDrawingStyle: TCustomDrawingStyleArr;
begin
try
ATextToDraw := ' ' + AViewInfo.Text;
ARect := AViewInfo.Bounds;
AIsVertical := true;
DrawGradient(ACanvas.Canvas, ARect, ColorScheme[1, 0], ColorScheme[1, 1], 55, AIsVertical);
ARect.Left := ARect.Right - 9;
ARect.Right := ARect.Right - 1;
InflateRect(ARect, -1, -3);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
if AViewInfo.Column.SortOrder = soAscending then
AViewInfo.LookAndFeelPainter.DrawSortingMark(ACanvas, ARect, false)
else if AViewInfo.Column.SortOrder = soDescending then
AViewInfo.LookAndFeelPainter.DrawSortingMark(ACanvas, ARect, true);
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
if fIsShowColumnfilter then
begin
if AViewInfo.Column.Options.Filtering then
begin
Sender.LookAndFeelPainter.DrawFilterDropDownButton(ACanvas, ARect, cxbsNormal, AViewInfo.Column.Filtered);
OffsetRect(ARect, -16, 0);
end;
end;
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>
ARect := AViewInfo.Bounds;
ACanvas.DrawEdge(ARect, false, false, [btop, bright, bBottom]); //
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ARect := AViewInfo.TextAreaBounds;
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
ACanvas.DrawText(ATextToDraw, ARect, 0);
ADone := true;
// FCustomDrawingStyle[Integer(vtMaster), Integer(cdaColumnHeader)] <> cdsDefaultDrawing;
except
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;
/// ////////////////////////////////////////////////////////////////
// <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;
begin
/// ////////////////////////////////////
// Ȩ<>޿<EFBFBD><DEBF><EFBFBD>
mdesignCode := fFormName + '_' + intTostr(fFormId) + '_' + mCxGridView.name;
mGridName := TcxGrid(TcxGridLevel(mCxGridView.level).Control).name;
if not IsHasDesignRight(ADOQueryCmd) then
exit;
/// ////////////////////////////////////////
// <20><><EFBFBD>浱ǰ<E6B5B1>ؼ<EFBFBD><D8BC><EFBFBD>Ϣ
if not SaveFormGridInfo(mCxGridView, ADOQueryCmd, mdesignCode, mGridName, mCxGridView.Tag) then
begin
exit;
end;
if trim(fWhatDesign) = '' then
begin
if FileExists(ExtractFilePath(application.ExeName) + 'GridDesign.EXE') then
begin
WinExec(PAnsiChar(ExtractFilePath(application.ExeName) + 'GridDesign.exe ' + mdesignCode + ' ' + DName), SW_SHOWNORMAL);
end;
end
else
begin
/// ////////////////////////////////////////
//
Th := LoadLibrary('RtDesign.dll');
if Th > 0 then
begin
try
Tp := GetProcAddress(Th, 'GetDllForm');
if Tp <> nil then
begin
Tf := TMyFunc(Tp);
newh := Tf(application, 0, 2, pchar(dcode), pchar(DName), pchar(ADOQueryCmd.ConnectionString), pchar(fFormCaption + mGridName + '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'), pchar(mdesignCode), pchar(''));
end
else
begin
ShowMessage('<27><><EFBFBD><EFBFBD>RtDesign.dllʱ<6C><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!');
end;
finally
// FreeLibrary(Th);
end;
end
else
begin
ShowMessage('<27>Ҳ<EFBFBD><D2B2><EFBFBD>RtDesign.dll');
end;
CreateCxGridColumn(mCxGridView, ADOQueryCmd, mdesignCode, mGridName);
end;
end;
/// ////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>CxGrid<69><64>
/// ////////////////////////////////////////////////////////
procedure TWindowFormDeSign.CreateCxGridColumn(tv1: TcxGridDBTableView; ADOQueryTmp: TADOQuery; mdesignCode, mGridName: string; HasFooter: boolean = true);
var
ADBColumn: TcxGridDBColumn;
strField, strCaption: string;
mColumnName: string;
mCalcWidth: integer;
mWidth: integer;
mAvgWidth, mGridWidth: integer;
begin
mWidth := 12;
mGridWidth := TcxGrid(TcxGridLevel(tv1.level).Control).Width;
with ADOQueryTmp do
begin
close;
sql.Clear;
sql.Add('select * from SD_ErpStyleParam');
sql.Add('where StyleCode=''01''');
open;
if RecordCount > 0 then
begin
if fieldByName('headStyle').AsInteger = 0 then
begin
tv1.styles.Header := nil;
end;
end;
close;
end;
try
tv1.BeginUpdate;
with ADOQueryTmp do
begin
close;
sql.Clear;
sql.Add('select sum(width) as width ');
sql.Add('from SD_FormGrid_Design A');
sql.Add('where A.designCode=' + quotedStr(mdesignCode));
sql.Add('and valid=1');
open;
if mGridWidth > fieldByName('width').AsInteger then
begin
if tv1.ColumnCount > 0 then
mAvgWidth := (mGridWidth - fieldByName('width').AsInteger) div tv1.ColumnCount - 5;
end;
if mAvgWidth < 0 then
mAvgWidth := 0;
end;
with ADOQueryTmp do
begin
close;
sql.Clear;
sql.Add('select A.* ');
sql.Add('from SD_FormGrid_Design A');
sql.Add('where A.designCode=' + quotedStr(mdesignCode));
// sql.Add('and A.formId='+intTostr(fFormId));
// sql.Add('and A.formName='+QuotedStr(fFormName));
sql.Add('order by A.columnOrder');
open;
if IsEmpty then
begin
// GetBeginColumnWidth(Tv1,mWidth);
exit;
end;
while not Eof do
begin
ADBColumn := tv1.GetColumnByFieldName(trim(fieldByName('fieldName').AsString));
if ADBColumn <> nil then
begin
// <20><><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>ʾ
if not fieldByName('valid').AsBoolean then
begin
ADBColumn.Visible := false;
ADBColumn.Hidden := true;
Next;
continue;
end;
ADBColumn.name := trim(tv1.name) + trim(fieldByName('fieldName').AsString);
ADBColumn.Visible := fieldByName('Visible').AsBoolean;
ADBColumn.Hidden := fieldByName('ColumnHide').AsBoolean;
ADBColumn.Caption := trim(fieldByName('caption').AsString);
// <20><><EFBFBD><EFBFBD>
if tv1.optionsCustomize.columnfiltering and ADBColumn.Options.Filtering then
mCalcWidth := length(trim(fieldByName('caption').AsString)) * mWidth + 10
else
mCalcWidth := length(trim(fieldByName('caption').AsString)) * mWidth;
// if fieldByName('width').AsInteger >mCalcWidth then
ADBColumn.Width := fieldByName('width').AsInteger + mAvgWidth;
// else
// ADBColumn.Width :=mCalcWidth ;
Next;
continue;
end;
// <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ѵ<EFBFBD><D1B4><EFBFBD>
mColumnName := trim(tv1.name) + trim(fieldByName('fieldName').AsString);
if tv1.FindItemByName(mColumnName) <> nil then
begin
Next;
continue;
end;
// <20>µ<EFBFBD><C2B5><EFBFBD>
ADBColumn := tv1.CreateColumn;
ADBColumn.DataBinding.FieldName := trim(fieldByName('fieldName').AsString);
ADBColumn.Caption := trim(fieldByName('Caption').AsString);
// <20><><EFBFBD><EFBFBD>
if tv1.optionsCustomize.columnfiltering and ADBColumn.Options.Filtering then
mCalcWidth := length(trim(fieldByName('caption').AsString)) * mWidth + 10
else
mCalcWidth := length(trim(fieldByName('caption').AsString)) * mWidth;
if fieldByName('width').AsInteger > mCalcWidth then
ADBColumn.Width := fieldByName('width').AsInteger
else
ADBColumn.Width := mCalcWidth;
ADBColumn.Visible := fieldByName('visible').AsBoolean;
ADBColumn.Hidden := not fieldByName('visible').AsBoolean;
ADBColumn.HeaderAlignmentHorz := taCenter;
ADBColumn.MinWidth := 100;
ADBColumn.name := mColumnName;
ADBColumn.Options.Editing := not fieldByName('ReadOnly').AsBoolean;
ADBColumn.Options.Focusing := not fieldByName('ReadOnly').AsBoolean;
/// /////////////
// <20><><EFBFBD><EFBFBD>footer
{
if HasFooter then
begin
if fieldByName('FooterFlag').AsBoolean then
begin
CreateFooterCol(tv1,ADBColumn,ADBColumn.DataBinding.FieldName
,trim(fieldByName('FooterType').AsString));
end;
end;
}
Next;
end;
tv1.optionsView.Footer := HasFooter;
close;
end;
finally
tv1.EndUpdate;
end;
end;
/// ///////////////////////////////////////////////////
//
/// ////////////////////////////////////////////////////
function TWindowFormDeSign.IsHasDesignRight(ADOTmp: TADOQuery): boolean;
begin
result := false;
try
/// ////////////////////////////////////
// Ȩ<>޿<EFBFBD><DEBF><EFBFBD>
with ADOTmp do
begin
close;
sql.Clear;
Filtered := false;
sql.Add('select count(userid) as cnt');
sql.Add('from sy_user A');
sql.Add('where userid=' + quotedStr(dcode));
sql.Add('and canDesign=1');
sql.Add('and valid=''Y''');
open;
if fieldByName('cnt').AsInteger > 0 then
begin
result := true;
end;
close;
end;
except
application.MessageBox('<27><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', 0);
end;
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><D8BC><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
// mWinType<70><65>0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0BCAD><EFBFBD>ڣ<EFBFBD>5:<3A><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// /////////////////////////////////////////////////////////////////
procedure TWindowFormDeSign.OpenContainerDesign(containerCtrl: TwinControl);
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;
mdesignCode: string;
begin
mdesignCode := fFormName + '_' + intTostr(fFormId) + '_' + containerCtrl.name;
if not IsHasDesignRight(ADOQueryTmp) then
exit;
/// ////////////////////////////////////////
// <20><><EFBFBD>浱ǰ<E6B5B1>ؼ<EFBFBD><D8BC><EFBFBD>Ϣ
if not SaveContainerControInfo(containerCtrl, ADOQueryCmd, mdesignCode, containerCtrl.Tag) then
begin
exit;
end;
if trim(fWhatDesign) = '' then
begin
if FileExists(ExtractFilePath(application.ExeName) + 'WinFormDesign.EXE') then
begin
WinExec(PAnsiChar(ExtractFilePath(application.ExeName) + 'WinFormDesign.exe ' + mdesignCode + ' ' + DName), SW_SHOWNORMAL);
end;
end
else
begin
/// ////////////////////////////////////////
//
Th := LoadLibrary('RtDesign.dll');
if Th > 0 then
begin
try
Tp := GetProcAddress(Th, 'GetDllForm');
if Tp <> nil then
begin
Tf := TMyFunc(Tp);
newh := Tf(application, 0, 1, pchar(dcode), pchar(DName), pchar(DConString), pchar(fFormCaption + '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'), pchar(mdesignCode), pchar(''));
end
else
begin
ShowMessage('<27><><EFBFBD><EFBFBD>RtDesign.dllʱ<6C><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!');
end;
finally
// FreeLibrary(Th);
end;
end
else
begin
ShowMessage('<27>Ҳ<EFBFBD><D2B2><EFBFBD>RtDesign.dll');
end;
InitContainerControls(mdesignCode, containerCtrl);
end;
end;
/// /////////////////////////////////////////////////////////////////
// <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڿؼ<DABF><D8BC><EFBFBD>Ϣ
/// /////////////////////////////////////////////////////////////////
function TWindowFormDeSign.InitContainerControls(mdesignCode: string; containerCtrl: TwinControl): boolean;
var
mParentHeight: integer;
mContrlName: string;
i: integer;
begin
mParentHeight := 0;
result := false;
try
with ADOQueryTmp do
begin
close;
sql.Clear;
sql.Add('select * from SD_FormControl_Design');
sql.Add('where designCode=' + quotedStr(mdesignCode));
open;
if RecordCount <= 0 then
begin
exit;
end;
mParentHeight := fieldByName('ParentHeight').AsInteger;
containerCtrl.Height := mParentHeight;
end;
/// ///////////////////////////////
// <20>ؼ<EFBFBD>
with ADOQueryTmp do
begin
close;
sql.Clear;
sql.Add('select * from SD_FormControl_Design_sub');
sql.Add('where designCode=' + quotedStr(mdesignCode));
sql.Add('and isadd=0');
open;
end;
/// ///////////////////////////
for i := containerCtrl.ControlCount - 1 downto 0 do
begin
mContrlName := containerCtrl.Controls[i].name;
if ADOQueryTmp.locate('controlName', mContrlName, []) then
begin
TwinControl(containerCtrl.Controls[i]).Left := ADOQueryTmp.fieldByName('controlLeft').AsInteger;
TwinControl(containerCtrl.Controls[i]).Top := ADOQueryTmp.fieldByName('controlTop').AsInteger;
TwinControl(containerCtrl.Controls[i]).Width := ADOQueryTmp.fieldByName('controlWidth').AsInteger;
TwinControl(containerCtrl.Controls[i]).Height := ADOQueryTmp.fieldByName('controlHeight').AsInteger;
TwinControl(containerCtrl.Controls[i]).Visible := ADOQueryTmp.fieldByName('visible').AsBoolean;
TwinControl(containerCtrl.Controls[i]).TabOrder := ADOQueryTmp.fieldByName('TabOrder').AsInteger;
if containerCtrl.Controls[i] is Tlabel then
begin
Tlabel(containerCtrl.Controls[i]).Caption := trim(ADOQueryTmp.fieldByName('Caption').AsString);
continue;
end
else if containerCtrl.Controls[i] is TcxButton then
begin
TcxButton(containerCtrl.Controls[i]).Caption := trim(ADOQueryTmp.fieldByName('Caption').AsString);
continue;
end
else if containerCtrl.Controls[i] is TButton then
begin
TButton(containerCtrl.Controls[i]).Caption := trim(ADOQueryTmp.fieldByName('Caption').AsString);
continue;
end
else if containerCtrl.Controls[i] is TRadioButton then
begin
TRadioButton(containerCtrl.Controls[i]).Caption := trim(ADOQueryTmp.fieldByName('Caption').AsString);
continue;
end;
if trim(ADOQueryTmp.fieldByName('InitSql').AsString) <> '' then
begin
if (containerCtrl.Controls[i] is TcomBoBox) or (containerCtrl.Controls[i] is TcxComboBox) then
begin
InitCtrlData(containerCtrl.Controls[i], trim(ADOQueryTmp.fieldByName('InitSql').AsString), trim(ADOQueryTmp.fieldByName('DefaultValue').AsString));
continue;
end;
if (containerCtrl.Controls[i] is Tdatetimepicker) then
begin
InitCtrlData(containerCtrl.Controls[i], trim(ADOQueryTmp.fieldByName('InitSql').AsString), '');
continue;
end;
if (containerCtrl.Controls[i] is TcxDateEdit) then
begin
InitCtrlData(containerCtrl.Controls[i], trim(ADOQueryTmp.fieldByName('InitSql').AsString), '');
continue;
end;
end;
/// /////////////////////////////
if trim(ADOQueryTmp.fieldByName('DefaultValue').AsString) <> '' then
begin
if (containerCtrl.Controls[i] is TEdit) then
begin
TEdit(containerCtrl.Controls[i]).Text := getChgDefaultValue(trim(ADOQueryTmp.fieldByName('DefaultValue').AsString));
continue;
end;
if (containerCtrl.Controls[i] is TcxTextEdit) then
begin
TcxTextEdit(containerCtrl.Controls[i]).Text := getChgDefaultValue(trim(ADOQueryTmp.fieldByName('DefaultValue').AsString));
continue;
end;
end;
end;
end;
result := true;
except
application.MessageBox('<27><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڿؼ<DABF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', 0);
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
//J := TcxGridDbTableView( Sender).DataController.GetSelectedRowIndex(i);
//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD>еĵ<D0B5><C4B5>е<EFBFBD>ֵ
// Sender.DataController.Edit;
// Sender.DataController.Values[J, idx] := true;
// Sender.Controller.EditingController.ShowEdit;
// Sender.DataController.Edit;
// TcxGridDbTableView( Sender).DataController.Values[J, idx] := true;
// TcxGridDbTableView( Sender).DataController.PostEditingData;
// Sender.DataController.SetValue(J, idx,true); ;
// Sender.DataController.Post(false);
// Sender.DataController.e
// Sender.DataController.Post(true);
// Sender.DataController.PostEditingData;
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;
aCV := ACanvas;
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),
// AStyle.Font, AStyle.TextColor, AStyle.Color);
aCV.Font, aCV.font.Color, aCV.Brush.color);
ADone := True;
end;
procedure TWindowFormDeSign.ReadINIFileSetInfo(mfontSize: integer);
var
programIni: Tinifile; //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
FileName: string;
begin
FileName := ExtractFilePath(Paramstr(0)) + 'SYSTEMSET.INI';
if not FileExists(FileName) then
exit;
try
programIni := Tinifile.create(FileName);
fFontSize := programIni.ReadInteger('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С', mfontSize);
finally
programIni.Free;
end;
end;
end.