PIntArray(FFieldMap)^[FFieldCount] := Field.Index; Field.FreeNotification(FGrid); end else PIntArray(FFieldMap)^[FFieldCount] := -1; Inc(FFieldCount); end;
procedure TGridDataLink.ActiveChanged; begin FGrid.LinkActive(Active); end;
procedure TGridDataLink.ClearMapping; begin if FFieldMap <> nil then begin FreeMem(FFieldMap, FFieldMapSize * SizeOf(Integer)); FFieldMap := nil; FFieldMapSize := 0; FFieldCount := 0; end; end;
procedure TGridDataLink.Modified; begin FModified := True; end;
procedure TGridDataLink.DataSetChanged; begin FGrid.DataChanged; FModified := False; end;
procedure TGridDataLink.DataSetScrolled(Distance: Integer); begin FGrid.Scroll(Distance); end;
procedure TGridDataLink.LayoutChanged; var SaveState: Boolean; begin { FLayoutFromDataset determines whether default column width is forced to be at least wide enough for the column title. } SaveState := FGrid.FLayoutFromDataset; FGrid.FLayoutFromDataset := True; try FGrid.LayoutChanged; finally FGrid.FLayoutFromDataset := SaveState; end; inherited LayoutChanged; end;
procedure TGridDataLink.FocusControl(Field: TFieldRef); begin if Assigned(Field) and Assigned(Field^) then begin FGrid.SelectedField := Field^; if (FGrid.SelectedField = Field^) and FGrid.AcquireFocus then begin Field^ := nil; FGrid.ShowEditor; end; end; end;
procedure TGridDataLink.EditingChanged; begin FGrid.EditingChanged; end;
procedure TGridDataLink.RecordChanged(Field: TField); begin FGrid.RecordChanged(Field); FModified := False; end;
procedure TGridDataLink.UpdateData; begin FInUpdateData := True; try if FModified then FGrid.UpdateData; FModified := False; finally FInUpdateData := False; end; end;
function TGridDataLink.GetMappedIndex(ColIndex: Integer): Integer; begin if (0 <= ColIndex) and (ColIndex < FFieldCount) then Result := PIntArray(FFieldMap)^[ColIndex] else Result := -1; end;
procedure TGridDataLink.Reset; begin if FModified then RecordChanged(nil) else Dataset.Cancel; end;
{ TColumnTitle } constructor TColumnTitle.Create(Column: TColumn); begin inherited Create; FColumn := Column; FFont := TFont.Create; FFont.Assign(DefaultFont); FFont.OnChange := FontChanged; end;
destructor TColumnTitle.Destroy; begin FFont.Free; inherited Destroy; end;
procedure TColumnTitle.Assign(Source: TPersistent); begin if Source is TColumnTitle then begin if cvTitleAlignment in TColumnTitle(Source).FColumn.FAssignedValues then Alignment := TColumnTitle(Source).Alignment; if cvTitleColor in TColumnTitle(Source).FColumn.FAssignedValues then Color := TColumnTitle(Source).Color; if cvTitleCaption in TColumnTitle(Source).FColumn.FAssignedValues then Caption := TColumnTitle(Source).Caption; if cvTitleFont in TColumnTitle(Source).FColumn.FAssignedValues then Font := TColumnTitle(Source).Font; end else inherited Assign(Source); end;
function TColumnTitle.DefaultAlignment: TAlignment; begin Result := taLeftJustify; end;
function TColumnTitle.DefaultColor: TColor; var Grid: TCustomVDBGrid; begin Grid := FColumn.GetGrid; if Assigned(Grid) then Result := Grid.FixedColor else Result := clBtnFace; end;
function TColumnTitle.DefaultFont: TFont; var Grid: TCustomVDBGrid; begin Grid := FColumn.GetGrid; if Assigned(Grid) then Result := Grid.TitleFont else Result := FColumn.Font; end;
function TColumnTitle.DefaultCaption: string; var Field: TField; begin Field := FColumn.Field; if Assigned(Field) then Result := Field.DisplayName else Result := FColumn.FieldName; end;
procedure TColumnTitle.FontChanged(Sender: TObject); begin Include(FColumn.FAssignedValues, cvTitleFont); FColumn.Changed(True); end;
function TColumnTitle.GetAlignment: TAlignment; begin if cvTitleAlignment in FColumn.FAssignedValues then Result := FAlignment else Result := DefaultAlignment; end;
function TColumnTitle.GetColor: TColor; begin if cvTitleColor in FColumn.FAssignedValues then Result := FColor else Result := DefaultColor; end;
function TColumnTitle.GetCaption: string; begin if cvTitleCaption in FColumn.FAssignedValues then Result := FCaption else Result := DefaultCaption; end;
function TColumnTitle.GetFont: TFont; var Save: TNotifyEvent; Def: TFont; begin if not (cvTitleFont in FColumn.FAssignedValues) then begin Def := DefaultFont; if (FFont.Handle <> Def.Handle) or (FFont.Color <> Def.Color) then begin Save := FFont.OnChange; FFont.OnChange := nil; FFont.Assign(DefaultFont); FFont.OnChange := Save; end; end; Result := FFont; end;
function TColumnTitle.IsAlignmentStored: Boolean; begin Result := (cvTitleAlignment in FColumn.FAssignedValues) and (FAlignment <> DefaultAlignment); end;
function TColumnTitle.IsColorStored: Boolean; begin Result := (cvTitleColor in FColumn.FAssignedValues) and (FColor <> DefaultColor); end;
function TColumnTitle.IsFontStored: Boolean; begin Result := (cvTitleFont in FColumn.FAssignedValues); end;
function TColumnTitle.IsCaptionStored: Boolean; begin Result := (cvTitleCaption in FColumn.FAssignedValues) and (FCaption <> DefaultCaption); end;
procedure TColumnTitle.RefreshDefaultFont; var Save: TNotifyEvent; begin if (cvTitleFont in FColumn.FAssignedValues) then Exit; Save := FFont.OnChange; FFont.OnChange := nil; try FFont.Assign(DefaultFont); finally FFont.OnChange := Save; end; end;
procedure TColumnTitle.RestoreDefaults; var FontAssigned: Boolean; begin FontAssigned := cvTitleFont in FColumn.FAssignedValues; FColumn.FAssignedValues := FColumn.FAssignedValues - ColumnTitleValues; FCaption := ''''''''; RefreshDefaultFont; { If font was assigned, changing it back to default may affect grid title height, and title height changes require layout and redraw of the grid. } FColumn.Changed(FontAssigned); end;
procedure TColumnTitle.SetAlignment(Value: TAlignment); begin if (cvTitleAlignment in FColumn.FAssignedValues) and (Value = FAlignment) then Exit; FAlignment := Value; Include(FColumn.FAssignedValues, cvTitleAlignment); FColumn.Changed(False); end;
procedure TColumnTitle.SetColor(Value: TColor); begin if (cvTitleColor in FColumn.FAssignedValues) and (Value = FColor) then Exit; FColor := Value; Include(FColumn.FAssignedValues, cvTitleColor); FColumn.Changed(False); end;
procedure TColumnTitle.SetFont(Value: TFont); begin FFont.Assign(Value); end;
procedure TColumnTitle.SetCaption(const Value: string); begin if (cvTitleCaption in FColumn.FAssignedValues) and (Value = FCaption) then Exit; FCaption := Value; Include(FColumn.FAssignedValues, cvTitleCaption); FColumn.Changed(False); end;
{ TColumn }
constructor TColumn.Create(Collection: TCollection); var Grid: TCustomVDBGrid; begin Grid := nil; if Assigned(Collection) and (Collection is TDBGridColumns) then Grid := TDBGridColumns(Collection).Grid; if Assigned(Grid) then Grid.BeginLayout; try inherited Create(Collection); FDropDownRows := 7; FButtonStyle := cbsAuto; FFont := TFont.Create; FFont.Assign(DefaultFont); FFont.OnChange := FontChanged; FImeMode := imDontCar 上一页 [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自动适应宽度
|