📄 palettemodel.pas
字号:
procedure TPaletteModelFrom.DeleteMIClick(Sender: TObject);
begin
//Columns cannot be selected
if(Assigned(TablesTreeView.Selected))then
if(Assigned(TablesTreeView.Selected.Data))and
(TablesTreeView.Selected.ImageIndex<>1)and
(TablesTreeView.Selected.ImageIndex<>2)then
begin
TEERObj(TablesTreeView.Selected.Data).DeleteObj;
RefreshTablesTreeView(EERModel);
end;
end;
procedure TPaletteModelFrom.OptionsImgClick(Sender: TObject);
begin
PalettePopupMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
procedure TPaletteModelFrom.RefreshPalMIClick(Sender: TObject);
begin
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
RefreshTablesTreeView(TEERForm(MainForm.ActiveMDIChild).EERModel);
end;
procedure TPaletteModelFrom.FormActivate(Sender: TObject);
begin
//Application.MainForm.SetFocus;
end;
procedure TPaletteModelFrom.AddBtnClick(Sender: TObject);
var theEERTable: TEERTable;
theEvent: QCustomEventH;
begin
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
begin
//Create the new table
theEERTable:=TEERForm(MainForm.ActiveMDIChild).EERModel.NewTable(100, 100, True);
//Refresh the TreeView
RefreshTablesTreeView(TEERForm(MainForm.ActiveMDIChild).EERModel);
//Edit the new created table
theEvent := QCustomEvent_create(QEventType_EditTable, theEERTable);
sendCLXEvent(Application.MainForm.Handle, theEvent);
end;
end;
procedure TPaletteModelFrom.DeleteBtnClick(Sender: TObject);
begin
DeleteMIClick(self);
end;
procedure TPaletteModelFrom.FormDeactivate(Sender: TObject);
begin
{if(Visible)then
if(Not(DMMain.IsFormStayingOnTop(self)))then
QApplication_sendEventAndDelete(Application.MainForm.Handle, QCustomEvent_create(QEventType_RestoreStayOnTopForms, self));}
end;
procedure TPaletteModelFrom.ScrolltoselectedObjectMIClick(Sender: TObject);
begin
if(TablesTreeView.Selected<>nil)then
if(Assigned(TablesTreeView.Selected.Data))and
(TablesTreeView.Selected.ImageIndex<>1)and
(TablesTreeView.Selected.ImageIndex<>2)then
begin
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
TEERForm(MainForm.ActiveMDIChild).ScrollInView(
TEERObj(TablesTreeView.Selected.Data));
end;
end;
procedure TPaletteModelFrom.ShowLinkedModelsMIShow(Sender: TObject);
begin
MainForm.ShowLinkedModelsMIShow(Sender);
end;
procedure TPaletteModelFrom.ShowLinkedModelsMIClick(Sender: TObject);
begin
MainForm.ShowLinkedModelsMIClick(Sender);
end;
procedure TPaletteModelFrom.RefreshLinkedObjectsMIClick(Sender: TObject);
begin
MainForm.RefreshLinkedObjectsMIClick(Sender);
end;
procedure TPaletteModelFrom.TablesPBoxPaint(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 TPaletteModelFrom.TablesPBoxClick(Sender: TObject);
begin
TabsImg.BringToFront;
TablesPBox.BringToFront;
ModelPBox.BringToFront;
PageControl.ActivePage:=TablesSheet;
OptionsImg.BringToFront;
end;
procedure TPaletteModelFrom.ModelPBoxClick(Sender: TObject);
begin
//As long as the Model Page is not implemented
Exit;
Tabs2Img.BringToFront;
TablesPBox.BringToFront;
ModelPBox.BringToFront;
PageControl.ActivePage:=ModelSheet;
OptionsImg.BringToFront;
end;
procedure TPaletteModelFrom.TablesTreeViewMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var theNode: TTreeNode;
begin
if(MainForm.ActiveMDIChild=nil)then
Exit;
theNode:=TablesTreeView.GetNodeAt(X, Y);
//check if a table should be dragged
if(theNode<>nil)then
if(theNode.Data<>nil)then
if(TObject(theNode.Data) is TEERTable)then
begin
TablesTreeView.Selected:=theNode;
TablesTreeView.BeginDrag(False, 5);
end;
end;
procedure TPaletteModelFrom.TablesTreeViewDragOver(Sender, Source: TObject;
X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
if(MainForm.ActiveMDIChild=nil)then
Exit;
Accept:=False;
//Accept drag onto itself
if(Source is TTreeView)then
if(TTreeView(Source).Name='TablesTreeView')then
Accept:=True;
end;
procedure TPaletteModelFrom.TablesTreeViewDragDrop(Sender, Source: TObject;
X, Y: Integer);
var theNode: TTreeNode;
i, newpos: integer;
DraggedTable, TargetTable: TEERTable;
SelectedItemsList: TList;
begin
if(Source is TTreeView)and(MainForm.ActiveMDIChild<>nil)then
if(TTreeView(Source).Name='TablesTreeView')then
begin
TargetTable:=nil;
theNode:=TablesTreeView.GetNodeAt(X, Y);
if(theNode<>nil)then
if(theNode.Data<>nil)then
if(TObject(theNode.Data) is TEERTable)then
TargetTable:=TEERTable(theNode.Data);
//Get gragged Table
DraggedTable:=nil;
if(TablesTreeView.Selected<>nil)then
if(TablesTreeView.Selected.Data<>nil)then
if(TObject(TablesTreeView.Selected.Data) is TEERTable)then
DraggedTable:=TEERTable(TablesTreeView.Selected.Data);
if(TargetTable=DraggedTable)then
Exit;
//One Table is dragged
if(DraggedTable<>nil)then
begin
if(TargetTable<>nil)then
begin
if(TargetTable.OrderPos<DraggedTable.OrderPos)then
newpos:=TargetTable.OrderPos
else
newpos:=TargetTable.OrderPos+1;
//Move all Objects with an equal higher OrderPos down
for i:=0 to EERModel.ComponentCount-1 do
if(EERModel.Components[i].ClassParent=TEERObj)then
if(TEERObj(EERModel.Components[i]).OrderPos>=newpos)then
TEERObj(EERModel.Components[i]).OrderPos:=
TEERObj(EERModel.Components[i]).OrderPos+1;
DraggedTable.OrderPos:=newpos;
RefreshTablesTreeView(EERModel);
end
else
begin
//Move to last position
newpos:=0;
for i:=0 to EERModel.ComponentCount-1 do
if(EERModel.Components[i].ClassParent=TEERObj)then
if(TEERObj(EERModel.Components[i]).OrderPos>=newpos)then
newpos:=TEERObj(EERModel.Components[i]).OrderPos+1;
DraggedTable.OrderPos:=newpos;
RefreshTablesTreeView(EERModel);
end;
end
//Two or more tables might be dragged
else
begin
SelectedItemsList:=TList.Create;
try
for i:=0 to TablesTreeView.Items.Count-1 do
if(TablesTreeView.Items[i].Selected)and
(TablesTreeView.Items[i].Data<>nil)and
(TablesTreeView.Items[i].Level=0)then
if(TObject(TablesTreeView.Items[i].Data) is TEERTable)then
SelectedItemsList.Add(TablesTreeView.Items[i].Data);
if(SelectedItemsList.Count>0)then
begin
//Dragged onto another table
if(TargetTable<>nil)then
begin
if(TargetTable.OrderPos<TEERTable(SelectedItemsList[0]).OrderPos)then
newpos:=TargetTable.OrderPos
else
newpos:=TargetTable.OrderPos+1;
//Move all Objects with an equal higher OrderPos down
for i:=0 to EERModel.ComponentCount-1 do
if(EERModel.Components[i].ClassParent=TEERObj)then
if(TEERObj(EERModel.Components[i]).OrderPos>=newpos)then
TEERObj(EERModel.Components[i]).OrderPos:=
TEERObj(EERModel.Components[i]).OrderPos+SelectedItemsList.Count;
for i:=0 to SelectedItemsList.Count-1 do
TEERTable(SelectedItemsList[i]).OrderPos:=newpos+i;
RefreshTablesTreeView(EERModel);
end
else
begin
//Move to last position
newpos:=0;
for i:=0 to EERModel.ComponentCount-1 do
if(EERModel.Components[i].ClassParent=TEERObj)then
if(TEERObj(EERModel.Components[i]).OrderPos>=newpos)then
newpos:=TEERObj(EERModel.Components[i]).OrderPos+1;
for i:=0 to SelectedItemsList.Count-1 do
TEERTable(SelectedItemsList[i]).OrderPos:=newpos+i+1;
RefreshTablesTreeView(EERModel);
end;
end;
finally
SelectedItemsList.Free;
end;
end;
end;
end;
procedure TPaletteModelFrom.ReorderTablesbyNameMIClick(Sender: TObject);
var ObjList: TList;
NumberList: TStringList;
i: integer;
begin
ObjList:=TList.Create;
NumberList:=TStringList.Create;
try
EERModel.GetEERObjectList([EERTable], ObjList);
EERModel.SortEERObjectListByObjName(ObjList);
for i:=0 to ObjList.Count-1 do
NumberList.Add(FormatFloat('00000000', TEERTable(ObjList[i]).OrderPos));
NumberList.Sort;
for i:=0 to ObjList.Count-1 do
TEERTable(ObjList[i]).OrderPos:=StrToInt(NumberList[i]);
RefreshTablesTreeView(EERModel);
finally
ObjList.Free;
NumberList.Free;
end;
end;
procedure TPaletteModelFrom.ReorderTablesbyRegionMIClick(Sender: TObject);
var ObjList, RegionList, AlreadySorted: TList;
NumberList: TStringList;
i, j, k: integer;
begin
ObjList:=TList.Create;
RegionList:=TList.Create;
AlreadySorted:=TList.Create;
NumberList:=TStringList.Create;
try
//Build NumberList
EERModel.GetEERObjectList([EERTable], ObjList);
EERModel.SortEERObjectListByObjName(ObjList);
for i:=0 to ObjList.Count-1 do
NumberList.Add(FormatFloat('00000000', TEERTable(ObjList[i]).OrderPos));
NumberList.Sort;
//Get regions
EERModel.GetEERObjectList([EERRegion], RegionList);
EERModel.SortEERObjectListByObjName(RegionList);
k:=0;
for i:=0 to RegionList.Count-1 do
begin
ObjList.Clear;
TEERRegion(RegionList[i]).GetEERObjsInRegion([EERTable], ObjList, False);
EERModel.SortEERObjectListByObjName(ObjList);
for j:=0 to ObjList.Count-1 do
begin
//If the table has not already been sorted (on two regions for the same time)
if(AlreadySorted.IndexOf(ObjList[j])=-1)then
begin
TEERTable(ObjList[j]).OrderPos:=StrToInt(NumberList[k]);
AlreadySorted.Add(ObjList[j]);
inc(k);
end;
end;
end;
//Now sort the tables which are on no region
EERModel.GetEERObjectList([EERTable], ObjList);
EERModel.SortEERObjectListByObjName(ObjList);
for i:=0 to ObjList.Count-1 do
if(AlreadySorted.IndexOf(ObjList[i])=-1)then
begin
TEERTable(ObjList[i]).OrderPos:=StrToInt(NumberList[k]);
inc(k);
end;
RefreshTablesTreeView(EERModel);
finally
ObjList.Free;
RegionList.Free;
NumberList.Free;
AlreadySorted.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -