📄 palettedatatypes.pas
字号:
begin
theItem:=CommonDataTypesListView.GetItemAt(X, Y);
if(theItem<>nil)then
CommonDataTypesListView.Selected:=theItem;
CommonDataTypesListView.BeginDrag(False, 5);
end;
procedure TPaletteDataTypesForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:=False;
Hide;
TMainForm(Application.MainForm).DatatypesMI.Checked:=False;
end;
procedure TPaletteDataTypesForm.FormDestroy(Sender: TObject);
begin
DMMain.SaveWinPos(self, False);
end;
procedure TPaletteDataTypesForm.FormShow(Sender: TObject);
begin
DMMain.RestoreWinPos(self, False);
end;
procedure TPaletteDataTypesForm.DelSBtnClick(Sender: TObject);
begin
if(PageControl.ActivePage=CommonDatatypesSheet)then
DelDatatypefromCommonDatatypesMIClick(self)
else if(PageControl.ActivePage=AllDataTypesSheet)then
DeleteDatatypeMIClick(self);
end;
procedure TPaletteDataTypesForm.AddSBtnClick(Sender: TObject);
var newDT: TEERDatatype;
i, newid: integer;
begin
if(EERModel<>nil)then
begin
//Get next id
newid:=1;
for i:=0 to EERModel.Datatypes.Count-1 do
if(newid<=TEERDatatype(EERModel.Datatypes[i]).id)then
newid:=TEERDatatype(EERModel.Datatypes[i]).id+1;
//add new Datatype
//new(newDT);
newDT:=TEERDatatype.Create(EERModel);
try
newDT.id:=newid;
newDT.TypeName:=DMMain.GetTranslatedMessage('NewDatatype', 231);
newDT.group:=4;
newDT.description:=DMMain.GetTranslatedMessage('User defined Datatype.', 232);
newDT.ParamCount:=0;
newDT.OptionCount:=0;
newDT.ParamRequired:=false;
newDT.SynonymGroup:=0;
EERModel.Datatypes.Add(newDT);
except
newDT.Free;
end;
if(PageControl.ActivePage=CommonDatatypesSheet)then
EERModel.CommonDataType.Add(IntToStr(newid));
DisplayDataTypes(EERModel);
//Display new created datatype
EditorDatatypeForm:=TEditorDatatypeForm.Create(Application.Mainform);
try
//Call the Datatype Editor
EditorDatatypeForm.SetDataType(EERModel, newDT);
EditorDatatypeForm.ShowModal;
DisplayDataTypes(EERModel);
finally
EditorDatatypeForm.Free;
end;
Application.MainForm.SetFocus;
end;
end;
procedure TPaletteDataTypesForm.OptionsImgClick(Sender: TObject);
begin
DatatypesPopupMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
procedure TPaletteDataTypesForm.CommonDataTypesListViewDragDrop(Sender,
Source: TObject; X, Y: Integer);
var newPos, oldid, p: integer;
begin
//Droped on itself
if(Sender=Source)and(CommonDataTypesListViewRowHeight>-1)and(CommonDataTypesListView.Selected<>nil)then
begin
if(Assigned(CommonDataTypesListView.Selected.Data))then
begin
newPos:=Y div CommonDataTypesListViewRowHeight;
oldid:=TEERDatatype(CommonDataTypesListView.Selected.Data).id;
p:=EERModel.CommonDataType.IndexOf(IntToStr(oldid));
if(p>-1)then
EERModel.CommonDataType.Delete(p);
EERModel.CommonDataType.Insert(newPos, IntToStr(oldid));
DisplayDataTypes(EERModel);
end;
end;
end;
procedure TPaletteDataTypesForm.CommonDataTypesListViewDragOver(Sender,
Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept:=False;
if(Source<>nil)then
Accept:=(Sender=Source);
end;
procedure TPaletteDataTypesForm.AddDatatypetoCommonMIShow(Sender: TObject);
begin
if(PageControl.ActivePage=AllDataTypesSheet)and
(AllDataTypesTV.Selected<>nil)then
TMenuItem(Sender).Enabled:=Assigned(AllDataTypesTV.Selected.Data)
else
TMenuItem(Sender).Enabled:=False;
end;
procedure TPaletteDataTypesForm.DelDatatypefromCommonDatatypesMIShow(
Sender: TObject);
begin
TMenuItem(Sender).Enabled:=(PageControl.ActivePage=CommonDataTypesSheet);
end;
procedure TPaletteDataTypesForm.EditDatatypeMIShow(Sender: TObject);
begin
if(PageControl.ActivePage=AllDataTypesSheet)and
(AllDataTypesTV.Selected<>nil)then
TMenuItem(Sender).Enabled:=Assigned(AllDataTypesTV.Selected.Data)
else
TMenuItem(Sender).Enabled:=False;
if(PageControl.ActivePage=CommonDataTypesSheet)and
(CommonDataTypesListView.Selected<>nil)then
TMenuItem(Sender).Enabled:=True;
end;
function TPaletteDataTypesForm.GetActiveDatatype: TEERDatatype;
begin
GetActiveDatatype:=nil;
//Get id if CommonDatatypesSheet is active
if(PageControl.ActivePage=CommonDatatypesSheet)and
(CommonDataTypesListView.Selected<>nil)then
begin
if(Assigned(CommonDataTypesListView.Selected.Data))then
GetActiveDatatype:=TEERDatatype(CommonDataTypesListView.Selected.Data);
end;
//Get id if AllDatatypesSheet is active
if(PageControl.ActivePage=AllDatatypesSheet)and
(AllDataTypesTV.Selected<>nil)then
begin
if(Assigned(AllDataTypesTV.Selected.Data))then
GetActiveDatatype:=TEERDatatype(AllDataTypesTV.Selected.Data);
end;
end;
procedure TPaletteDataTypesForm.DelDatatypefromCommonDatatypesMIClick(
Sender: TObject);
var p: integer;
begin
if(GetActiveDatatype<>nil)then
begin
p:=EERModel.CommonDataType.IndexOf(IntToStr(GetActiveDatatype.id));
if(p>-1)then
EERModel.CommonDataType.Delete(p);
DisplayDataTypes(EERModel);
end;
end;
procedure TPaletteDataTypesForm.DeleteDatatypeMIClick(Sender: TObject);
var theDT: TEERDatatype;
id, i, j: integer;
begin
theDT:=GetActiveDatatype;
if(theDT<>nil)then
begin
if(theDT.id=EERModel.DefaultDataType)then
ShowMessage(DMMain.GetTranslatedMessage('You cannot delete the default datatype of the model. '+#13#10+
'Change the default datatype in the Model Options.', 233))
else if(MessageDlg(DMMain.GetTranslatedMessage('Do you really want to delete the selected datatype %s?'+#13#10+
'The datatype will be replaced by the default datatype if it is used in existing tables.', 234, theDT.TypeName),
mtConfirmation, [mbYes, mbNo], 0)=mrYes)then
begin
//Delete from common Datatypes
DelDatatypefromCommonDatatypesMIClick(self);
id:=theDT.id;
//Replace datatype in Tables
for i:=0 to EERModel.ComponentCount-1 do
begin
if(EERModel.Components[i].ClassnameIs('TEERTable'))then
begin
for j:=0 to TEERTable(EERModel.Components[i]).Columns.Count-1 do
begin
if(TEERColumn(TEERTable(EERModel.Components[i]).Columns[j]).idDatatype=id)then
TEERColumn(TEERTable(EERModel.Components[i]).Columns[j]).idDatatype:=EERModel.DefaultDataType;
end;
end;
end;
//Remove from Datatypes
EERModel.Datatypes.Delete(EERModel.Datatypes.IndexOf(theDT));
DisplayDataTypes(EERModel);
EERModel.Refresh;
end;
end;
end;
procedure TPaletteDataTypesForm.AddDatatypetoCommonMIClick(
Sender: TObject);
begin
if(PageControl.ActivePage=AllDatatypesSheet)then
begin
if(GetActiveDatatype<>nil)then
begin
EERModel.CommonDataType.Add(IntToStr(GetActiveDatatype.id));
DisplayDataTypes(EERModel);
end;
end;
end;
procedure TPaletteDataTypesForm.ReinitialMIClick(Sender: TObject);
var i, j: integer;
begin
if(MainForm.ActiveMDIChild<>nil)then
if(MessageDlg(DMMain.GetTranslatedMessage('Do you really want to reset the datatypes '+
'to the initial configuration?'+#13#10+
'Manual added datatypes will be replaced by the default datatype if they are used in existing tables.', 235),
mtConfirmation, [mbYes, mbNo], 0)=mrYes)then
begin
EERModel.LoadDataTypesFromIniFile;
//Replace datatype in Tables
for i:=0 to EERModel.ComponentCount-1 do
begin
if(EERModel.Components[i].ClassnameIs('TEERTable'))then
begin
for j:=0 to TEERTable(EERModel.Components[i]).Columns.Count-1 do
begin
if(EERModel.GetDataType(TEERColumn(TEERTable(EERModel.Components[i]).Columns[j]).idDatatype)=nil)then
TEERColumn(TEERTable(EERModel.Components[i]).Columns[j]).idDatatype:=EERModel.DefaultDataType;
end;
end;
end;
DisplayDataTypes(EERModel);
EERModel.Refresh;
end;
end;
procedure TPaletteDataTypesForm.ReplaceDatatypeMIClick(Sender: TObject);
begin
if(MainForm.ActiveMDIChild<>nil)then
begin
PaletteDataTypesReplaceForm:=TPaletteDataTypesReplaceForm.Create(Application.MainForm);
try
PaletteDataTypesReplaceForm.SetModel(EERModel);
PaletteDataTypesReplaceForm.ShowModal;
finally
PaletteDataTypesReplaceForm.Free;
end;
end;
end;
procedure TPaletteDataTypesForm.FormDeactivate(Sender: TObject);
begin
if(Visible)then
if(Not(DMMain.IsFormStayingOnTop(self)))then
sendCLXEvent(Application.MainForm.Handle, QCustomEvent_create(QEventType_RestoreStayOnTopForms, self));
end;
procedure TPaletteDataTypesForm.PageControlResize(Sender: TObject);
begin
AllDataTypesTV.Height:=AllDataTypesSheet.Height+19;
end;
procedure TPaletteDataTypesForm.CommonDataTypesListViewMouseEnter(
Sender: TObject);
begin
CommonDataTypesListView.SetFocus;
end;
procedure TPaletteDataTypesForm.AllDataTypesTVMouseEnter(Sender: TObject);
begin
AllDataTypesTV.SetFocus;
end;
procedure TPaletteDataTypesForm.AllDataTypesTVMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var theItem: TTreeNode;
begin
theItem:=AllDataTypesTV.GetNodeAt(X, Y);
if(theItem<>nil)then
begin
theItem.MakeVisible;
AllDataTypesTV.Selected:=theItem;
end;
AllDataTypesTV.BeginDrag(False, 5);
end;
procedure TPaletteDataTypesForm.CommonDatatypesPBoxPaint(Sender: TObject);
begin
//Paint Text (for XTF smooth fonts)
TPaintBox(Sender).Canvas.Font.Color:=clBlack;
TPaintBox(Sender).Canvas.TextOut(0, 0,
DMMain.GetTranslatedMessage('', TPaintBox(Sender).Tag));
end;
procedure TPaletteDataTypesForm.CommonDatatypesPBoxClick(Sender: TObject);
begin
TabsImg.BringToFront;
CommonDatatypesPBox.BringToFront;
AllDatatypesPBox.BringToFront;
PageControl.ActivePage:=CommonDatatypesSheet;
OptionsImg.BringToFront;
end;
procedure TPaletteDataTypesForm.AllDatatypesPBoxClick(Sender: TObject);
begin
Tabs2Img.BringToFront;
CommonDatatypesPBox.BringToFront;
AllDatatypesPBox.BringToFront;
PageControl.ActivePage:=AllDataTypesSheet;
OptionsImg.BringToFront;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -