cxlookupgrid.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 2,076 行 · 第 1/5 页
PAS
2,076 行
LFPainterClass.DrawSortingMark(Canvas, ASortRect, ASortOrder = soAscending);
end;
end;
end;
procedure TcxLookupGridPainter.DrawRow(ARowViewInfo: TcxLookupGridRowViewInfo);
var
I: Integer;
ACellViewInfo: TcxLookupGridCellViewInfo;
begin
for I := 0 to ARowViewInfo.Count - 1 do
begin
ACellViewInfo := ARowViewInfo[I];
Canvas.FrameRect(ACellViewInfo.Bounds, ViewInfo.GetGridColor,
ViewInfo.GetGridLineWidth, ACellViewInfo.Borders);
DrawCell(ACellViewInfo);
end;
Canvas.FrameRect(ARowViewInfo.Bounds, ViewInfo.GetGridColor,
ViewInfo.GetGridLineWidth, ARowViewInfo.Borders);
if ARowViewInfo.IsFocused and (Grid.Focused or Grid.IsPopupControl) then
Canvas.DrawFocusRect(ARowViewInfo.ContentBounds);
end;
procedure TcxLookupGridPainter.DrawRows;
var
I: Integer;
begin
with ViewInfo do
if not IsRectEmpty(RowsRect) then
for I := 0 to PartialVisibleRowCount - 1 do
DrawRow(Rows[I]);
end;
function TcxLookupGridPainter.GetCanvas: TcxCanvas;
begin
if Grid.HandleAllocated then
begin
if FCanvas <> nil then
FreeAndNil(FCanvas);
Result := Grid.Canvas;
end
else
begin
if FCanvas = nil then
FCanvas := TcxScreenCanvas.Create;
Result := FCanvas;
end;
end;
function TcxLookupGridPainter.GetViewInfo: TcxLookupGridViewInfo;
begin
Result := Grid.ViewInfo;
end;
{ TcxLookupGridDefaultValuesProvider }
function TcxLookupGridDefaultValuesProvider.IsDisplayFormatDefined(AIsCurrencyValueAccepted: Boolean): Boolean;
begin
with TcxLookupGridColumn(Owner) do
Result := DataController.GetItemTextStored(Index);
end;
{ TcxLookupGridColumn }
constructor TcxLookupGridColumn.Create(Collection: TCollection);
var
AGrid: TcxCustomLookupGrid;
begin
if Assigned(Collection) and (Collection is TcxLookupGridColumns) then
AGrid := TcxLookupGridColumns(Collection).Grid
else
AGrid := nil;
if Assigned(AGrid) then
AGrid.BeginUpdate;
try
inherited Create(Collection);
FDefaultValuesProvider := GetDefaultValuesProviderClass.Create(Self);
FMinWidth := cxLookupGridColumnDefaultMinWidth;
FSorting := True;
Changed(False);
if AGrid <> nil then
AGrid.AddColumn(Self);
finally
if Assigned(AGrid) then
AGrid.EndUpdate;
end;
end;
destructor TcxLookupGridColumn.Destroy;
var
AGrid: TcxCustomLookupGrid;
AGridNotify: Boolean;
begin
AGrid := Grid;
AGridNotify := False;
if AGrid <> nil then
begin
AGridNotify := not (csDestroying in AGrid.ComponentState) {and
not TcxLookupGridColumns(Collection).Locked};
if AGridNotify then AGrid.BeginUpdate;
AGrid.RemoveColumn(Self);
end;
try
RepositoryItem := nil;
FreeAndNil(FInternalDefaultRepositoryItem);
FDefaultValuesProvider.Free;
FDefaultValuesProvider := nil;
inherited Destroy;
finally
if (AGrid <> nil) and AGridNotify then
AGrid.EndUpdate;
end;
end;
procedure TcxLookupGridColumn.Assign(Source: TPersistent);
begin
if Source is TcxLookupGridColumn then
begin
if Assigned(Collection) then
Collection.BeginUpdate;
try
RestoreDefaults;
if TcxLookupGridColumn(Source).IsCaptionStored then
Caption := TcxLookupGridColumn(Source).Caption;
HeaderAlignment := TcxLookupGridColumn(Source).HeaderAlignment;
MinWidth := TcxLookupGridColumn(Source).MinWidth;
Fixed := TcxLookupGridColumn(Source).Fixed;
Sorting := TcxLookupGridColumn(Source).Sorting;
SortOrder := TcxLookupGridColumn(Source).SortOrder;
RepositoryItem := TcxLookupGridColumn(Source).RepositoryItem;
if TcxLookupGridColumn(Source).IsWidthStored then
Width := TcxLookupGridColumn(Source).Width;
finally
if Assigned(Collection) then
Collection.EndUpdate;
end;
end
else
inherited Assign(Source);
end;
function TcxLookupGridColumn.DefaultCaption: string;
begin
Result := '';
end;
function TcxLookupGridColumn.DefaultRepositoryItem: TcxEditRepositoryItem;
begin
Result := GetDefaultEditDataRepositoryItems.GetDefaultItem;
end;
function TcxLookupGridColumn.DefaultWidth: Integer;
begin
Result := 64;
end;
function TcxLookupGridColumn.GetContentFont: TFont;
begin
if Grid <> nil then
Result := Grid.ViewInfo.GetContentFont
else
Result := nil;
end;
function TcxLookupGridColumn.GetInternalDefaultRepositoryItem: TcxEditRepositoryItem;
begin
Result := DefaultRepositoryItem;
if Result = nil then
begin
if FInternalDefaultRepositoryItem = nil then
FInternalDefaultRepositoryItem := TcxEditRepositoryTextItem.Create(nil);
Result := FInternalDefaultRepositoryItem;
end;
end;
function TcxLookupGridColumn.GetRepositoryItem: TcxEditRepositoryItem;
begin
if RepositoryItem <> nil then
Result := RepositoryItem
else
Result := GetInternalDefaultRepositoryItem;
end;
function TcxLookupGridColumn.IsLeft: Boolean;
begin
Result := Index = 0;
end;
function TcxLookupGridColumn.IsRight: Boolean;
begin
Result := Index = Collection.Count - 1;
end;
procedure TcxLookupGridColumn.RestoreDefaults;
begin
FIsCaptionAssigned := False;
FIsWidthAssigned := False;
FHeaderAlignment := taLeftJustify;
FMinWidth := cxLookupGridColumnDefaultMinWidth;
FFixed := False;
FSorting := True;
Changed(False);
end;
// IUnknown
function TcxLookupGridColumn.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
if GetInterface(IID, Obj) then
Result := S_OK
else
Result := E_NOINTERFACE;
end;
function TcxLookupGridColumn._AddRef: Integer;
begin
Result := -1; // -1 indicates no reference counting is taking Position
end;
function TcxLookupGridColumn._Release: Integer;
begin
Result := -1; // -1 indicates no reference counting is taking Position
end;
// IcxEditRepositoryItemListener
procedure TcxLookupGridColumn.ItemRemoved(Sender: TcxEditRepositoryItem);
begin
RepositoryItem := nil;
end;
procedure TcxLookupGridColumn.PropertiesChanged(Sender: TcxEditRepositoryItem);
begin
Changed(False);
end;
procedure TcxLookupGridColumn.CheckWidthValue(var Value: Integer);
begin
if Value < FMinWidth then
Value := FMinWidth;
end;
function TcxLookupGridColumn.GetDefaultValuesProviderClass: TcxCustomEditDefaultValuesProviderClass;
begin
Result := TcxLookupGridDefaultValuesProvider;
end;
function TcxLookupGridColumn.GetValueTypeClass: TcxValueTypeClass;
begin
if Grid <> nil then
Result := Grid.FDataController.GetItemValueTypeClass(Index)
else
Result := nil;
end;
procedure TcxLookupGridColumn.SetIndex(Value: Integer);
begin
inherited SetIndex(Value);
if Grid <> nil then
Grid.FDataController.UpdateItemIndexes;
end;
procedure TcxLookupGridColumn.SetValueTypeClass(Value: TcxValueTypeClass);
begin
if Grid <> nil then
Grid.FDataController.ChangeValueTypeClass(Index, Value);
end;
function TcxLookupGridColumn.GetCaption: string;
begin
if FIsCaptionAssigned then
Result := FCaption
else
Result := DefaultCaption;
end;
function TcxLookupGridColumn.GetDataController: TcxCustomDataController;
begin
Result := TcxCustomDataController(Grid.FDataController)
end;
function TcxLookupGridColumn.GetGrid: TcxCustomLookupGrid;
begin
Result := TcxLookupGridColumns(Collection).Grid;
end;
function TcxLookupGridColumn.GetMinWidth: Integer;
begin
Result := FMinWidth;
end;
function TcxLookupGridColumn.GetProperties: TcxCustomEditProperties;
begin
Result := GetRepositoryItem.Properties;
end;
function TcxLookupGridColumn.GetSortOrder: TcxDataSortOrder;
begin
if Grid <> nil then
Result := Grid.FDataController.GetItemSortOrder(Index)
else
Result := soNone;
end;
function TcxLookupGridColumn.GetWidth: Integer;
begin
if FIsWidthAssigned then
Result := FWidth
else
Result := DefaultWidth;
end;
function TcxLookupGridColumn.IsCaptionStored: Boolean;
begin
Result := FIsCaptionAssigned;
end;
function TcxLookupGridColumn.IsWidthStored: Boolean;
begin
Result := FIsWidthAssigned;
end;
procedure TcxLookupGridColumn.SetCaption(const Value: string);
begin
FCaption := Value;
FIsCaptionAssigned := True;
Changed(False);
end;
procedure TcxLookupGridColumn.SetFixed(Value: Boolean);
begin
if FFixed <> Value then
begin
FFixed := Value;
Changed(False);
end;
end;
procedure TcxLookupGridColumn.SetHeaderAlignment(Value: TAlignment);
begin
if FHeaderAlignment <> Value then
begin
FHeaderAlignment := Value;
Changed(False);
end;
end;
procedure TcxLookupGridColumn.SetMinWidth(Value: Integer);
begin
if Value < 0 then Value := 0;
if FMinWidth <> Value then
begin
FMinWidth := Value;
if Width < FMinWidth then
Width := FMinWidth;
Changed(False);
end;
end;
procedure TcxLookupGridColumn.SetRepositoryItem(Value: TcxEditRepositoryItem);
begin
if FRepositoryItem <> Value then
begin
if FRepositoryItem <> nil then
FRepositoryItem.RemoveListener(Self);
FRepositoryItem := Value;
if FRepositoryItem <> nil then
FRepositoryItem.AddListener(Self);
PropertiesChanged(FRepositoryItem);
end;
end;
procedure TcxLookupGridColumn.SetSorting(Value: Boolean);
begin
if FSorting <> Value then
begin
FSorting := Value;
Changed(False);
end;
end;
procedure TcxLookupGridColumn.SetSortOrder(Value: TcxDataSortOrder);
begin
if Grid <> nil then
Grid.FDataController.ChangeSorting(Index, Value);
end;
procedure TcxLookupGridColumn.SetWidth(Value: Integer);
begin
CheckWidthValue(Value);
FWidth := Value;
FIsWidthAssigned := True;
Changed(False);
end;
{ TcxLookupGridColumns }
constructor TcxLookupGridColumns.Create(AGrid: TcxCustomLookupGrid;
AColumnClass: TcxLookupGridColumnClass);
begin
inherited Create(AColumnClass);
FGrid := AGrid;
end;
function TcxLookupGridColumns.Add: TcxLookupGridColumn;
begin
Result := TcxLookupGridColumn(inherited Add);
end;
procedure TcxLookupGridColumns.BeginUpdate;
begin
if (Grid <> nil) and not (csDestroying in Grid.ComponentState) then
Grid.BeginUpdate;
inherited;
end;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?