adbpanel.pas
来自「delphi编程控件」· PAS 代码 · 共 2,248 行 · 第 1/5 页
PAS
2,248 行
if ppvLabelLayout in FAssignedValues then
Result := FLabelLayout
else Result := DefaultLabelLayout;
end;
procedure TAutoPanelPage.SetCaption(Value : String);
begin
if(FCaption <> Value) then begin
FCaption := Value;
Changed;
end;
end;
procedure TAutoPanelPage.SetAlignment(Value : TAlignment);
begin
if(FAlignment <> Value) then begin
Include(FAssignedValues, ppvAlignment);
FAlignment := Value;
Changed;
end;
end;
procedure TAutoPanelPage.SetColor(Value : TColor);
begin
if(FColor <> Value) then begin
Include(FAssignedValues, ppvColor);
FColor := Value;
Changed;
end;
end;
procedure TAutoPanelPage.SetControlLayout(Value : TAutoControlLayout);
begin
if(ControlLayout <> Value) then begin
Include(FAssignedValues, ppvControlLayout);
FControlLayout := Value;
Changed;
end;
end;
procedure TAutoPanelPage.SetLabelLayout(Value : TAutoLabelLayout);
begin
if(LabelLayout <> Value) then begin
Include(FAssignedValues, ppvLabelLayout);
FLabelLayout := Value;
Changed;
end;
end;
procedure TAutoPanelPage.SetControls(Value : TAutoPanelControls);
begin
FControls.Assign(Value);
end;
procedure TAutoPanelPage.Assign(Source: TPersistent);
Var
APage : TAutoPanelPage;
OldAssignFlag : Boolean;
begin
if(Source is TAutoPanelPage) then begin
APage := Source as TAutoPanelPage;
OldAssignFlag := PanelLayout.FAssignFlag;
PanelLayout.FAssignFlag := True;
FAssignedValues := APage.FAssignedValues;
FAlignment := APage.Alignment;
FCaption := APage.Caption;
FColor := APage.Color;
FControlLayout := APage.ControlLayout;
FLabelLayout := APage.LabelLayout;
Controls.Assign(APage.Controls);
PanelLayout.FAssignFlag := OldAssignFlag;
if Not PanelLayout.FAssignFlag then
PanelLayout.UpdateLayout(False);
end else inherited Assign(Source);
end;
function TAutoPanelPage.IsAlignmentStored : Boolean;
begin
Result := (ppvAlignment in FAssignedValues) And (FAlignment <> DefaultAlignment);
end;
function TAutoPanelPage.IsColorStored : Boolean;
begin
Result := (ppvColor in FAssignedValues) And (FColor <> DefaultColor);
end;
function TAutoPanelPage.IsControlLayoutStored : Boolean;
begin
Result := (ppvControlLayout in FAssignedValues) And (FControlLayout <> DefaultControlLayout);
end;
function TAutoPanelPage.IsLabelLayoutStored : Boolean;
begin
Result := (ppvLabelLayout in FAssignedValues) And (FLabelLayout <> DefaultLabelLayout);
end;
procedure TAutoPanelPage.Changed;
begin
//TODO
end;
procedure TAutoPanelPage.RestoreDefaults;
begin
FAssignedValues := [];
FAlignment := DefaultAlignment;
FColor := DefaultColor;
Changed;
end;
function TAutoPanelPage.DefaultAlignment : TAlignment;
begin
Result := taLeftJustify;
end;
function TAutoPanelPage.DefaultColor : TColor;
begin
Result := clBtnFace;
end;
function TAutoPanelPage.DefaultControlLayout : TAutoControlLayout;
begin
Result := PanelLayout.ControlLayout;
end;
function TAutoPanelPage.DefaultLabelLayout : TAutoLabelLayout;
begin
Result := PanelLayout.LabelLayout;
end;
{TAutoPanelPages}
constructor TAutoPanelPages.Create(APanelLayout : TAutoPanelLayout);
begin
inherited Create(TAutoPanelPage);
FPanelLayout := APanelLayout;
Add;
end;
destructor TAutoPanelPages.Destroy;
begin
inherited Destroy;
end;
{$IFDEF DELPHI4}
function TAutoPanelPages.GetOwner: TPersistent;
begin
Result := PanelLayout;
end;
{$ENDIF}
function TAutoPanelPages.Add : TAutoPanelPage;
begin
Result := TAutoPanelPage(inherited Add);
PanelLayout.UpdateLayout(False);
end;
procedure TAutoPanelPages.Assign(Source: TPersistent);
Var
APages : TAutoPanelPages;
APage : TAutoPanelPage;
i : Integer;
OldAssignFlag : Boolean;
begin
if(Source is TAutoPanelPages) then begin
OldAssignFlag := PanelLayout.FAssignFlag;
PanelLayout.FAssignFlag := True;
APages := Source as TAutoPanelPages;
Clear;
for i := 0 to APages.Count - 1 do begin
APage := Add;
APage.Assign(APages[i]);
end;
PanelLayout.UpdateCustomizingFields;
PanelLayout.FAssignFlag := OldAssignFlag;
if Not PanelLayout.FAssignFlag then
PanelLayout.UpdateLayout(False);
end else inherited Assign(Source);
end;
function TAutoPanelPages.GetItem(Index : Integer) : TAutoPanelPage;
begin
Result := TAutoPanelPage(inherited Items[Index]);
end;
function TAutoPanelPages.GetPanelOwner : TComponent;
begin
Result := FPanelLayout.FOwner;
end;
procedure TAutoPanelPages.SetItem(Index : Integer; Value : TAutoPanelPage);
begin
Items[Index].Assign(Value);
end;
{TAutoPanelField}
constructor TAutoPanelField.Create(Collection : TCollection);
begin
inherited Create(Collection);
FCaption := LoadStr(ACDB_PANELNEWFIELD);
FControl := Nil;
FCustomized := True;
FFont := TFont.Create;
FFont.Assign(DefaultFont);
FFont.OnChange := FontChanged;
RestoreDefaults;
end;
destructor TAutoPanelField.Destroy;
begin
if (FControl <> Nil) And (PanelLayout.Owner <> Nil)
And Not (PanelLayout.IsDestroying)
And Not (csDestroying in PanelLayout.Owner.ComponentState) then begin
FControl.FPanelField := Nil;
FControl.Free;
end;
FFont.Free;
inherited Destroy;
end;
procedure TAutoPanelField.Assign(Source : TPersistent);
Var
AField : TAutoPanelField;
OldAssignFlag : Boolean;
begin
if(Source is TAutoPanelField) then begin
OldAssignFlag := PanelLayout.FAssignFlag;
PanelLayout.FAssignFlag := True;
AField := Source as TAutoPanelField;
FField := AField.FField;
FFieldName := AField.FFieldName;
FColor := AField.FColor;
AssignPanelFont(FFont, AField.FFont);
FAlignment := AField.FAlignment;
FReadonly := AField.FReadonly;
FCaption := AField.FCaption;
FAssignedValues := AField.FAssignedValues;
FCustomized := AField.FCustomized;
PanelLayout.FAssignFlag := OldAssignFlag;
if Not PanelLayout.FAssignFlag then
PanelLayout.UpdateLayout(False);
end else inherited Assign(Source);
end;
procedure TAutoPanelField.FontChanged(Sender : TObject);
begin
if(FControl <> Nil) then begin
Include(FAssignedValues, pfvFont);
PanelLayout.UpdateLayout(False);
end;
end;
function TAutoPanelField.DefaultAlignment : TAlignment;
begin
// if Assigned(Field) then
// Result := FField.Alignment
// else
Result := taLeftJustify;
end;
function TAutoPanelField.DefaultCaption : String;
begin
if Assigned(Field) then
Result := FField.DisplayLabel
else Result := FCaption;
end;
function TAutoPanelField.DefaultColor : TColor;
begin
Result := clBlack;
end;
function TAutoPanelField.DefaultFont : TFont;
begin
Result := PanelLayout.Font;
end;
function TAutoPanelField.DefaultReadOnly : Boolean;
begin
if Assigned(Field) then
Result := FField.ReadOnly
else Result := False;
end;
procedure TAutoPanelField.RestoreDefaults;
var
FontAssigned: Boolean;
begin
FontAssigned := pfvFont in FAssignedValues;
FAssignedValues := [];
RefreshDefaultFont;
FAlignment := DefaultAlignment;
FColor := DefaultColor;
Changed(FontAssigned);
end;
function TAutoPanelField.GetPanelLayout : TAutoPanelLayout;
begin
Result := TAutoPanelFields(Collection).PanelLayout;
end;
procedure TAutoPanelField.RefreshDefaultFont;
begin
if (pfvFont in FAssignedValues) then exit;
AssignPanelFont(FFont, DefaultFont);
end;
function TAutoPanelField.GetAlignment : TAlignment;
begin
if pfvAlignment in FAssignedValues then
Result := FAlignment
else Result := DefaultAlignment;
end;
function TAutoPanelField.GetCaption : String;
begin
if pfvCaption in FAssignedValues then
Result := FCaption
else Result := DefaultCaption;
end;
function TAutoPanelField.GetColor : TColor;
begin
if pfvColor in FAssignedValues then
Result := FColor
else Result := DefaultColor;
end;
function TAutoPanelField.GetField : TField;
begin
if (((FField = Nil) And (Length(FFieldName) > 0))
Or ((FField <> Nil) And (FField.FieldName <> FFieldName)))
And Assigned(PanelLayout.FDataLink.DataSet) then
with PanelLayout.FDatalink.Dataset do
if Active Or (Not DefaultFields) then
SetField(FindField(FieldName))
else SetField(Nil);
Result := FField;
end;
function TAutoPanelField.GetFont : TFont;
begin
if pfvFont in FAssignedValues then
Result := FFont
else Result := DefaultFont;
end;
function TAutoPanelField.GetReadOnly : Boolean;
begin
if pfvReadOnly in FAssignedValues then
Result := FReadOnly
else Result := DefaultReadOnly;
end;
function TAutoPanelField.GetDBDefControl : TAutoDBDefControl;
begin
Result := adefctrl.GetDBDefControl(PanelLayout.Repository, Field);
end;
function TAutoPanelField.IsAlignmentStored : Boolean;
begin
Result := (pfvAlignment in FAssignedValues) And (FAlignment <> DefaultAlignment);
end;
function TAutoPanelField.IsCaptionStored : Boolean;
begin
Result := (pfvCaption in FAssignedValues) And (FCaption <> DefaultCaption);
end;
function TAutoPanelField.IsColorStored : Boolean;
begin
Result := (pfvColor in FAssignedValues) And (FColor <> DefaultColor);
end;
function TAutoPanelField.IsFontStored : Boolean;
begin
Result := (pfvFont in FAssignedValues) And (FFont <> DefaultFont);
end;
function TAutoPanelField.IsReadOnlyStored : Boolean;
begin
Result := (pfvReadOnly in FAssignedValues) And (FReadOnly <> DefaultReadOnly);
end;
procedure TAutoPanelField.SetAlignment(Value : TAlignment);
begin
if (pfvAlignment in FAssignedValues) And (Value = FAlignment) then exit;
FAlignment := Value;
Include(FAssignedValues, pfvAlignment);
Changed(False);
end;
procedure TAutoPanelField.SetCaption(Value : String);
begin
if (pfvCaption in FAssignedValues) And (Value = FCaption) then exit;
FCaption := Value;
Include(FAssignedValues, pfvCaption);
Changed(False);
end;
procedure TAutoPanelField.SetColor(Value : TColor);
begin
if (pfvColor in FAssignedValues) And (Value = FColor) then exit;
FColor := Value;
Include(FAssignedValues, pfvColor);
Changed(False);
end;
procedure TAutoPanelField.SetField(Value : TField);
begin
if FField = Value then exit;
FField := Value;
if Assigned(Value) then begin
FFieldName := Value.FieldName;
FCaption := Value.DisplayLabel;
end;
Changed(False);
end;
procedure TAutoPanelField.SetFieldName(const Value : String);
Var
AField: TField;
begin
AField := nil;
if Assigned(PanelLayout.FDataLink.DataSet) And (Length(Value) > 0)
And Not (csLoading in PanelLayout.FOwner.ComponentState) then
AField := PanelLayout.FDataLink.DataSet.FindField(Value);
FFieldName := Value;
SetField(AField);
Changed(False);
end;
procedure TAutoPanelField.SetFont(Value : TFont);
begin
FFont.Assign(Value);
Changed(False);
end;
procedure TAutoPanelField.SetReadOnly(Value : Boolean);
begin
if (pfvReadOnly in FAssignedValues) And (Value = FReadOnly) then exit;
FReadOnly := Value;
Include(FAssignedValues, pfvReadOnly);
Changed(False);
end;
{TAutoPanelFields}
constructor TAutoPanelFields.Create(APanelLayout : TAutoPanelLayout);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?