mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-26 23:03:48 +02:00
935 lines
37 KiB
ObjectPascal
935 lines
37 KiB
ObjectPascal
{
|
|
*****************************************************************************
|
|
* CarbonWSComCtrls.pp *
|
|
* ------------------- *
|
|
* *
|
|
* *
|
|
*****************************************************************************
|
|
|
|
*****************************************************************************
|
|
This file is part of the Lazarus Component Library (LCL)
|
|
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
*****************************************************************************
|
|
}
|
|
unit CarbonWSComCtrls;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
// defines
|
|
{$I carbondefines.inc}
|
|
|
|
uses
|
|
// LCL
|
|
Classes, Controls, ComCtrls, StdCtrls, LCLType, LCLProc, Graphics, ImgList,
|
|
// widgetset
|
|
WSComCtrls, WSLCLClasses,
|
|
// LCL Carbon
|
|
CarbonDef, CarbonPrivate, CarbonBars,
|
|
CarbonListViews;
|
|
|
|
type
|
|
|
|
{ TCarbonWSStatusBar }
|
|
|
|
TCarbonWSStatusBar = class(TWSStatusBar)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure PanelUpdate(const AStatusBar: TStatusBar; PanelIndex: integer); override;
|
|
class procedure SetPanelText(const AStatusBar: TStatusBar; PanelIndex: integer); override;
|
|
class procedure Update(const AStatusBar: TStatusBar); override;
|
|
end;
|
|
|
|
{ TCarbonWSTabSheet }
|
|
|
|
TCarbonWSTabSheet = class(TWSTabSheet)
|
|
published
|
|
end;
|
|
|
|
|
|
{ TCarbonWSCustomPage }
|
|
|
|
TCarbonWSCustomPage = class(TWSCustomPage)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure UpdateProperties(const ACustomPage: TCustomPage); override;
|
|
end;
|
|
|
|
{ TCarbonWSCustomNotebook }
|
|
|
|
TCarbonWSCustomNotebook = class(TWSCustomTabControl)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
|
|
class procedure AddPage(const ATabControl: TCustomTabControl; const AChild: TCustomPage; const AIndex: integer); override;
|
|
class procedure MovePage(const ATabControl: TCustomTabControl; const AChild: TCustomPage; const NewIndex: integer); override;
|
|
class procedure RemovePage(const ATabControl: TCustomTabControl; const AIndex: integer); override;
|
|
|
|
//class function GetNotebookMinTabHeight(const AWinControl: TWinControl): integer; override;
|
|
//class function GetNotebookMinTabWidth(const AWinControl: TWinControl): integer; override;
|
|
//class function GetPageRealIndex(const ATabControl: TCustomTabControl; AIndex: Integer): Integer; override;
|
|
class function GetTabIndexAtPos(const ATabControl: TCustomTabControl; const AClientPos: TPoint): integer; override;
|
|
class procedure SetPageIndex(const ATabControl: TCustomTabControl; const AIndex: integer); override;
|
|
class procedure SetTabPosition(const ATabControl: TCustomTabControl; const ATabPosition: TTabPosition); override;
|
|
class procedure ShowTabs(const ATabControl: TCustomTabControl; AShowTabs: boolean); override;
|
|
end;
|
|
|
|
{ TCarbonWSPageControl }
|
|
|
|
TCarbonWSPageControl = class(TWSPageControl)
|
|
published
|
|
end;
|
|
|
|
{ TCarbonWSCustomListView }
|
|
|
|
TCarbonWSCustomListView = class(TWSCustomListView)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
// Column
|
|
class procedure ColumnDelete(const ALV: TCustomListView; const AIndex: Integer); override;
|
|
class function ColumnGetWidth(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn): Integer; override;
|
|
class procedure ColumnInsert(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn); override;
|
|
class procedure ColumnMove(const ALV: TCustomListView; const AOldIndex, ANewIndex: Integer; const AColumn: TListColumn); override;
|
|
class procedure ColumnSetAlignment(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn; const AAlignment: TAlignment); override;
|
|
class procedure ColumnSetAutoSize(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn; const AAutoSize: Boolean); override;
|
|
class procedure ColumnSetCaption(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn; const ACaption: String); override;
|
|
class procedure ColumnSetImage(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn; const AImageIndex: Integer); override;
|
|
class procedure ColumnSetMaxWidth(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn; const AMaxWidth: Integer); override;
|
|
class procedure ColumnSetMinWidth(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn; const AMinWidth: integer); override;
|
|
class procedure ColumnSetWidth(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn; const AWidth: Integer); override;
|
|
class procedure ColumnSetVisible(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AColumn: TListColumn; const AVisible: Boolean); override;
|
|
|
|
// Item
|
|
class procedure ItemDelete(const ALV: TCustomListView; const AIndex: Integer); override;
|
|
class function ItemDisplayRect(const ALV: TCustomListView; const AIndex, ASubItem: Integer; ACode: TDisplayCode): TRect; override;
|
|
class function ItemGetChecked(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AItem: TListItem): Boolean; override;
|
|
class function ItemGetPosition(const ALV: TCustomListView; const AIndex: Integer): TPoint; override;
|
|
class function ItemGetState(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AItem: TListItem; const AState: TListItemState; out AIsSet: Boolean): Boolean; override; // returns True if supported
|
|
class procedure ItemInsert(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AItem: TListItem); override;
|
|
class procedure ItemSetChecked(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AItem: TListItem; const AChecked: Boolean); override;
|
|
class procedure ItemSetImage(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AItem: TListItem; const {%H-}ASubIndex, {%H-}AImageIndex: Integer); override;
|
|
//class function ItemSetPosition(const ALV: TCustomListView; const AIndex: Integer; const ANewPosition: TPoint): Boolean; override;
|
|
class procedure ItemSetState(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AItem: TListItem; const AState: TListItemState; const AIsSet: Boolean); override;
|
|
class procedure ItemSetText(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AItem: TListItem; const {%H-}ASubIndex: Integer; const {%H-}AText: String); override;
|
|
class procedure ItemShow(const ALV: TCustomListView; const AIndex: Integer; const {%H-}AItem: TListItem; const PartialOK: Boolean); override;
|
|
|
|
// LV
|
|
//class procedure BeginUpdate(const ALV: TCustomListView); override;
|
|
//class procedure EndUpdate(const ALV: TCustomListView); override;
|
|
|
|
class function GetBoundingRect(const ALV: TCustomListView): TRect; override;
|
|
//class function GetDropTarget(const ALV: TCustomListView): Integer; override;
|
|
class function GetFocused(const ALV: TCustomListView): Integer; override;
|
|
//class function GetHoverTime(const ALV: TCustomListView): Integer; override;
|
|
class function GetItemAt(const ALV: TCustomListView; x,y: integer): Integer; override;
|
|
class function GetSelCount(const ALV: TCustomListView): Integer; override;
|
|
//class function GetSelection(const ALV: TCustomListView): Integer; override;
|
|
class function GetTopItem(const ALV: TCustomListView): Integer; override;
|
|
class function GetViewOrigin(const ALV: TCustomListView): TPoint; override;
|
|
class function GetVisibleRowCount(const ALV: TCustomListView): Integer; override;
|
|
|
|
//class procedure SetAllocBy(const ALV: TCustomListView; const AValue: Integer); override;
|
|
class procedure SetDefaultItemHeight(const ALV: TCustomListView; const AValue: Integer); override;
|
|
//class procedure SetHotTrackStyles(const ALV: TCustomListView; const AValue: TListHotTrackStyles); override;
|
|
//class procedure SetHoverTime(const ALV: TCustomListView; const AValue: Integer); override;
|
|
class procedure SetImageList(const ALV: TCustomListView;
|
|
const AList: TListViewImageList; const AValue: TCustomImageListResolution); override;
|
|
class procedure SetItemsCount(const ALV: TCustomListView; const Avalue: Integer); override;
|
|
class procedure SetOwnerData(const ALV: TCustomListView; const {%H-}AValue: Boolean); override;
|
|
class procedure SetProperty(const ALV: TCustomListView; const AProp: TListViewProperty; const AIsSet: Boolean); override;
|
|
class procedure SetProperties(const ALV: TCustomListView; const AProps: TListViewProperties); override;
|
|
class procedure SetScrollBars(const ALV: TCustomListView; const AValue: TScrollStyle); override;
|
|
class procedure SetSort(const ALV: TCustomListView; const {%H-}AType: TSortType; const {%H-}AColumn: Integer;
|
|
const {%H-}ASortDirection: TSortDirection); override;
|
|
class procedure SetViewOrigin(const ALV: TCustomListView; const AValue: TPoint); override;
|
|
class procedure SetViewStyle(const ALV: TCustomListView; const AValue: TViewStyle); override;
|
|
end;
|
|
|
|
{ TCarbonWSListView }
|
|
|
|
TCarbonWSListView = class(TWSListView)
|
|
published
|
|
end;
|
|
|
|
{ TCarbonWSProgressBar }
|
|
|
|
TCarbonWSProgressBar = class(TWSProgressBar)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure ApplyChanges(const AProgressBar: TCustomProgressBar); override;
|
|
class procedure SetPosition(const AProgressBar: TCustomProgressBar; const {%H-}NewPosition: integer); override;
|
|
class procedure SetStyle(const AProgressBar: TCustomProgressBar; const AStyle: TProgressBarStyle); override;
|
|
end;
|
|
|
|
{ TCarbonWSCustomUpDown }
|
|
|
|
TCarbonWSCustomUpDown = class(TWSCustomUpDown)
|
|
published
|
|
end;
|
|
|
|
{ TCarbonWSUpDown }
|
|
|
|
TCarbonWSUpDown = class(TWSUpDown)
|
|
published
|
|
end;
|
|
|
|
{ TCarbonWSToolButton }
|
|
|
|
TCarbonWSToolButton = class(TWSToolButton)
|
|
published
|
|
end;
|
|
|
|
{ TCarbonWSToolBar }
|
|
|
|
TCarbonWSToolBar = class(TWSToolBar)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
end;
|
|
|
|
{ TCarbonWSTrackBar }
|
|
|
|
TCarbonWSTrackBar = class(TWSTrackBar)
|
|
published
|
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
|
class procedure ApplyChanges(const ATrackBar: TCustomTrackBar); override;
|
|
class function GetPosition(const ATrackBar: TCustomTrackBar): integer; override;
|
|
class procedure SetPosition(const ATrackBar: TCustomTrackBar; const {%H-}NewPosition: integer); override;
|
|
end;
|
|
|
|
{ TCarbonWSCustomTreeView }
|
|
|
|
TCarbonWSCustomTreeView = class(TWSCustomTreeView)
|
|
published
|
|
end;
|
|
|
|
{ TCarbonWSTreeView }
|
|
|
|
TCarbonWSTreeView = class(TWSTreeView)
|
|
published
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
CarbonProc, CarbonTabs;
|
|
|
|
{ TCarbonWSToolBar }
|
|
|
|
class function TCarbonWSToolBar.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
Result := TLCLIntfHandle(TCarbonToolBar.Create(AWinControl, AParams));
|
|
// TCarbonCustomControl(Result).
|
|
end;
|
|
|
|
{ TCarbonWSStatusBar }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSStatusBar.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the control in Carbon interface
|
|
|
|
Creates new status bar in Carbon interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSStatusBar.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
Result := TLCLIntfHandle(TCarbonStatusBar.Create(AWinControl, AParams));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSStatusBar.PanelUpdate
|
|
Params: AStatusBar - LCL status bar
|
|
PanelIndex - Index of panel to update
|
|
|
|
Updates the status bar panel
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSStatusBar.PanelUpdate(const AStatusBar: TStatusBar;
|
|
PanelIndex: integer);
|
|
begin
|
|
if not CheckHandle(AStatusBar, Self, 'PanelUpdate') then Exit;
|
|
|
|
TCarbonStatusBar(AStatusBar.Handle).UpdatePanel(PanelIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSStatusBar.SetPanelText
|
|
Params: AStatusBar - LCL status bar
|
|
PanelIndex - Index of panel
|
|
|
|
Updates the text of status bar panel
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSStatusBar.SetPanelText(const AStatusBar: TStatusBar;
|
|
PanelIndex: integer);
|
|
begin
|
|
if not CheckHandle(AStatusBar, Self, 'SetPanelText') then Exit;
|
|
|
|
TCarbonStatusBar(AStatusBar.Handle).UpdatePanel(PanelIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSStatusBar.Update
|
|
Params: AStatusBar - LCL status bar
|
|
|
|
Updates the status bar
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSStatusBar.Update(const AStatusBar: TStatusBar);
|
|
begin
|
|
if not CheckHandle(AStatusBar, Self, 'Update') then Exit;
|
|
|
|
TCarbonStatusBar(AStatusBar.Handle).UpdatePanel;
|
|
end;
|
|
|
|
{ TCarbonWSCustomPage }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomPage.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the control in Carbon interface
|
|
|
|
Creates new custom page in Carbon interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSCustomPage.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
Result := TLCLIntfHandle(TCarbonTab.Create(AWinControl, AParams));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomPage.UpdateProperties
|
|
Params: ACustomPage - LCL custom page
|
|
|
|
Update properties of the specified custom page in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomPage.UpdateProperties(const ACustomPage: TCustomPage);
|
|
begin
|
|
if not CheckHandle(ACustomPage, Self, 'UpdateProperties') then Exit;
|
|
|
|
TCarbonTab(ACustomPage.Handle).UpdateTab;
|
|
end;
|
|
|
|
{ TCarbonWSCustomNotebook }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the control in Carbon interface
|
|
|
|
Creates new custom notebook in Carbon interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSCustomNotebook.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
if AWinControl is TTabControl then
|
|
begin
|
|
Result := TLCLIntfHandle(TCarbonCustomControl.Create(AWinControl, AParams));
|
|
TCarbonCustomControl(Result).CarbonWidgetFlag := cwdTTabControl;
|
|
end else
|
|
Result := TLCLIntfHandle(TCarbonTabsControl.Create(AWinControl, AParams));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.AddPage
|
|
Params: ATabControl - LCL custom notebook
|
|
AChild - New tab
|
|
AIndex - New tab index
|
|
|
|
Adds tab with the specified index in notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.AddPage(const ATabControl: TCustomTabControl;
|
|
const AChild: TCustomPage; const AIndex: integer);
|
|
begin
|
|
if not CheckHandle(ATabControl, Self, 'AddPage') then Exit;
|
|
if AChild.HandleAllocated and not CheckHandle(AChild, Self, 'AddPage AChild') then Exit;
|
|
|
|
// create child handle
|
|
AChild.HandleNeeded;
|
|
// add page
|
|
TCarbonTabsControl(ATabControl.Handle).Add(TCarbonTab(AChild.Handle), AIndex);
|
|
// sync PageIndex with LCL
|
|
TCarbonTabsControl(ATabControl.Handle).SetPageIndex(ATabControl.PageIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.MovePage
|
|
Params: ATabControl - LCL custom notebook
|
|
AChild - Moved tab
|
|
AIndex - New tab index
|
|
|
|
Moves tab to the specified index in notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.MovePage(const ATabControl: TCustomTabControl;
|
|
const AChild: TCustomPage; const NewIndex: integer);
|
|
begin
|
|
if not CheckHandle(ATabControl, Self, 'MovePage') then Exit;
|
|
if not CheckHandle(AChild, Self, 'MovePage AChild') then Exit;
|
|
|
|
TCarbonTabsControl(ATabControl.Handle).Remove(AChild.PageIndex);
|
|
TCarbonTabsControl(ATabControl.Handle).Add(TCarbonTab(AChild.Handle), NewIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.RemovePage
|
|
Params: ATabControl - LCL custom notebook
|
|
AIndex - Removed tab index
|
|
|
|
Removes tab with the specified index from notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.RemovePage(const ATabControl: TCustomTabControl;
|
|
const AIndex: integer);
|
|
begin
|
|
if not CheckHandle(ATabControl, Self, 'RemovePage') then Exit;
|
|
|
|
TCarbonTabsControl(ATabControl.Handle).Remove(AIndex);
|
|
// sync PageIndex with LCL
|
|
TCarbonTabsControl(ATabControl.Handle).SetPageIndex(ATabControl.PageIndex);
|
|
end;
|
|
|
|
|
|
class function TCarbonWSCustomNotebook.GetTabIndexAtPos(const ATabControl: TCustomTabControl; const AClientPos: TPoint): integer;
|
|
var
|
|
p : TPoint;
|
|
begin
|
|
if not CheckHandle(ATabControl, Self, 'GetTabIndexAtPos') then Exit;
|
|
p := AClientPos;
|
|
inc(p.y, 35); // todo: find out why AClientPos incorrect for TNotebook
|
|
Result := TCarbonTabsControl(ATabControl.Handle).GetPageIndexAtCursor(p);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.SetPageIndex
|
|
Params: ATabControl - LCL custom notebook
|
|
AIndex - New tab index
|
|
|
|
Selects tab with the specified index in notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.SetPageIndex(const ATabControl: TCustomTabControl;
|
|
const AIndex: integer);
|
|
begin
|
|
if not CheckHandle(ATabControl, Self, 'SetPageIndex') then Exit;
|
|
if (AIndex < 0) or (AIndex > ATabControl.PageCount - 1) then
|
|
exit;
|
|
TCarbonTabsControl(ATabControl.Handle).SetPageIndex(AIndex);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.SetTabPosition
|
|
Params: ATabControl - LCL custom notebook
|
|
ATabPosition - New position of tabs
|
|
|
|
Changes position of the tabs of notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.SetTabPosition(const ATabControl: TCustomTabControl;
|
|
const ATabPosition: TTabPosition);
|
|
begin
|
|
if not CheckHandle(ATabControl, Self, 'SetTabPosition') then Exit;
|
|
|
|
TCarbonTabsControl(ATabControl.Handle).SetTabPosition(ATabPosition);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomNotebook.ShowTabs
|
|
Params: ATabControl - LCL custom notebook
|
|
AShowTabs - Tabs visibility
|
|
|
|
Changes visibility of all tabs of notebook in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSCustomNotebook.ShowTabs(const ATabControl: TCustomTabControl;
|
|
AShowTabs: boolean);
|
|
begin
|
|
if not CheckHandle(ATabControl, Self, 'ShowTabs') then Exit;
|
|
if TCarbonControl(ATabControl.Handle).CarbonWidgetFlag <> cwdTTabControl then
|
|
TCarbonTabsControl(ATabControl.Handle).ShowTabs(AShowTabs);
|
|
end;
|
|
|
|
{ TCarbonWSCustomListView }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSCustomListView.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the control in Carbon interface
|
|
|
|
Creates new list view in Carbon interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSCustomListView.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
clv : TCarbonListView;
|
|
begin
|
|
clv:=TCarbonListView.Create(AWinControl, AParams);
|
|
Result := TLCLIntfHandle(clv);
|
|
if Assigned(clv) then
|
|
clv.SetSelectionMode(True, TListView(AWinControl).MultiSelect);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnDelete
|
|
(const ALV: TCustomListView; const AIndex: Integer);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnDelete') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).DeleteColumn(AIndex);
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.ColumnGetWidth(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn): Integer;
|
|
begin
|
|
Result := 0;
|
|
if not CheckHandle(ALV, Self, 'ColumnGetWidth') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetColumn(AIndex).GetWidth;
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnInsert(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnInsert') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).InsertColumn(AIndex, AColumn);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnMove(const ALV: TCustomListView;
|
|
const AOldIndex, ANewIndex: Integer; const AColumn: TListColumn);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnMove') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).MoveColumn(AOldIndex, ANewIndex, AColumn);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnSetAlignment(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn; const AAlignment: TAlignment);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnSetAlignment') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).GetColumn(AIndex).SetAlignment(AAlignment);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnSetAutoSize(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn; const AAutoSize: Boolean);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnSetAutoSize') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).GetColumn(AIndex).SetAutoSize(AAutoSize);
|
|
TCarbonListView(ALV.Handle).AutoSizeColumns;
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnSetCaption(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn; const ACaption: String);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnSetCaption') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).GetColumn(AIndex).SetCaption(ACaption);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnSetImage(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn; const AImageIndex: Integer);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnSetImage') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).GetColumn(AIndex).SetImageIndex(AImageIndex);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnSetMaxWidth(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn; const AMaxWidth: Integer);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnSetMaxWidth') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).GetColumn(AIndex).SetMaxWidth(AMaxWidth);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnSetMinWidth(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn; const AMinWidth: integer);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnSetMinWidth') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).GetColumn(AIndex).SetMinWidth(AMinWidth);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnSetWidth(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn; const AWidth: Integer);
|
|
var
|
|
Column: TCarbonListColumn;
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnSetWidth') then Exit;
|
|
|
|
Column := TCarbonListView(ALV.Handle).GetColumn(AIndex);
|
|
if Column <> nil then Column.SetWidth(AWidth); // Avoids crash
|
|
TCarbonListView(ALV.Handle).AutoSizeColumns;
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ColumnSetVisible(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AColumn: TListColumn; const AVisible: Boolean);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ColumnSetVisible') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).GetColumn(AIndex).SetVisible(AVisible);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ItemDelete(const ALV: TCustomListView;
|
|
const AIndex: Integer);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemDelete') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).DeleteItem(AIndex);
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.ItemDisplayRect(const ALV: TCustomListView;
|
|
const AIndex, ASubItem: Integer; ACode: TDisplayCode): TRect;
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemDisplayRect') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetItemRect(AIndex, ASubItem, ACode);
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.ItemGetChecked(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AItem: TListItem): Boolean;
|
|
begin
|
|
Result := False;
|
|
if not CheckHandle(ALV, Self, 'ItemGetChecked') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetItemChecked(AIndex);
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.ItemGetPosition(const ALV: TCustomListView;
|
|
const AIndex: Integer): TPoint;
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemGetPosition') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetItemRect(AIndex).TopLeft;
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.ItemGetState(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AItem: TListItem; const AState: TListItemState;
|
|
out AIsSet: Boolean): Boolean;
|
|
begin
|
|
Result := False;
|
|
if not CheckHandle(ALV, Self, 'ItemGetState') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetItemState(AIndex, AState, AIsSet);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ItemInsert(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AItem: TListItem);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemInsert') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).InsertItem(AIndex);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ItemSetChecked(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AItem: TListItem; const AChecked: Boolean);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemSetChecked') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).SetItemChecked(AIndex, AChecked);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ItemSetImage(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AItem: TListItem; const ASubIndex, AImageIndex: Integer);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemSetImage') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).UpdateItem(AIndex);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ItemSetState(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AItem: TListItem; const AState: TListItemState;
|
|
const AIsSet: Boolean);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemSetState') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).SetItemState(AIndex, AState, AIsSet);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ItemSetText(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AItem: TListItem; const ASubIndex: Integer;
|
|
const AText: String);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemSetText') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).UpdateItem(AIndex);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.ItemShow(const ALV: TCustomListView;
|
|
const AIndex: Integer; const AItem: TListItem; const PartialOK: Boolean);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'ItemShow') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).ShowItem(AIndex, PartialOK);
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.GetBoundingRect(const ALV: TCustomListView): TRect;
|
|
begin
|
|
Result := Rect(0, 0, 0, 0);
|
|
if not CheckHandle(ALV, Self, 'GetBoundingRect') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetItemsRect;
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.GetFocused(const ALV: TCustomListView): Integer;
|
|
begin
|
|
Result := -1;
|
|
if not CheckHandle(ALV, Self, 'GetFocused') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetItemIndex;
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.GetItemAt(const ALV: TCustomListView; x,
|
|
y: integer): Integer;
|
|
begin
|
|
Result := -1;
|
|
if not CheckHandle(ALV, Self, 'GetItemAt') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetItemAt(X, Y);
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.GetSelCount(const ALV: TCustomListView): Integer;
|
|
begin
|
|
Result := 0;
|
|
if not CheckHandle(ALV, Self, 'GetSelCount') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetSelCount;
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.GetTopItem(const ALV: TCustomListView): Integer;
|
|
begin
|
|
Result := -1;
|
|
if not CheckHandle(ALV, Self, 'GetTopItem') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetTopItem;
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.GetViewOrigin(const ALV: TCustomListView): TPoint;
|
|
begin
|
|
Result := Point(0, 0);
|
|
if not CheckHandle(ALV, Self, 'GetViewOrigin') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetViewOrigin;
|
|
end;
|
|
|
|
class function TCarbonWSCustomListView.GetVisibleRowCount(const ALV: TCustomListView): Integer;
|
|
begin
|
|
Result := 0;
|
|
if not CheckHandle(ALV, Self, 'GetVisibleRowCount') then Exit;
|
|
|
|
Result := TCarbonListView(ALV.Handle).GetVisibleRowCount;
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetDefaultItemHeight(const ALV: TCustomListView;
|
|
const AValue: Integer);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetDefaultItemHeight') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).SetItemsHeight(AValue);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetImageList(
|
|
const ALV: TCustomListView; const AList: TListViewImageList;
|
|
const AValue: TCustomImageListResolution);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetImageList') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).ClearIconCache;
|
|
TCarbonListView(ALV.Handle).UpdateItems;
|
|
TCarbonListView(ALV.Handle).UpdateColumnView;
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetItemsCount(const ALV: TCustomListView; const Avalue: Integer);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetOwnerData') then Exit;
|
|
TCarbonListView(ALV.Handle).SetItemsCount(Avalue);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetOwnerData(const ALV: TCustomListView; const AValue: Boolean);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetOwnerData') then Exit;
|
|
TCarbonListView(ALV.Handle).OwnerData := true;
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetProperty(const ALV: TCustomListView;
|
|
const AProp: TListViewProperty; const AIsSet: Boolean);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetProperty') then Exit;
|
|
|
|
// TODO
|
|
case AProp of
|
|
//lvpAutoArrange
|
|
lvpCheckboxes: TCarbonListView(ALV.Handle).ShowCheckboxes(AIsSet);
|
|
//lvpColumnClick
|
|
//lvpFlatScrollBars
|
|
//lvpFullDrag
|
|
//lvpGridLines
|
|
//lvpHideSelection
|
|
//lvpHotTrack
|
|
lvpMultiSelect: TCarbonListView(ALV.Handle).SetSelectionMode(AIsSet, AIsSet);
|
|
lvpOwnerDraw: TCarbonListView(ALV.Handle).SetOwnerDraw(AIsSet);
|
|
//lvpReadOnly
|
|
lvpRowSelect: TCarbonListView(ALV.Handle).SetRowSelect((TListView(ALV).ViewStyle <> vsReport) or AIsSet);
|
|
lvpShowColumnHeaders: TCarbonListView(ALV.Handle).ShowColumnHeaders((TListView(ALV).ViewStyle = vsReport) and AIsSet);
|
|
//lvpShowWorkAreas
|
|
//lvpWrapText
|
|
//lvpToolTips
|
|
end;
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetProperties(const ALV: TCustomListView;
|
|
const AProps: TListViewProperties);
|
|
var
|
|
AProp: TListViewProperty;
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetProperties') then Exit;
|
|
|
|
for AProp := Low(TListViewProperty) to High(TListViewProperty) do
|
|
if AProp in AProps then SetProperty(ALV, AProp, True);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetScrollBars(const ALV: TCustomListView;
|
|
const AValue: TScrollStyle);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetScrollBars') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).SetScrollBars(AValue);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetSort(const ALV: TCustomListView;
|
|
const AType: TSortType; const AColumn: Integer;
|
|
const ASortDirection: TSortDirection);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetSort') then Exit;
|
|
TCarbonListView(ALV.Handle).UpdateItems;
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetViewOrigin(const ALV: TCustomListView;
|
|
const AValue: TPoint);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetViewOrigin') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).SetViewOrigin(AValue);
|
|
end;
|
|
|
|
class procedure TCarbonWSCustomListView.SetViewStyle(const ALV: TCustomListView;
|
|
const AValue: TViewStyle);
|
|
begin
|
|
if not CheckHandle(ALV, Self, 'SetViewStyle') then Exit;
|
|
|
|
TCarbonListView(ALV.Handle).SetViewStyle(AValue);
|
|
end;
|
|
|
|
{ TCarbonWSProgressBar }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSProgressBar.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the control in Carbon interface
|
|
|
|
Creates new progress bar in Carbon interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSProgressBar.CreateHandle(
|
|
const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
Result := TLCLIntfHandle(TCarbonProgressBar.Create(AWinControl, AParams));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSProgressBar.ApplyChanges
|
|
Params: AProgressBar - LCL custom progress bar
|
|
|
|
Sets the parameters (Min, Max, Position) of progress bar in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSProgressBar.ApplyChanges(
|
|
const AProgressBar: TCustomProgressBar);
|
|
begin
|
|
if not CheckHandle(AProgressBar, Self, 'ApplyChanges') then Exit;
|
|
|
|
TCarbonProgressBar(AProgressBar.Handle).ApplyChanges;
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSProgressBar.SetPosition
|
|
Params: AProgressBar - LCL custom progress bar
|
|
NewPosition - New position
|
|
|
|
Sets the position of progress bar in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSProgressBar.SetPosition(
|
|
const AProgressBar: TCustomProgressBar; const NewPosition: integer);
|
|
begin
|
|
if not CheckHandle(AProgressBar, Self, 'SetPosition') then Exit;
|
|
|
|
TCarbonCustomBar(AProgressBar.Handle).SetPosition(AProgressBar.Position);
|
|
end;
|
|
|
|
class procedure TCarbonWSProgressBar.SetStyle(const AProgressBar: TCustomProgressBar;
|
|
const AStyle: TProgressBarStyle);
|
|
begin
|
|
TCarbonCustomBar(AProgressBar.Handle).SetIndetermine(AStyle = pbstMarquee)
|
|
end;
|
|
|
|
{ TCarbonWSTrackBar }
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSTrackBar.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the control in Carbon interface
|
|
|
|
Creates new track bar in Carbon interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSTrackBar.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
begin
|
|
Result := TLCLIntfHandle(TCarbonTrackBar.Create(AWinControl, AParams));
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSTrackBar.ApplyChanges
|
|
Params: ATrackBar - LCL custom track bar
|
|
|
|
Sets the parameters (Min, Max, Position, Ticks) of slider in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSTrackBar.ApplyChanges(const ATrackBar: TCustomTrackBar);
|
|
begin
|
|
if not CheckHandle(ATrackBar, Self, 'ApplyChanges') then Exit;
|
|
|
|
TCarbonTrackBar(ATrackBar.Handle).ApplyChanges;
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSTrackBar.GetPosition
|
|
Params: ATrackBar - LCL custom track bar
|
|
Returns: Position of sliderr in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class function TCarbonWSTrackBar.GetPosition(const ATrackBar: TCustomTrackBar
|
|
): integer;
|
|
begin
|
|
Result := 0;
|
|
if not CheckHandle(ATrackBar, Self, 'GetPosition') then Exit;
|
|
|
|
Result := TCarbonTrackBar(ATrackBar.Handle).GetPosition;
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCarbonWSTrackBar.SetPosition
|
|
Params: ATrackBar - LCL custom track bar
|
|
NewPosition - New position
|
|
|
|
Sets the position of slider in Carbon interface
|
|
------------------------------------------------------------------------------}
|
|
class procedure TCarbonWSTrackBar.SetPosition(const ATrackBar: TCustomTrackBar;
|
|
const NewPosition: integer);
|
|
begin
|
|
if not CheckHandle(ATrackBar, Self, 'SetPosition') then Exit;
|
|
|
|
TCarbonTrackBar(ATrackBar.Handle).SetPosition(ATrackBar.Position);
|
|
end;
|
|
|
|
end.
|