; Result := (cvReadOnly in FAssignedValues) and (FReadOnly <> DefaultReadOnly); end;
function TColumn.IsWidthStored: Boolean; begin Result := (cvWidth in FAssignedValues) and (FWidth <> DefaultWidth); end;
procedure TColumn.RefreshDefaultFont; var Save: TNotifyEvent; begin if cvFont in FAssignedValues then Exit; Save := FFont.OnChange; FFont.OnChange := nil; try FFont.Assign(DefaultFont); finally FFont.OnChange := Save; end; end;
procedure TColumn.RestoreDefaults; var FontAssigned: Boolean; begin FontAssigned := cvFont in FAssignedValues; FTitle.RestoreDefaults; FAssignedValues := []; RefreshDefaultFont; FPickList.Free; FPickList := nil; ButtonStyle := cbsAuto; Changed(FontAssigned); end;
procedure TColumn.SetAlignment(Value: TAlignment); begin if (cvAlignment in FAssignedValues) and (Value = FAlignment) then Exit; FAlignment := Value; Include(FAssignedValues, cvAlignment); Changed(False); end;
procedure TColumn.SetButtonStyle(Value: TColumnButtonStyle); begin if Value = FButtonStyle then Exit; FButtonStyle := Value; Changed(False); end;
procedure TColumn.SetColor(Value: TColor); begin if (cvColor in FAssignedValues) and (Value = FColor) then Exit; FColor := Value; Include(FAssignedValues, cvColor); Changed(False); end;
procedure TColumn.SetField(Value: TField); begin if FField = Value then Exit; FField := Value; if Assigned(Value) then FFieldName := Value.FieldName; Changed(False); end;
procedure TColumn.SetFieldName(const Value: String); var AField: TField; Grid: TCustomVDBGrid; begin AField := nil; Grid := GetGrid; if Assigned(Grid) and Assigned(Grid.DataLink.DataSet) and not (csLoading in Grid.ComponentState) and (Length(Value) > 0) then AField := Grid.DataLink.DataSet.FindField(Value); { no exceptions } FFieldName := Value; SetField(AField); Changed(False); end;
procedure TColumn.SetFont(Value: TFont); begin FFont.Assign(Value); Include(FAssignedValues, cvFont); Changed(False); end;
procedure TColumn.SetImeMode(Value: TImeMode); begin if (cvImeMode in FAssignedValues) or (Value <> DefaultImeMode) then begin FImeMode := Value; Include(FAssignedValues, cvImeMode); end; Changed(False); end;
procedure TColumn.SetImeName(Value: TImeName); begin if (cvImeName in FAssignedValues) or (Value <> DefaultImeName) then begin FImeName := Value; Include(FAssignedValues, cvImeName); end; Changed(False); end;
procedure TColumn.SetPickList(Value: TStrings); begin if Value = nil then begin FPickList.Free; FPickList := nil; Exit; end; PickList.Assign(Value); end;
procedure TColumn.SetPopupMenu(Value: TPopupMenu); begin FPopupMenu := Value; if Value <> nil then Value.FreeNotification(GetGrid); end;
procedure TColumn.SetReadOnly(Value: Boolean); begin if (cvReadOnly in FAssignedValues) and (Value = FReadOnly) then Exit; FReadOnly := Value; Include(FAssignedValues, cvReadOnly); Changed(False); end;
procedure TColumn.SetTitle(Value: TColumnTitle); begin FTitle.Assign(Value); end;
procedure TColumn.SetWidth(Value: Integer); begin if (cvWidth in FAssignedValues) or (Value <> DefaultWidth) then begin FWidth := Value; Include(FAssignedValues, cvWidth); end; Changed(False); end;
{ TPassthroughColumn }
type TPassthroughColumnTitle = class(TColumnTitle) private procedure SetCaption(const Value: string); override; end;
TPassthroughColumn = class(TColumn) private procedure SetAlignment(Value: TAlignment); override; procedure SetField(Value: TField); override; procedure SetIndex(Value: Integer); override; procedure SetReadOnly(Value: Boolean); override; procedure SetWidth(Value: Integer); override; protected function CreateTitle: TColumnTitle; override; end;
{ TPassthroughColumnTitle }
procedure TPassthroughColumnTitle.SetCaption(const Value: string); var Grid: TCustomVDBGrid; begin Grid := FColumn.GetGrid; if Assigned(Grid) and (Grid.Datalink.Active) and Assigned(FColumn.Field) then FColumn.Field.DisplayLabel := Value else inherited SetCaption(Value); end;
{ TPassthroughColumn }
function TPassthroughColumn.CreateTitle: TColumnTitle; begin Result := TPassthroughColumnTitle.Create(Self); end;
procedure TPassthroughColumn.SetAlignment(Value: TAlignment); var Grid: TCustomVDBGrid; begin Grid := GetGrid; if Assigned(Grid) and (Grid.Datalink.Active) and Assigned(Field) then Field.Alignment := Value else inherited SetAlignment(Value); end;
procedure TPassthroughColumn.SetField(Value: TField); begin inherited SetField(Value); if Value = nil then FFieldName := ''''''''; RestoreDefaults; end;
procedure TPassthroughColumn.SetIndex(Value: Integer); var Grid: TCustomVDBGrid; Fld: TField; begin Grid := GetGrid; if Assigned(Grid) and Grid.Datalink.Active then begin Fld := Grid.Datalink.Fields[Value]; if Assigned(Fld) then Field.Index := Fld.Index; end; inherited SetIndex(Value); end;
procedure TPassthroughColumn.SetReadOnly(Value: Boolean); var Grid: TCustomVDBGrid; begin Grid := GetGrid; if Assigned(Grid) and Grid.Datalink.Active and Assigned(Field) then Field.ReadOnly := Value else inherited SetReadOnly(Value); end;
procedure TPassthroughColumn.SetWidth(Value: Integer); var Grid: TCustomVDBGrid; TM: TTextMetric; begin Grid := GetGrid; if Assigned(Grid) then begin if Grid.HandleAllocated and Assigned(Field) and Grid.FUpdateFields then with Grid do begin Canvas.Font := Self.Font; GetTextMetrics(Canvas.Handle, TM); Field.DisplayWidth := (Value + (TM.tmAveCharWidth div 2) - TM.tmOverhang - 3) div TM.tmAveCharWidth; end; if (not Grid.FLayoutFromDataset) or (cvWidth in FAssignedValues) then inherited SetWidth(Value); end else inherited SetWidth(Value); end;
{ TDBGridColumns }
constructor TDBGridColumns.Create(Grid: TCustomVDBGrid; ColumnClass: TColumnClass); begin inherited Create(ColumnClass); FGrid := Grid; end;
function TDBGridColumns.Add: TColumn; begin Result := TColumn(inherited Add); end;
function TDBGridColumns.GetColumn(Index: Integer): TColumn; begin Result := TColumn(inherited Items[Index]); end;
function TDBGridColumns.GetOwner: TPersistent; begin Result := FGrid; end;
function TDBGridColumns.GetState: TDBGridColumnsState; begin Result := TDBGridColumnsState((Count > 0) and not (Items[0] is TPassthroughColumn)); end;
procedure TDBGridColumns.LoadFromFile(const Filename: string); var S: TFileStream; begin S := TFileStream.Create(Filename, fmOpenRead); try LoadFromStream(S); finally S.Free; end; end;
type TColumnsWrapper = class(TComponent) private FColumns: TDBGridColumns; published property Columns: TDBGridColumns read FColumns write FColumns; end;
procedure TDBGridColumns.LoadFromStream(S: TStream); var Wrapper: TColumnsWrapper; begin Wrapper := TColumnsWrapper.Create(nil); try Wrapper.Columns := FGrid.CreateColumns; S.ReadComponent(Wrapper); Assign(Wrapper.Columns); finally Wrapper.Columns.Free; Wrapper.Free; end; end;
procedure TDBGridColumns.RestoreDefaults; var I: Integer; begin BeginUpdate; try for I := 0 to Count-1 do Items[I].RestoreDefaults; finally EndUpdate; end; end;
procedu 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> [聊天工具]让你的MSN Messenger好友看到你在干嘛__天极Yesky [聊天工具]让你的Foxmail不再撒谎 [聊天工具]IncrediMail让你的E-mail也作秀 [常用软件]让你的Blog拥有Google日历 [常用软件][网络]Stuff Plug 让你的MSN聊天与众不同 [Delphi程序]让你的DBGridEh的Column自动适应宽度
|