Qt: properly set column widths, also ColumnDelete() fixed. fixes #16928

git-svn-id: trunk@26652 -
This commit is contained in:
zeljko 2010-07-14 16:30:29 +00:00
parent 9d983ccdcd
commit 46e13be16d
2 changed files with 23 additions and 9 deletions

View File

@ -1215,6 +1215,7 @@ type
function selectedItems: TPtrIntArray; function selectedItems: TPtrIntArray;
procedure setHeaderVisible(AVisible: Boolean); procedure setHeaderVisible(AVisible: Boolean);
procedure setItemSelected(AItem: QTreeWidgetItemH; ASelect: Boolean); procedure setItemSelected(AItem: QTreeWidgetItemH; ASelect: Boolean);
procedure setStretchLastSection(AValue: Boolean);
procedure sortItems(Acolumn: Integer; AOrder: QtSortOrder); procedure sortItems(Acolumn: Integer; AOrder: QtSortOrder);
public public
procedure AttachEvents; override; procedure AttachEvents; override;
@ -9717,6 +9718,15 @@ begin
DeliverMessage(Msg); DeliverMessage(Msg);
end; end;
procedure TQtTreeWidget.setStretchLastSection(AValue: Boolean);
begin
if (csDesigning in LCLObject.ComponentState) then
QHeaderView_setStretchLastSection(QTreeView_header(QTreeViewH(Widget)),
AValue)
else
Header.setStretchLastSection(AValue);
end;
procedure TQtTreeWidget.sortItems(Acolumn: Integer; AOrder: QtSortOrder); procedure TQtTreeWidget.sortItems(Acolumn: Integer; AOrder: QtSortOrder);
begin begin
QTreeWidget_sortItems(QTreeWidgetH(Widget), AColumn, AOrder); QTreeWidget_sortItems(QTreeWidgetH(Widget), AColumn, AOrder);

View File

@ -639,6 +639,7 @@ begin
begin begin
QtTreeWidget := TQtTreeWidget.Create(AWinControl, AParams); QtTreeWidget := TQtTreeWidget.Create(AWinControl, AParams);
QtTreeWidget.ViewStyle := Ord(TListView(AWinControl).ViewStyle); QtTreeWidget.ViewStyle := Ord(TListView(AWinControl).ViewStyle);
QtTreeWidget.setStretchLastSection(False);
QtTreeWidget.setRootIsDecorated(False); QtTreeWidget.setRootIsDecorated(False);
QtTreeWidget.AttachEvents; QtTreeWidget.AttachEvents;
Result := TLCLIntfHandle(QtTreeWidget); Result := TLCLIntfHandle(QtTreeWidget);
@ -652,9 +653,6 @@ end;
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
class procedure TQtWSCustomListView.ColumnDelete(const ALV: TCustomListView; class procedure TQtWSCustomListView.ColumnDelete(const ALV: TCustomListView;
const AIndex: Integer); const AIndex: Integer);
var
QtTreeWidget: TQtTreeWidget;
TWI: QTreeWidgetItemH;
begin begin
if not WSCheckHandleAllocated(ALV, 'ColumnDelete') then if not WSCheckHandleAllocated(ALV, 'ColumnDelete') then
Exit; Exit;
@ -663,9 +661,9 @@ begin
if IsIconView(ALV) then if IsIconView(ALV) then
exit; exit;
QtTreeWidget := TQtTreeWidget(ALV.Handle); // we must recreate handle since there's no column removal support
TWI := QtTreeWidget.headerItem; // in our bindings (protected methods in qt).
QTreeWidgetItem_takeChild(TWI, AIndex); RecreateWnd(ALV);
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -693,6 +691,9 @@ begin
if QtTreeWidget.ColCount <> TListView(ALV).Columns.Count then if QtTreeWidget.ColCount <> TListView(ALV).Columns.Count then
QtTreeWidget.ColCount := TListView(ALV).Columns.Count; QtTreeWidget.ColCount := TListView(ALV).Columns.Count;
if (QtTreeWidget.ColCount <= 1) and TListView(ALV).ShowColumnHeaders then
QtTreeWidget.setHeaderVisible(True);
TWI := QtTreeWidget.headerItem; TWI := QtTreeWidget.headerItem;
if QTreeWidgetItem_childCount(TWI) < (AIndex + 1) then if QTreeWidgetItem_childCount(TWI) < (AIndex + 1) then
@ -706,6 +707,7 @@ begin
if (csDesigning in ALV.ComponentState) then if (csDesigning in ALV.ComponentState) then
exit; exit;
QtTreeWidget.Header.Clickable := TListView(ALV).ColumnClick; QtTreeWidget.Header.Clickable := TListView(ALV).ColumnClick;
end; end;
@ -1721,7 +1723,8 @@ begin
begin begin
if not IsIconView(ALV) then if not IsIconView(ALV) then
with TQtTreeWidget(ALV.Handle) do with TQtTreeWidget(ALV.Handle) do
setHeaderVisible(AIsSet and (TListView(ALV).ViewStyle = vsReport)); setHeaderVisible(AIsSet and (TListView(ALV).ViewStyle = vsReport)
and (TListView(ALV).Columns.Count > 0) );
end; end;
lvpReadOnly: QtItemView.setEditTriggers(BoolToEditTriggers[AIsSet]); lvpReadOnly: QtItemView.setEditTriggers(BoolToEditTriggers[AIsSet]);
lvpRowSelect: lvpRowSelect:
@ -1792,7 +1795,8 @@ begin
QtTreeWidget := TQtTreeWidget(ALV.Handle); QtTreeWidget := TQtTreeWidget(ALV.Handle);
ItemViewWidget := QTreeWidgetH(QtTreeWidget.Widget); ItemViewWidget := QTreeWidgetH(QtTreeWidget.Widget);
with QtTreeWidget do with QtTreeWidget do
setHeaderVisible(TListView(ALV).ShowColumnHeaders and (AValue = vsReport)); setHeaderVisible(TListView(ALV).ShowColumnHeaders and (AValue = vsReport)
and (TListView(ALV).Columns.Count > 0) );
end; end;
case AValue of case AValue of
vsIcon: vsIcon: