adbtmple.pas

来自「delphi编程控件」· PAS 代码 · 共 600 行 · 第 1/2 页

PAS
600
字号
        Bar.Groups[i].Items[j].Free
      else Inc(j);  
  end;
end;

procedure TFAutoRepositoryEditor.BDSAddClick(Sender: TObject);
Var
  DS : TDataSet;
  group : TAutoOutLookGroup;
  DefDataSet : TAutoDefDataSet;
begin
  DS := GetNewAutoDefDataSet(Repository);
  if (DS <> Nil) then begin
    DefDataSet := Repository.DefDataSets.Add;
    DefDataSet.DataSet := DS;
    group := Bar.Groups.Add;
    group.Caption := DS.Owner.Name + '.' + DS.Name;
    ModifyDesigner;
  end;
end;

procedure TFAutoRepositoryEditor.BarChangeActiveGroup(Sender: TObject);
begin
  BDSDelete.Enabled := Bar.ActiveGroup <> Nil;
  BFAdd.Enabled := BDSDelete.Enabled;
  if(Bar.ActiveGroup <> Nil) then begin
    FCurDefDataSet := Repository.DefDataSets[Bar.ActiveGroupIndex];
    LDSDataSetName.Caption := FCurDefDataSet.DataSet.Name;
    LDSDataSetClass.Caption := FCurDefDataSet.DataSet.ClassName;
    if (Bar.ActiveGroup.Items <> Nil) And (Bar.ActiveGroup.Items.Count > 0) then
      Bar.SelectedItem := Bar.ActiveGroup.Items[0]
    else Bar.SelectedItem := Nil;
  end else begin
    FCurDefDataSet := Nil;
    BarChangeSelectedItem(Sender);
    LDSDataSetName.Caption := '';
    LDSDataSetClass.Caption := '';    
  end;
end;

procedure TFAutoRepositoryEditor.Button3Click(Sender: TObject);
begin
  if(DefControlsForm = Nil) then
    DefControlsForm := TFAutoRepositoryDefControls.Create(self);
  DefControlsForm.Show;
end;

procedure TFAutoRepositoryEditor.BFAddClick(Sender: TObject);
Var
  DefField : TAutoDefField;
  item : TAutoOutLookItem;
begin
  DefField := CreateAutoDefField(self);
  if(DefField <> Nil) then begin
    item := Bar.ActiveGroup.Items.Add;
    item.ItemObject := DefField;
    item.StoredItem := StoreItem1;
    item.Caption := DefField.DataField;
    if(DefField.Field <> Nil) then
      Item.LargeImage := GetImageIndexByFieldType(DefField.Field.DataType);
    Bar.SelectedItem := item;
    ModifyDesigner;
  end;
end;

procedure TFAutoRepositoryEditor.BarChangeSelectedItem(Sender: TObject);
begin
  if(Bar.SelectedItem = Nil) And (Bar.ActiveGroup <> Nil)
  And (Bar.ActiveGroup.Items.Count > 0) then
    Bar.SelectedItem := Bar.ActiveGroup.Items[0];

  BFDelete.Enabled := Bar.SelectedItem <> Nil;
  BFClear.Enabled := BFDelete.Enabled;
  LFieldName.Caption := '';
  LFieldType.Caption := '';
  LDefControlName.Caption := '';
  LDefControlType.Caption := '';
  if(Bar.SelectedItem <> Nil) then begin
    FCurDefDataField := TAutoDefField(Bar.SelectedItem.ItemObject);
    if(FCurDefDataField.Field <> Nil) then begin
      LFieldName.Caption := FCurDefDataField.Field.FieldName;
      LFieldType.Caption := FieldTypeToString(FCurDefDataField.Field.DataType);
    end;
    if(FCurDefDataField.DBDefControl <> Nil) then begin    
      LDefControlName.Caption := FCurDefDataField.DBDefControl.Name;
      LDefControlType.Caption := DBDefControlTypeToString(FCurDefDataField.DBDefControl.DBDefControlType);
    end;
  end else  FCurDefDataField := Nil;
  BFCustomizeDefControl.Enabled := BFDelete.Enabled And (FCurDefDataField.DBDefControl <> Nil);
  BViewDefControl.Enabled := BFCustomizeDefControl.Enabled;
end;

procedure TFAutoRepositoryEditor.BFCustomizeDefControlClick(
  Sender: TObject);
Var
  ADefControl : TAutoDBDefControl;
begin
  ADefControl := SelectAutoDBDefControl(self);
  if(ADefControl <> Nil) then begin
    FCurDefDataField.DBDefControl := ADefControl;
    BarChangeSelectedItem(Nil);
    ModifyDesigner;
  end;
end;

procedure TFAutoRepositoryEditor.BViewDefControlClick(Sender: TObject);
begin
  ShowAutoDefField(FCurDefDataField);
end;

procedure TFAutoRepositoryEditor.BDSDeleteClick(Sender: TObject);
begin
  if(Bar.ActiveGroup <> Nil) then begin
    FCurDefDataSet.Free;
    Bar.ActiveGroup.Free;
    ModifyDesigner;
  end;
end;

procedure TFAutoRepositoryEditor.BFDeleteClick(Sender: TObject);
begin
  if(Bar.SelectedItem <> Nil) then begin
    FCurDefDataField.Free;
    ModifyDesigner;  
  end;
end;

procedure TFAutoRepositoryEditor.BFClearClick(Sender: TObject);
begin
  if(Bar.ActiveGroup <> Nil) then begin
    FCurDefDataSet.DefFields.Clear;
    Bar.ActiveGroup.Items.Clear;
    ModifyDesigner;
  end;
end;

procedure TFAutoRepositoryEditor.BAddGridTemplateClick(Sender: TObject);
Var
  AGridTemplate : TAutoRepositoryChild;
begin
  AGridTemplate := FRepository.CreateGridTemplate;
  GridTemplateList.Items.AddObject(AGridTemplate.Name, AGridTemplate);
  AGridTemplate.OnChangeName := GridTemplateChangeName;
  GridTemplateList.ItemIndex := GridTemplateList.Items.Count - 1;
  GridTemplateListClick(Sender);
  ModifyDesigner;
end;

procedure TFAutoRepositoryEditor.GridTemplateListClick(Sender: TObject);
Var
  ACurGridTemplate : TAutoDBGridTemplate;
begin
  if(GridTemplateList.Items.Count > 0) and (GridTemplateList.ItemIndex < 0)then
    GridTemplateList.ItemIndex := 0;
  if (GridTemplateList.ItemIndex > -1)
  and (GridTemplateList.ItemIndex < GridTemplateList.Items.Count) then
    ACurGridTemplate := TAutoDBGridTemplate(GridTemplateList.Items.Objects[GridTemplateList.ItemIndex])
  else ACurGridTemplate := Nil;
  if(FCurGridTemplate <> ACurGridTemplate) then begin
    FCurGridTemplate := ACurGridTemplate;
    BDeleteGridTemplate.Enabled := (FCurGridTemplate <> Nil);
    BCustGridLayout.Enabled := BDeleteGridTemplate.Enabled;
  end;
  if(FCurGridTemplate <> Nil) And (FRepository.Designer <> Nil) then
{$IFDEF DELPHI4}IFormDesigner{$ELSE}TFormDesigner{$ENDIF}(Repository.Designer).SelectComponent(FCurGridTemplate);
end;

procedure TFAutoRepositoryEditor.FormCreate(Sender: TObject);
Var
  bmp : TBitmap;
  i : Integer;
  St : String;
begin
  FCurGridTemplate := Nil;
  FCurPanelTemplate := Nil;
  BDSAdd.Caption := LoadStr(ACB_ADDEX);
  BDSDelete.Caption := LoadStr(ACB_DELETE);
  BFAdd.Caption := LoadStr(ACB_ADDEX);
  BFDelete.Caption := LoadStr(ACB_DELETE);
  BFClear.Caption := LoadStr(ACB_CLEAR);
  BAddGridTemplate.Caption := LoadStr(ACB_ADD);
  BDeleteGridTemplate.Caption := LoadStr(ACB_DELETE);
  BAddPanelTemplate.Caption := LoadStr(ACB_ADD);
  BDeletePanelTemplate.Caption := LoadStr(ACB_DELETE);
  BClose.Caption := LoadStr(ACB_CLOSE);
  BHelp.Caption := LoadStr(ACB_HELP);
  BCustGridLayout.Caption := LoadStr(ACDB_GRIDEDITOR);
  BCustPanelLayout.Caption := LoadStr(ACDB_PANELEDITOR);
  GBGridLayouts.Caption := LoadStr(ACDB_REPOSGRIDLAYOUTS);
  GBPanelLayouts.Caption := LoadStr(ACDB_REPOSPANELLAYOUTS);
  TS2.Caption := LoadStr(ACDB_REPOSCONTROLTEMPLATES);
  TS1.Caption := LoadStr(ACDB_REPOSDEFFIELDS);
  Button3.Caption := LoadStr(ACDB_REPOSDEFCONTROLEDITOR);
  BViewDefControl.Caption := LoadStr(ACDB_REPOSVIEWDEFCONTROL);
  BFCustomizeDefControl.Caption := LoadStr(ACDB_REPOSCUSTDEFCONTROL);
  GBDefDataSet.Caption := LoadStr(ACDB_REPOSDEFDATASET);
  GBDefField.Caption := LoadStr(ACDB_REPOSDEFFIELD);
  LDataSetName.Caption := LoadStr(ACDB_DATASETNAME);
  LDataSetClass.Caption := LoadStr(ACDB_DATASETCLASS);
  LCFieldName.Caption := LoadStr(ACDB_FIELDNAME);
  LCFieldType.Caption := LoadStr(ACDB_FIELDTYPE);
  LCDBDefControlName.Caption := LoadStr(ACDB_DBDEFCONTROLNAME);
  LCDBDefControlType.Caption := LoadStr(ACDB_DBDEFCONTROLTYPE);
  bmp := TBitmap.Create;
  bmp.Height := ImageList1.Height;
  bmp.Width := ImageList1.Width;  
  for i := 1 to ACLDBTEMPLRESIMAGECOUNT do
  begin
    St := ACLDBTEMPLRESIMAGESTR;
    if(i < 10) then
     St := St + '0';
    St := St + IntToStr(i);
    bmp.Handle := LoadBitmap(HInstance, PChar(St));
    if(bmp.Handle > 0) then
      ImageList1.Add(bmp, Nil);
  end;
  bmp.Free;
end;

procedure TFAutoRepositoryEditor.BDeleteGridTemplateClick(Sender: TObject);
Var
  OldItemIndex : Integer;
begin
  if(FCurGridTemplate <> Nil) then begin
    FCurGridTemplate.Free;
    OldItemIndex := GridTemplateList.ItemIndex;
    GridTemplateList.Items.Delete(OldItemIndex);
    if(OldItemIndex < GridTemplateList.Items.Count) then
      GridTemplateList.ItemIndex := OldItemIndex;
    GridTemplateListClick(Sender);
    ModifyDesigner;
  end;
end;

procedure TFAutoRepositoryEditor.BCustGridLayoutClick(Sender: TObject);
begin
  if(ShowAutoGridLayoutEditor(FCurGridTemplate.GridLayout)) then
    ModifyDesigner;
end;

procedure TFAutoRepositoryEditor.PanelTemplateListClick(Sender: TObject);
Var
  ACurPanelTemplate : TAutoDBPanelTemplate;
begin
  if(PanelTemplateList.Items.Count > 0) And (PanelTemplateList.ItemIndex < 0)then
    PanelTemplateList.ItemIndex := 0;
  if (PanelTemplateList.ItemIndex > -1)
  and (PanelTemplateList.ItemIndex < PanelTemplateList.Items.Count) then
    ACurPanelTemplate := TAutoDBPanelTemplate(PanelTemplateList.Items.Objects[PanelTemplateList.ItemIndex])
  else ACurPanelTemplate := Nil;
  if(FCurPanelTemplate <> ACurPanelTemplate) then begin
    FCurPanelTemplate := ACurPanelTemplate;
    BDeletePanelTemplate.Enabled := (FCurPanelTemplate <> Nil);
    BCustPanelLayout.Enabled := BDeletePanelTemplate.Enabled;
  end;
  if(FCurPanelTemplate <> Nil) And (FRepository.Designer <> Nil) then
{$IFDEF DELPHI4}IFormDesigner{$ELSE}TFormDesigner{$ENDIF}(Repository.Designer).SelectComponent(FCurPanelTemplate);
end;

procedure TFAutoRepositoryEditor.BAddPanelTemplateClick(Sender: TObject);
Var
  APanelTemplate : TAutoRepositoryChild;
begin
  APanelTemplate := FRepository.CreatePanelTemplate;
  PanelTemplateList.Items.AddObject(APanelTemplate.Name, APanelTemplate);
  APanelTemplate.OnChangeName := PanelTemplateChangeName;
  PanelTemplateList.ItemIndex := PanelTemplateList.Items.Count - 1;
  PanelTemplateListClick(Sender);
  ModifyDesigner;
end;

procedure TFAutoRepositoryEditor.BDeletePanelTemplateClick(
  Sender: TObject);
Var
  OldItemIndex : Integer;
begin
  if(FCurPanelTemplate <> Nil) then begin
    FCurPanelTemplate.Free;
    OldItemIndex := PanelTemplateList.ItemIndex;
    PanelTemplateList.Items.Delete(OldItemIndex);
    if(OldItemIndex < PanelTemplateList.Items.Count) then
      PanelTemplateList.ItemIndex := OldItemIndex;
    PanelTemplateListClick(Sender);
    ModifyDesigner;
  end;
end;

procedure TFAutoRepositoryEditor.BCustPanelLayoutClick(Sender: TObject);
begin
  if(ShowAutoPanelLayoutEditor(FCurPanelTemplate.PanelLayout)) then
    ModifyDesigner;
end;

procedure TFAutoRepositoryEditor.BCloseClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?