⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 palettedatatypes.pas

📁 DBDesigner 4 is a database design system that integrates database design, modelling, creation and ma
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -