mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-10 09:57:36 +01:00
Qt: Bugfix for #11790, TQtTreeWidget & TQtWSCustomListView reorganized, added new routines.
git-svn-id: trunk@15952 -
This commit is contained in:
parent
a075323c38
commit
cd6969584e
@ -861,6 +861,10 @@ type
|
||||
TQtHeaderView = class (TQtAbstractItemView)
|
||||
private
|
||||
FSelectionClicked: QHeaderView_hookH;
|
||||
function getClickable: Boolean;
|
||||
function getMinSectionSize: Integer;
|
||||
procedure setClickable(const AValue: Boolean);
|
||||
procedure setMinSectionSize(const AValue: Integer);
|
||||
protected
|
||||
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
|
||||
public
|
||||
@ -868,27 +872,38 @@ type
|
||||
procedure DetachEvents; override;
|
||||
procedure SignalSectionClicked(logicalIndex: Integer) cdecl;
|
||||
function getResizeMode(AIndex: Integer): QHeaderViewResizeMode;
|
||||
procedure setResizeMode(AResizeMode: QHeaderViewResizeMode);
|
||||
procedure setResizeMode(AResizeMode: QHeaderViewResizeMode); overload;
|
||||
procedure setResizeMode(AIndex: Integer; AResizeMode: QHeaderViewResizeMode); overload;
|
||||
procedure moveSection(AFromIndex: Integer; AToIndex: Integer);
|
||||
procedure resizeSection(ASection: Integer; ASize: Integer);
|
||||
procedure setHighlightSections(AValue: Boolean);
|
||||
procedure setDefaultSectionSize(AValue: Integer);
|
||||
procedure setStretchLastSection(AValue: Boolean);
|
||||
function sortIndicatorOrder: QtSortOrder;
|
||||
property Clickable: Boolean read getClickable write setClickable;
|
||||
property MinSectionSize: Integer read getMinSectionSize write setMinSectionSize;
|
||||
end;
|
||||
|
||||
{ TQtTreeView }
|
||||
|
||||
TQtTreeView = class (TQtAbstractItemView)
|
||||
private
|
||||
function getColVisible(AIndex: Integer): Boolean;
|
||||
function getColWidth(AIndex: Integer): Integer;
|
||||
procedure setColVisible(AIndex: Integer; const AValue: Boolean);
|
||||
procedure setColWidth(AIndex: Integer; const AValue: Integer);
|
||||
protected
|
||||
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
|
||||
public
|
||||
property ColWidth[AIndex: Integer]: Integer read getColWidth write setColWidth;
|
||||
property ColVisible[AIndex: Integer]: Boolean read getColVisible write setColVisible;
|
||||
end;
|
||||
|
||||
{ TQtTreeWidget }
|
||||
|
||||
TQtTreeWidget = class(TQtTreeView)
|
||||
private
|
||||
Header: TQtHeaderView;
|
||||
FHeader: TQtHeaderView;
|
||||
FCurrentItemChangedHook: QTreeWidget_hookH;
|
||||
FItemDoubleClickedHook: QTreeWidget_hookH;
|
||||
FItemClickedHook: QTreeWidget_hookH;
|
||||
@ -897,13 +912,37 @@ type
|
||||
FItemSelectionChangedHook: QTreeWidget_hookH;
|
||||
FItemPressedHook: QTreeWidget_hookH;
|
||||
FItemEnteredHook: QTreeWidget_hookH;
|
||||
function getColCount: Integer;
|
||||
function getHeader: TQtHeaderView;
|
||||
function getMaxColSize(ACol: Integer): Integer;
|
||||
function getMinColSize(ACol: Integer): Integer;
|
||||
function getSortEnabled: Boolean;
|
||||
procedure setColCount(const AValue: Integer);
|
||||
procedure setMaxColSize(ACol: Integer; const AValue: Integer);
|
||||
procedure setMinColSize(ACol: Integer; const AValue: Integer);
|
||||
procedure setSortEnabled(const AValue: Boolean);
|
||||
protected
|
||||
function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
function currentRow: Integer;
|
||||
procedure setCurrentRow(row: Integer);
|
||||
function currentItem: QTreeWidgetItemH;
|
||||
procedure setCurrentItem(AItem: QTreeWidgetItemH);
|
||||
function headerItem: QTreeWidgetItemH;
|
||||
function itemAt(APoint: TPoint): QTreeWidgetItemH; overload;
|
||||
function itemAt(x: Integer; y: Integer): QTreeWidgetItemH; overload;
|
||||
function indexOfTopLevelItem(AItem: QTreeWidgetItemH): Integer;
|
||||
procedure insertTopLevelItem(AIndex: Integer; AItem: QTreeWidgetItemH);
|
||||
function takeTopLevelItem(AIndex: Integer): QTreeWidgetItemH;
|
||||
function topLevelItem(AIndex: Integer): QTreeWidgetItemH;
|
||||
function visualItemRect(AItem: QTreeWidgetItemH): TRect;
|
||||
function getItemVisible(AItem: QTreeWidgetItemH): Boolean;
|
||||
procedure setItemVisible(AItem: QTreeWidgetItemH; Const AVisible: Boolean);
|
||||
function selCount: Integer;
|
||||
function selectedItems: TIntArray;
|
||||
procedure setItemSelected(AItem: QTreeWidgetItemH; ASelect: Boolean);
|
||||
procedure sortItems(Acolumn: Integer; AOrder: QtSortOrder);
|
||||
public
|
||||
procedure AttachEvents; override;
|
||||
procedure DetachEvents; override;
|
||||
@ -918,6 +957,12 @@ type
|
||||
procedure SignalItemCollapsed(item: QTreeWidgetItemH) cdecl;
|
||||
procedure SignalCurrentItemChanged(current: QTreeWidgetItemH; previous: QTreeWidgetItemH) cdecl;
|
||||
procedure SignalItemSelectionChanged; cdecl;
|
||||
|
||||
property ColCount: Integer read getColCount write setColCount;
|
||||
property Header: TQtHeaderView read getHeader;
|
||||
property MaxColSize[ACol: Integer]: Integer read getMaxColSize write setMaxColSize;
|
||||
property MinColSize[ACol: Integer]: Integer read getMinColSize write setMinColSize;
|
||||
property SortEnabled: Boolean read getSortEnabled write setSortEnabled;
|
||||
end;
|
||||
|
||||
{TQtTableView}
|
||||
@ -6295,6 +6340,27 @@ end;
|
||||
|
||||
{ TQtHeaderView }
|
||||
|
||||
function TQtHeaderView.getClickable: Boolean;
|
||||
begin
|
||||
Result := QHeaderView_isClickable(QHeaderViewH(Widget));
|
||||
end;
|
||||
|
||||
|
||||
function TQtHeaderView.getMinSectionSize: Integer;
|
||||
begin
|
||||
Result := QHeaderView_minimumSectionSize(QHeaderViewH(Widget));
|
||||
end;
|
||||
|
||||
procedure TQtHeaderView.setClickable(const AValue: Boolean);
|
||||
begin
|
||||
QHeaderView_setClickable(QHeaderViewH(Widget), AValue);
|
||||
end;
|
||||
|
||||
procedure TQtHeaderView.setMinSectionSize(const AValue: Integer);
|
||||
begin
|
||||
QHeaderView_setMinimumSectionSize(QHeaderViewH(Widget), AValue);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: TQtHeaderView.CreateWidget
|
||||
Params: None
|
||||
@ -6315,7 +6381,6 @@ var
|
||||
begin
|
||||
inherited AttachEvents;
|
||||
FSelectionClicked := QHeaderView_hook_create(Widget);
|
||||
|
||||
QHeaderView_sectionClicked_Event(Method) := @SignalSectionClicked;
|
||||
QHeaderView_hook_hook_sectionClicked(FSelectionClicked, Method);
|
||||
end;
|
||||
@ -6336,7 +6401,6 @@ var
|
||||
Msg: TLMNotify;
|
||||
NMLV: TNMListView;
|
||||
begin
|
||||
|
||||
FillChar(Msg, SizeOf(Msg), #0);
|
||||
FillChar(NMLV, SizeOf(NMLV), #0);
|
||||
|
||||
@ -6362,6 +6426,12 @@ begin
|
||||
QHeaderView_setResizeMode(QHeaderViewH(Widget), AResizeMode);
|
||||
end;
|
||||
|
||||
procedure TQtHeaderView.setResizeMode(AIndex: Integer;
|
||||
AResizeMode: QHeaderViewResizeMode);
|
||||
begin
|
||||
QHeaderView_setResizeMode(QHeaderViewH(Widget), AIndex, AResizeMode);
|
||||
end;
|
||||
|
||||
procedure TQtHeaderView.moveSection(AFromIndex: Integer; AToIndex: Integer);
|
||||
begin
|
||||
QHeaderView_moveSection(QHeaderViewH(Widget), AFromIndex, AToIndex);
|
||||
@ -6387,8 +6457,33 @@ begin
|
||||
QHeaderView_setStretchLastSection(QHeaderViewH(Widget), AValue);
|
||||
end;
|
||||
|
||||
function TQtHeaderView.sortIndicatorOrder: QtSortOrder;
|
||||
begin
|
||||
Result := QHeaderView_sortIndicatorOrder(QHeaderViewH(Widget));
|
||||
end;
|
||||
|
||||
{ TQtTreeView }
|
||||
|
||||
function TQtTreeView.getColVisible(AIndex: Integer): Boolean;
|
||||
begin
|
||||
Result := not QTreeView_isColumnHidden(QTreeViewH(Widget), AIndex);
|
||||
end;
|
||||
|
||||
function TQtTreeView.getColWidth(AIndex: Integer): Integer;
|
||||
begin
|
||||
Result := QTreeView_columnWidth(QTreeViewH(Widget), AIndex);
|
||||
end;
|
||||
|
||||
procedure TQtTreeView.setColVisible(AIndex: Integer; const AValue: Boolean);
|
||||
begin
|
||||
QTreeView_setColumnHidden(QTreeViewH(Widget), AIndex, not AValue);
|
||||
end;
|
||||
|
||||
procedure TQtTreeView.setColWidth(AIndex: Integer; const AValue: Integer);
|
||||
begin
|
||||
QTreeView_setColumnWidth(QTreeViewH(Widget), AIndex, AValue);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: TQtTreeView.CreateWidget
|
||||
Params: None
|
||||
@ -6417,11 +6512,7 @@ begin
|
||||
WriteLn('TQtTreeWidget.Create');
|
||||
{$endif}
|
||||
Result := QTreeWidget_create();
|
||||
|
||||
Header := TQtHeaderView.Create(LCLObject, AParams);
|
||||
Header.AttachEvents;
|
||||
|
||||
QTreeView_setHeader(QTreeViewH(Result), QHeaderViewH(Header.Widget));
|
||||
FHeader := nil;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -6435,12 +6526,77 @@ begin
|
||||
WriteLn('TQtTreeWidget.Destroy');
|
||||
{$endif}
|
||||
|
||||
if Assigned(Header) then
|
||||
Header.Free;
|
||||
if Assigned(FHeader) then
|
||||
FHeader.Free;
|
||||
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.getHeader: TQtHeaderView;
|
||||
var
|
||||
AParams: TCreateParams;
|
||||
begin
|
||||
{while designing TQtHeaderView is a no-no}
|
||||
if not (csDesigning in LCLObject.ComponentState) and (FHeader = nil) then
|
||||
begin
|
||||
FHeader := TQtHeaderView.CreateFrom(LCLObject, QTreeView_header(QTreeViewH(Widget)));
|
||||
FHeader.AttachEvents;
|
||||
QTreeView_setHeader(QTreeViewH(Widget), QHeaderViewH(FHeader.Widget));
|
||||
end;
|
||||
Result := FHeader;
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.getMaxColSize(ACol: Integer): Integer;
|
||||
var
|
||||
Size: TSize;
|
||||
begin
|
||||
{$note QSizeH implementation missing for this}
|
||||
Result := MAXINT -1;
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.getMinColSize(ACol: Integer): Integer;
|
||||
begin
|
||||
{$note QSizeH implementation missing for this}
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.getSortEnabled: Boolean;
|
||||
begin
|
||||
Result := QTreeWidget_isSortingEnabled(QTreeWidgetH(Widget));
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.getColCount: Integer;
|
||||
begin
|
||||
Result := QTreeWidget_columnCount(QTreeWidgetH(Widget));
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.setColCount(const AValue: Integer);
|
||||
begin
|
||||
QTreeWidget_setColumnCount(QTreeWidgetH(Widget), AValue);
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.setMaxColSize(ACol: Integer; const AValue: Integer);
|
||||
begin
|
||||
{$note QSizeH implementation missing for this}
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.setMinColSize(ACol: Integer; const AValue: Integer);
|
||||
begin
|
||||
// QTreeWidgetItem_setSizeHint(headerItem, @Size, ACol);
|
||||
{$note QSizeH implementation missing for this}
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: TQtTreeWidget.setSortEnabled
|
||||
Params: Boolean
|
||||
Returns: Nothing
|
||||
Enables sorting of items.
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TQtTreeWidget.setSortEnabled(const AValue: Boolean);
|
||||
begin
|
||||
QTreeWidget_setSortingEnabled(QTreeWidgetH(Widget), AValue);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: TQtTreeWidget.CurrentRow
|
||||
Params: None
|
||||
@ -6467,6 +6623,95 @@ begin
|
||||
QTreeWidget_setCurrentItem(QTreeWidgetH(Widget), TWI);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.currentItem: QTreeWidgetItemH;
|
||||
begin
|
||||
Result := QTreeWidget_currentItem(QTreeWidgetH(Widget));
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.setCurrentItem(AItem: QTreeWidgetItemH);
|
||||
begin
|
||||
QTreeWidget_setCurrentItem(QTreeWidgetH(Widget), AItem);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.headerItem: QTreeWidgetItemH;
|
||||
begin
|
||||
Result := QTreeWidget_headerItem(QTreeWidgetH(Widget));
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.itemAt(APoint: TPoint): QTreeWidgetItemH;
|
||||
begin
|
||||
Result := QTreeWidget_itemAt(QTreeWidgetH(Widget), APoint.x, APoint.y);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.itemAt(x: Integer; y: Integer): QTreeWidgetItemH;
|
||||
begin
|
||||
Result := QTreeWidget_itemAt(QTreeWidgetH(Widget), x, y);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.indexOfTopLevelItem(AItem: QTreeWidgetItemH): Integer;
|
||||
begin
|
||||
Result := QTreeWidget_indexOfTopLevelItem(QTreeWidgetH(Widget), AItem);
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.insertTopLevelItem(AIndex: Integer;
|
||||
AItem: QTreeWidgetItemH);
|
||||
begin
|
||||
QTreeWidget_insertTopLevelItem(QTreeWidgetH(Widget), AIndex, AItem);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.takeTopLevelItem(AIndex: Integer): QTreeWidgetItemH;
|
||||
begin
|
||||
Result := QTreeWidget_takeTopLevelItem(QTreeWidgetH(Widget), AIndex);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.topLevelItem(AIndex: Integer): QTreeWidgetItemH;
|
||||
begin
|
||||
Result := QTreeWidget_topLevelItem(QTreeWidgetH(Widget), AIndex);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.visualItemRect(AItem: QTreeWidgetItemH): TRect;
|
||||
var
|
||||
ItemRect: TRect;
|
||||
begin
|
||||
QTreeWidget_visualItemRect(QTreeWidgetH(Widget), @ItemRect, AItem);
|
||||
Result := ItemRect;
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.getItemVisible(AItem: QTreeWidgetItemH): Boolean;
|
||||
begin
|
||||
Result := not QTreeWidget_isItemHidden(QTreeWidgetH(Widget), AItem);
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.setItemVisible(AItem: QTreeWidgetItemH;
|
||||
const AVisible: Boolean);
|
||||
begin
|
||||
QTreeWidget_setItemHidden(QTreeWidgetH(Widget), AItem, not AVisible);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.selCount: Integer;
|
||||
var
|
||||
FPInts: TIntArray;
|
||||
begin
|
||||
QTreeWidget_selectedItems(QTreeWidgetH(Widget), @FPInts);
|
||||
Result := length(FPInts);
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.selectedItems: TIntArray;
|
||||
begin
|
||||
QTreeWidget_selectedItems(QTreeWidgetH(Widget), @Result);
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.setItemSelected(AItem: QTreeWidgetItemH;
|
||||
ASelect: Boolean);
|
||||
begin
|
||||
QTreeWidget_setItemSelected(QTreeWidgetH(Widget), AItem, ASelect);
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.sortItems(Acolumn: Integer; AOrder: QtSortOrder);
|
||||
begin
|
||||
QTreeWidget_sortItems(QTreeWidgetH(Widget), AColumn, AOrder);
|
||||
end;
|
||||
|
||||
procedure TQtTreeWidget.AttachEvents;
|
||||
var
|
||||
Method: TMethod;
|
||||
|
||||
@ -115,6 +115,7 @@ type
|
||||
|
||||
class function GetBoundingRect(const ALV: TCustomListView): TRect; override;
|
||||
|
||||
|
||||
(*
|
||||
// Column
|
||||
|
||||
@ -611,7 +612,8 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
||||
class function TQtWSCustomListView.CreateHandle(const AWinControl: TWinControl;
|
||||
const AParams: TCreateParams): TLCLIntfHandle;
|
||||
var
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
@ -625,16 +627,16 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnDelete(const ALV: TCustomListView; const AIndex: Integer);
|
||||
class procedure TQtWSCustomListView.ColumnDelete(const ALV: TCustomListView;
|
||||
const AIndex: Integer);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnDelete') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_headerItem(TW);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.headerItem;
|
||||
QTreeWidgetItem_takeChild(TWI, AIndex);
|
||||
end;
|
||||
|
||||
@ -643,24 +645,23 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnInsert(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn);
|
||||
class procedure TQtWSCustomListView.ColumnInsert(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
TWIChild: QTreeWidgetItemH;
|
||||
HV: QHeaderViewH;
|
||||
Str: WideString;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnInsert') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
|
||||
if QtTreeWidget.ColCount <> TListView(ALV).Columns.Count then
|
||||
QtTreeWidget.ColCount := TListView(ALV).Columns.Count;
|
||||
|
||||
if QTreeWidget_columnCount(TW) <> TListView(ALV).Columns.Count then
|
||||
QTreeWidget_setColumnCount(TW, TListView(ALV).Columns.Count);
|
||||
|
||||
TWI := QTreeWidget_headerItem(TW);
|
||||
TWI := QtTreeWidget.headerItem;
|
||||
|
||||
if QTreeWidgetItem_childCount(TWI) < (AIndex + 1) then
|
||||
begin
|
||||
@ -671,11 +672,9 @@ begin
|
||||
QTreeWidgetItem_setText(TWI, AIndex, @Str);
|
||||
end;
|
||||
|
||||
HV := QTreeView_header(TW);
|
||||
|
||||
if not QHeaderView_isClickable(HV) then
|
||||
QHeaderView_setClickable(HV, True);
|
||||
|
||||
if (csDesigning in ALV.ComponentState) then
|
||||
exit;
|
||||
QtTreeWidget.Header.Clickable := TListView(ALV).ColumnClick;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -683,15 +682,16 @@ end;
|
||||
Params: None
|
||||
Returns: Integer
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.ColumnGetWidth(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn): Integer;
|
||||
class function TQtWSCustomListView.ColumnGetWidth(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn): Integer;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnGetWidth') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
Result := QTreeView_columnWidth(QTreeViewH(TW), AIndex);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
Result := QtTreeWidget.ColWidth[AIndex];
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -699,17 +699,19 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnMove(const ALV: TCustomListView; const AOldIndex, ANewIndex: Integer; const AColumn: TListColumn);
|
||||
class procedure TQtWSCustomListView.ColumnMove(const ALV: TCustomListView;
|
||||
const AOldIndex, ANewIndex: Integer; const AColumn: TListColumn);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
HV: QHeaderViewH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnMove') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
HV := QTreeView_header(TW);
|
||||
QHeaderView_moveSection(HV, AOldIndex, ANewIndex);
|
||||
if (csDesigning in ALV.ComponentState) then
|
||||
exit;
|
||||
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
QtTreeWidget.Header.moveSection(AOldIndex, ANewIndex);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -717,17 +719,17 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnSetAlignment(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn; const AAlignment: TAlignment);
|
||||
class procedure TQtWSCustomListView.ColumnSetAlignment(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn; const AAlignment: TAlignment);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnSetAlignment') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_headerItem(TW);
|
||||
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.headerItem;
|
||||
QTreeWidgetItem_setTextAlignment(TWI, AIndex, AlignmentToQtAlignmentMap[AAlignment]);
|
||||
end;
|
||||
|
||||
@ -736,20 +738,22 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnSetAutoSize(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn; const AAutoSize: Boolean);
|
||||
class procedure TQtWSCustomListView.ColumnSetAutoSize(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn; const AAutoSize: Boolean);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
HV: QHeaderViewH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnSetAutoSize') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
HV := QTreeView_header(TW);
|
||||
if (csDesigning in ALV.ComponentState) then
|
||||
exit;
|
||||
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
if AAutoSize then
|
||||
QHeaderView_setResizeMode(HV, AIndex, QHeaderViewResizeToContents)
|
||||
QtTreeWidget.Header.setResizeMode(AIndex, QHeaderViewResizeToContents)
|
||||
else
|
||||
QHeaderView_setResizeMode(HV, AIndex, QHeaderViewInteractive);
|
||||
QtTreeWidget.Header.setResizeMode(AIndex, QHeaderViewInteractive);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -757,17 +761,18 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnSetCaption(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn; const ACaption: String);
|
||||
class procedure TQtWSCustomListView.ColumnSetCaption(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn; const ACaption: String);
|
||||
var
|
||||
Str: WideString;
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnSetAutoSize') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_headerItem(TW);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.headerItem;
|
||||
if TWI <> NiL then
|
||||
begin
|
||||
Str := GetUtf8String(ACaption);
|
||||
@ -780,7 +785,8 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnSetImage(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn; const AImageIndex: Integer);
|
||||
class procedure TQtWSCustomListView.ColumnSetImage(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn; const AImageIndex: Integer);
|
||||
{var
|
||||
TW: QTreeWidgetH;
|
||||
TWI: QTreeWidgetItemH;}
|
||||
@ -802,17 +808,15 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnSetMinWidth(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn; const AMinWidth: integer);
|
||||
class procedure TQtWSCustomListView.ColumnSetMinWidth(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn; const AMinWidth: integer);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
HV: QHeaderViewH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnSetMinWidth') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
HV := QTreeView_header(TW);
|
||||
QHeaderView_setMinimumSectionSize(HV, AMinWidth);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
QtTreeWidget.MinColSize[AIndex] := AMinWidth;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -820,15 +824,16 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnSetWidth(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn; const AWidth: Integer);
|
||||
class procedure TQtWSCustomListView.ColumnSetWidth(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn; const AWidth: Integer);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnSetWidth') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
QTreeView_setColumnWidth(QTreeViewH(TW), AIndex, AWidth);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
QtTreeWidget.ColWidth[AIndex] := AWidth;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -836,15 +841,16 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ColumnSetVisible(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn; const AVisible: Boolean);
|
||||
class procedure TQtWSCustomListView.ColumnSetVisible(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AColumn: TListColumn; const AVisible: Boolean);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ColumnSetVisible') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
QTreeView_setColumnHidden(QTreeViewH(TW), AIndex, not AVisible);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
QtTreeWidget.ColVisible[AIndex] := AVisible;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -852,28 +858,29 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ItemDelete(const ALV: TCustomListView; const AIndex: Integer);
|
||||
class procedure TQtWSCustomListView.ItemDelete(const ALV: TCustomListView;
|
||||
const AIndex: Integer);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
QtItem: QTreeWidgetItemH;
|
||||
Item: TListItem;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemDelete') then
|
||||
Exit;
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
QTreeWidget_takeTopLevelItem(TW, AIndex);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
QtTreeWidget.takeTopLevelItem(AIndex);
|
||||
|
||||
{$note FIXME workaround issue #9746}
|
||||
{workaround for ListOutOfBounds in some cases. Described with issue #9746}
|
||||
QtItem := QTreeWidget_currentItem(TW);
|
||||
QtItem := QtTreeWidget.currentItem;
|
||||
|
||||
if QtItem <> nil then
|
||||
begin
|
||||
Item := ALV.Selected;
|
||||
if Assigned(Item) then
|
||||
begin
|
||||
if Item.Index <> QTreeWidget_indexOfTopLevelItem(TW, QtItem) then
|
||||
TListView(ALV).Items[QTreeWidget_indexOfTopLevelItem(TW, QtItem)].Selected := True;
|
||||
if Item.Index <> QtTreeWidget.indexOfTopLevelItem(QtItem) then
|
||||
TListView(ALV).Items[QtTreeWidget.indexOfTopLevelItem(QtItem)].Selected := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -884,9 +891,10 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.ItemGetChecked(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem): Boolean;
|
||||
class function TQtWSCustomListView.ItemGetChecked(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AItem: TListItem): Boolean;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
AState: QtCheckState;
|
||||
begin
|
||||
@ -897,8 +905,8 @@ begin
|
||||
if not Result then
|
||||
exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_topLevelItem(TW, AIndex);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.topLevelItem(AIndex);
|
||||
AState := QTreeWidgetItem_checkState(TWI, 0);
|
||||
if AState = QtChecked then
|
||||
Result := True
|
||||
@ -909,19 +917,19 @@ end;
|
||||
Params: None
|
||||
Returns: TPoint
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.ItemGetPosition(const ALV: TCustomListView; const AIndex: Integer): TPoint;
|
||||
class function TQtWSCustomListView.ItemGetPosition(const ALV: TCustomListView;
|
||||
const AIndex: Integer): TPoint;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
R: TRect;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemGetPosition') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_topLevelItem(TW, AIndex);
|
||||
QTreeWidget_visualItemRect(TW, @R, TWI);
|
||||
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.topLevelItem(AIndex);
|
||||
R := QtTreeWidget.visualItemRect(TWI);
|
||||
Result.X := R.Left;
|
||||
Result.Y := R.Top;
|
||||
|
||||
@ -932,19 +940,21 @@ end;
|
||||
Params: None
|
||||
Returns: TPoint
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.ItemGetState(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem; const AState: TListItemState; out AIsSet: Boolean): Boolean;
|
||||
class function TQtWSCustomListView.ItemGetState(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AItem: TListItem;
|
||||
const AState: TListItemState; out AIsSet: Boolean): Boolean;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemGetState') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_topLevelItem(TW, AIndex);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.topLevelItem(AIndex);
|
||||
|
||||
case AState of
|
||||
lisFocused: AIsSet := TWI = QTreeWidget_currentItem(TW);
|
||||
lisFocused: AIsSet := TWI = QtTreeWidget.currentItem;
|
||||
lisSelected: AIsSet := QTreeWidgetItem_isSelected(TWI);
|
||||
else
|
||||
AIsSet := False;
|
||||
@ -959,9 +969,10 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ItemSetChecked(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem; const AChecked: Boolean);
|
||||
class procedure TQtWSCustomListView.ItemSetChecked(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AItem: TListItem; const AChecked: Boolean);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemSetChecked') then
|
||||
@ -970,8 +981,8 @@ begin
|
||||
if not ALV.CheckBoxes then
|
||||
exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_topLevelItem(TW, AIndex);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.topLevelItem(AIndex);
|
||||
if AChecked then
|
||||
QTreeWidgetItem_setCheckState(TWI, 0, QtChecked)
|
||||
else
|
||||
@ -983,20 +994,21 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ItemSetState(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem; const AState: TListItemState; const AIsSet: Boolean);
|
||||
class procedure TQtWSCustomListView.ItemSetState(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AItem: TListItem;
|
||||
const AState: TListItemState; const AIsSet: Boolean);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemSetState') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_topLevelItem(TW, AIndex);
|
||||
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.topLevelItem(AIndex);
|
||||
case AState of
|
||||
lisFocused: QTreeWidget_setCurrentItem(TW, TWI);
|
||||
lisSelected: QTreeWidgetItem_setSelected(TWI, AIsSet);
|
||||
lisFocused: QtTreeWidget.setCurrentItem(TWI);
|
||||
lisSelected: QtTreeWidget.setItemSelected(TWI, AIsSet);
|
||||
end;
|
||||
|
||||
end;
|
||||
@ -1006,9 +1018,10 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ItemInsert(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem);
|
||||
class procedure TQtWSCustomListView.ItemInsert(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AItem: TListItem);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
Str: WideString;
|
||||
i: Integer;
|
||||
@ -1016,8 +1029,8 @@ begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemInsert') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidgetItem_create(TW, 0);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QTreeWidgetItem_create(QTreeWidgetH(QtTreeWidget.Widget), 0);
|
||||
Str := GetUtf8String(AItem.Caption);
|
||||
|
||||
if ALV.CheckBoxes then
|
||||
@ -1034,8 +1047,7 @@ begin
|
||||
Str := GetUtf8String(AItem.Subitems.Strings[i]);
|
||||
QTreeWidgetItem_setText(TWI, i+1, @Str);
|
||||
end;
|
||||
|
||||
QTreeWidget_insertTopLevelItem(TW, AIndex, TWI);
|
||||
QtTreeWidget.insertTopLevelItem(AIndex, TWI);
|
||||
end;
|
||||
|
||||
|
||||
@ -1044,18 +1056,22 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ItemSetText(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem; const ASubIndex: Integer; const AText: String);
|
||||
class procedure TQtWSCustomListView.ItemSetText(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AItem: TListItem; const ASubIndex: Integer;
|
||||
const AText: String);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
Str: WideString;
|
||||
begin
|
||||
writeln('TQtWSCustomListView.ItemSetText() AIndex=',AIndex,' ASubIndex=',ASubIndex,
|
||||
' Text=',AText,' SubItemsCount=',AItem.SubItems.Count);
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemSetText') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
Str := GetUtf8String(AText);
|
||||
TWI := QTreeWidget_topLevelItem(TW, AIndex);
|
||||
TWI := QtTreeWidget.topLevelItem(AIndex);
|
||||
if TWI <> NiL then
|
||||
QTreeWidgetItem_setText(TWI, ASubIndex, @Str);
|
||||
end;
|
||||
@ -1065,17 +1081,18 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.ItemShow(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem; const PartialOK: Boolean);
|
||||
class procedure TQtWSCustomListView.ItemShow(const ALV: TCustomListView;
|
||||
const AIndex: Integer; const AItem: TListItem; const PartialOK: Boolean);
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemShow') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_topLevelItem(TW, AIndex);
|
||||
QTreeWidget_setItemHidden(TW, TWI, False);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.topLevelItem(AIndex);
|
||||
QtTreeWidget.setItemVisible(TWI, True);
|
||||
end;
|
||||
|
||||
|
||||
@ -1084,20 +1101,21 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.ItemDisplayRect(const ALV: TCustomListView; const AIndex, ASubItem: Integer; ACode: TDisplayCode): TRect;
|
||||
class function TQtWSCustomListView.ItemDisplayRect(const ALV: TCustomListView;
|
||||
const AIndex, ASubItem: Integer; ACode: TDisplayCode): TRect;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'ItemDisplayRect') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_topLevelItem(TW, AIndex);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.topLevelItem(AIndex);
|
||||
if QTreeWidgetItem_childCount(TWI) > 0 then
|
||||
QTreeWidget_visualItemRect(TW, @Result, QTreeWidgetItem_child(TWI, ASubItem))
|
||||
Result := QtTreeWidget.visualItemRect(QTreeWidgetItem_child(TWI, ASubItem))
|
||||
else
|
||||
QTreeWidget_visualItemRect(TW, @Result, TWI);
|
||||
Result := QtTreeWidget.visualItemRect(TWI);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -1107,16 +1125,16 @@ end;
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.GetFocused(const ALV: TCustomListView): Integer;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
i: Integer;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'GetFocused') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_currentItem(TW);
|
||||
i := QTreeWidget_indexOfTopLevelItem(TW, TWI);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.currentItem;
|
||||
i := QtTreeWidget.indexOfTopLevelItem(TWI);
|
||||
if QTreeWidgetItem_isSelected(TWI) then
|
||||
Result := i
|
||||
else
|
||||
@ -1130,15 +1148,14 @@ end;
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.GetItemAt(const ALV: TCustomListView; x,y: integer): Integer;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'GetItemAt') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
TWI := QTreeWidget_itemAt(TW, x, y);
|
||||
Result := QTreeWidget_indexOfTopLevelItem(TW, TWI);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
TWI := QtTreeWidget.itemAt(x, y);
|
||||
Result := QtTreeWidget.indexOfTopLevelItem(TWI);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -1148,15 +1165,13 @@ end;
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.GetSelCount(const ALV: TCustomListView): Integer;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
FPInts: TIntArray;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'GetSelCount') then
|
||||
Exit;
|
||||
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
QTreeWidget_selectedItems(TW, @FPInts);
|
||||
Result := length(FPInts);
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
Result := QtTreeWidget.selCount;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -1166,15 +1181,15 @@ end;
|
||||
------------------------------------------------------------------------------}
|
||||
class function TQtWSCustomListView.GetSelection(const ALV: TCustomListView): Integer;
|
||||
var
|
||||
TW: QTreeWidgetH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
FPInts: TIntArray;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'GetSelection') then
|
||||
Exit;
|
||||
|
||||
{implement selection event so we can return Alv.Selected.Index}
|
||||
TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);
|
||||
QTreeWidget_selectedItems(TW, @FPInts);
|
||||
{implement selection event so we can return Alv.Selected.Index}
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
FPInts := QtTreeWidget.selectedItems;
|
||||
if Length(FPInts)>0 then
|
||||
Result := FPInts[0]
|
||||
else
|
||||
@ -1186,20 +1201,31 @@ end;
|
||||
Params: None
|
||||
Returns: Nothing
|
||||
------------------------------------------------------------------------------}
|
||||
class procedure TQtWSCustomListView.SetSort(const ALV: TCustomListView; const AType: TSortType; const AColumn: Integer);
|
||||
{var
|
||||
TW: QTreeWidgetH;}
|
||||
class procedure TQtWSCustomListView.SetSort(const ALV: TCustomListView;
|
||||
const AType: TSortType; const AColumn: Integer);
|
||||
var
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'SetSort') then
|
||||
Exit;
|
||||
|
||||
{TW := QTreeWidgetH(TQtTreeWidget(ALV.Handle).Widget);}
|
||||
if (csDesigning in ALV.ComponentState) then
|
||||
exit;
|
||||
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
|
||||
if AType <> stNone then
|
||||
begin
|
||||
{$note implement}
|
||||
// QTreeWidget_setSortingEnabled(TW, True);
|
||||
// QTreeView_sortByColumn(QTreeViewH(TW), AColumn);
|
||||
QtTreeWidget.SortEnabled := True;
|
||||
{$note for proper implementation of all TSortType
|
||||
we have to implement item sorting roles.
|
||||
if QtTreeWidget.Header.sortIndicatorOrder = QtDescendingOrder then
|
||||
QtTreeWidget.sortItems(AColumn, QtAscendingOrder)
|
||||
else
|
||||
QtTreeWidget.sortItems(AColumn, QtDescendingOrder);
|
||||
}
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -1211,8 +1237,7 @@ class function TQtWSCustomListView.GetBoundingRect(const ALV: TCustomListView):
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'GetBoundingRect') then
|
||||
Exit;
|
||||
|
||||
Result := TQtWidget(ALV.Handle).getFrameGeometry;
|
||||
Result := TQtTreeWidget(ALV.Handle).getFrameGeometry;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
Loading…
Reference in New Issue
Block a user