mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-26 05:00:25 +02:00
cleanup statusbar methods in lcl interfaceobject
fix statusbar recursive call issue git-svn-id: trunk@6143 -
This commit is contained in:
parent
7b6d63f91a
commit
3859bbcc63
@ -437,21 +437,6 @@ begin
|
|||||||
MinItemsWidth, MinItemsHeight, MinItemCount);
|
MinItemsWidth, MinItemsHeight, MinItemCount);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure StatusBarPanelUpdate(StatusBar: TObject; PanelIndex: integer);
|
|
||||||
begin
|
|
||||||
InterfaceObject.StatusBarPanelUpdate(StatusBar, PanelIndex);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure StatusBarSetText(StatusBar: TObject; PanelIndex: integer);
|
|
||||||
begin
|
|
||||||
InterfaceObject.StatusBarSetText(StatusBar, PanelIndex);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure StatusBarUpdate(StatusBar: TObject);
|
|
||||||
begin
|
|
||||||
InterfaceObject.StatusBarUpdate(StatusBar);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer;
|
function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer;
|
||||||
SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer;
|
SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer;
|
||||||
Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean;
|
Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean;
|
||||||
@ -547,6 +532,10 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.28 2004/10/16 10:15:45 micha
|
||||||
|
cleanup statusbar methods in lcl interfaceobject
|
||||||
|
fix statusbar recursive call issue
|
||||||
|
|
||||||
Revision 1.27 2004/09/04 22:24:16 mattias
|
Revision 1.27 2004/09/04 22:24:16 mattias
|
||||||
added default values for compiler skip options and improved many parts of synedit for UTF8
|
added default values for compiler skip options and improved many parts of synedit for UTF8
|
||||||
|
|
||||||
|
@ -115,9 +115,12 @@ procedure SendCachedLCLMessages; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
|||||||
function DrawSplitter(DC: HDC; const ARect: TRect; Horizontal: boolean): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function DrawSplitter(DC: HDC; const ARect: TRect; Horizontal: boolean): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function SetCaretRespondToFocus(handle: HWND; ShowHideOnFocus: boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function SetCaretRespondToFocus(handle: HWND; ShowHideOnFocus: boolean): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
procedure StatusBarPanelUpdate(StatusBar: TObject; PanelIndex: integer); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
{$IFDEF IF_BASE_MEMBER}
|
||||||
procedure StatusBarSetText(StatusBar: TObject; PanelIndex: integer); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
{ TODO: remove when gtk widgetset implements the widgetset methods }
|
||||||
procedure StatusBarUpdate(StatusBar: TObject); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
procedure StatusBarPanelUpdate(StatusBar: TObject; PanelIndex: integer); virtual;
|
||||||
|
procedure StatusBarSetText(StatusBar: TObject; PanelIndex: integer); virtual;
|
||||||
|
procedure StatusBarUpdate(StatusBar: TObject); virtual;
|
||||||
|
{$ENDIF}
|
||||||
function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer; Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer; Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
|
|
||||||
//##apiwiz##eps## // Do not remove
|
//##apiwiz##eps## // Do not remove
|
||||||
@ -154,6 +157,10 @@ procedure RaiseLastOSError;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.27 2004/10/16 10:15:45 micha
|
||||||
|
cleanup statusbar methods in lcl interfaceobject
|
||||||
|
fix statusbar recursive call issue
|
||||||
|
|
||||||
Revision 1.26 2004/09/04 22:24:16 mattias
|
Revision 1.26 2004/09/04 22:24:16 mattias
|
||||||
added default values for compiler skip options and improved many parts of synedit for UTF8
|
added default values for compiler skip options and improved many parts of synedit for UTF8
|
||||||
|
|
||||||
|
@ -39,7 +39,8 @@ begin
|
|||||||
if FSimpleText <> value then
|
if FSimpleText <> value then
|
||||||
begin
|
begin
|
||||||
FSimpleText := Value;
|
FSimpleText := Value;
|
||||||
if HandleAllocated and FSimplePanel then StatusBarSetText(Self,0);
|
if HandleAllocated and FSimplePanel then
|
||||||
|
TWSStatusBarClass(WidgetSetClass).SetPanelText(Self,0);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -112,10 +113,10 @@ begin
|
|||||||
//DebugLn('TStatusBar.UpdateHandleObject A FHandlePanelCount=',dbgs(FHandlePanelCount),' PanelIndex=',dbgs(PanelIndex),' Panels.Count=',dbgs(Panels.Count),' SimplePanel=',dbgs(SimplePanel));
|
//DebugLn('TStatusBar.UpdateHandleObject A FHandlePanelCount=',dbgs(FHandlePanelCount),' PanelIndex=',dbgs(PanelIndex),' Panels.Count=',dbgs(Panels.Count),' SimplePanel=',dbgs(SimplePanel));
|
||||||
if (FHandlePanelCount>PanelIndex) and (PanelIndex>=0) then begin
|
if (FHandlePanelCount>PanelIndex) and (PanelIndex>=0) then begin
|
||||||
// update one panel
|
// update one panel
|
||||||
StatusBarPanelUpdate(Self,PanelIndex);
|
TWSStatusBarClass(WidgetSetClass).PanelUpdate(Self,PanelIndex);
|
||||||
end else begin
|
end else begin
|
||||||
// update all panels
|
// update all panels
|
||||||
StatusBarUpdate(Self);
|
TWSStatusBarClass(WidgetSetClass).Update(Self);
|
||||||
if SimplePanel then
|
if SimplePanel then
|
||||||
FHandlePanelCount:=1
|
FHandlePanelCount:=1
|
||||||
else
|
else
|
||||||
|
@ -26,7 +26,7 @@ end;
|
|||||||
function TStatusPanels.Add: TStatusPanel;
|
function TStatusPanels.Add: TStatusPanel;
|
||||||
begin
|
begin
|
||||||
Result := TStatusPanel(inherited Add);
|
Result := TStatusPanel(inherited Add);
|
||||||
StatusBarUpdate(StatusBar);
|
TWSStatusBarClass(StatusBar.WidgetSetClass).Update(StatusBar);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TStatusPanels.GetItem(Index: Integer): TStatusPanel;
|
function TStatusPanels.GetItem(Index: Integer): TStatusPanel;
|
||||||
|
@ -165,68 +165,15 @@ Begin
|
|||||||
Result := Boolean(Windows.EnableMenuItem(AMenuItem.Parent.Handle, AMenuItem.Command, EnableFlag));
|
Result := Boolean(Windows.EnableMenuItem(AMenuItem.Parent.Handle, AMenuItem.Command, EnableFlag));
|
||||||
End;
|
End;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
|
||||||
Procedure: StatusBarPanelUpdate
|
|
||||||
Params: StatusBar:
|
|
||||||
PanelIndex:
|
|
||||||
Returns: Nothing
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------}
|
|
||||||
procedure TWin32WidgetSet.StatusBarPanelUpdate(StatusBar: TObject; PanelIndex: integer);
|
|
||||||
var
|
|
||||||
TheStatusBar: TStatusBar;
|
|
||||||
begin
|
|
||||||
TheStatusBar := (StatusBar as TStatusBar);
|
|
||||||
UpdateStatusBarPanelWidths(TheStatusBar);
|
|
||||||
UpdateStatusBarPanel(TheStatusBar.Panels[PanelIndex]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
|
||||||
Procedure: StatusBarSetText
|
|
||||||
Params: StatusBar:
|
|
||||||
PanelIndex:
|
|
||||||
Text:
|
|
||||||
Returns: Nothing
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------}
|
|
||||||
procedure TWin32WidgetSet.StatusBarSetText(StatusBar: TObject; PanelIndex: integer);
|
|
||||||
var
|
|
||||||
TheStatusBar: TStatusBar;
|
|
||||||
begin
|
|
||||||
TheStatusBar := StatusBar as TStatusBar;
|
|
||||||
if TheStatusBar.SimplePanel then
|
|
||||||
Windows.SendMessage(TheStatusBar.Handle, SB_SETTEXT, 255, LPARAM(PChar(TheStatusBar.SimpleText)))
|
|
||||||
else
|
|
||||||
UpdateStatusBarPanel(TheStatusBar.Panels[PanelIndex]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
|
||||||
Procedure: StatusBarUpdate
|
|
||||||
Params: StatusBar:
|
|
||||||
Returns: Nothing
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------}
|
|
||||||
procedure TWin32WidgetSet.StatusBarUpdate(StatusBar: TObject);
|
|
||||||
var
|
|
||||||
TheStatusBar: TStatusBar;
|
|
||||||
PanelIndex: integer;
|
|
||||||
begin
|
|
||||||
TheStatusBar := StatusBar as TStatusBar;
|
|
||||||
Windows.SendMessage(TheStatusBar.Handle, SB_SIMPLE, WPARAM(TheStatusBar.SimplePanel), 0);
|
|
||||||
if TheStatusBar.SimplePanel then
|
|
||||||
StatusBarSetText(StatusBar, 0)
|
|
||||||
else begin
|
|
||||||
UpdateStatusBarPanelWidths(TheStatusBar);
|
|
||||||
for PanelIndex := 0 to TheStatusBar.Panels.Count-1 do
|
|
||||||
UpdateStatusBarPanel(TheStatusBar.Panels[PanelIndex]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
//##apiwiz##eps## // Do not remove, no wizard declaration after this line
|
//##apiwiz##eps## // Do not remove, no wizard declaration after this line
|
||||||
|
|
||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.19 2004/10/16 10:15:45 micha
|
||||||
|
cleanup statusbar methods in lcl interfaceobject
|
||||||
|
fix statusbar recursive call issue
|
||||||
|
|
||||||
Revision 1.18 2004/04/15 08:03:07 micha
|
Revision 1.18 2004/04/15 08:03:07 micha
|
||||||
fix radiogroup menuitem, uncheck others in same group (from jreyes)
|
fix radiogroup menuitem, uncheck others in same group (from jreyes)
|
||||||
|
|
||||||
|
@ -37,15 +37,15 @@ function GetListBoxIndexAtY(ListBox: TComponent; y: integer): integer; override;
|
|||||||
function MenuItemSetCheck(BaseMenuItem: TComponent): Boolean; override;
|
function MenuItemSetCheck(BaseMenuItem: TComponent): Boolean; override;
|
||||||
function MenuItemSetEnable(BaseMenuItem: TComponent): Boolean; override;
|
function MenuItemSetEnable(BaseMenuItem: TComponent): Boolean; override;
|
||||||
|
|
||||||
procedure StatusBarPanelUpdate(StatusBar: TObject; PanelIndex: integer); override;
|
|
||||||
procedure StatusBarSetText(StatusBar: TObject; PanelIndex: integer); override;
|
|
||||||
procedure StatusBarUpdate(StatusBar: TObject); override;
|
|
||||||
|
|
||||||
//##apiwiz##eps## // Do not remove, no wizard declaration after this line
|
//##apiwiz##eps## // Do not remove, no wizard declaration after this line
|
||||||
|
|
||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.15 2004/10/16 10:15:45 micha
|
||||||
|
cleanup statusbar methods in lcl interfaceobject
|
||||||
|
fix statusbar recursive call issue
|
||||||
|
|
||||||
Revision 1.14 2004/03/19 00:53:34 marc
|
Revision 1.14 2004/03/19 00:53:34 marc
|
||||||
* Removed all ComponentCreateHandle routines
|
* Removed all ComponentCreateHandle routines
|
||||||
|
|
||||||
|
@ -47,6 +47,9 @@ type
|
|||||||
public
|
public
|
||||||
class function CreateHandle(const AWinControl: TWinControl;
|
class function CreateHandle(const AWinControl: TWinControl;
|
||||||
const AParams: TCreateParams): HWND; override;
|
const AParams: TCreateParams): HWND; override;
|
||||||
|
class procedure Update(const AStatusBar: TStatusBar); override;
|
||||||
|
class procedure PanelUpdate(const AStatusBar: TStatusBar; PanelIndex: integer); override;
|
||||||
|
class procedure SetPanelText(const AStatusBar: TStatusBar; PanelIndex: integer); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TWin32WSTabSheet }
|
{ TWin32WSTabSheet }
|
||||||
@ -188,6 +191,58 @@ type
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
{ --- Helper routines for TWin32WSStatusBar --- }
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Method: UpdateStatusBarPanel
|
||||||
|
Params: StatusPanel - StatusPanel which needs to be update
|
||||||
|
Returns: Nothing
|
||||||
|
|
||||||
|
Called by StatusBarPanelUpdate and StatusBarSetText
|
||||||
|
Everything is updated except the panel width
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure UpdateStatusBarPanel(const StatusPanel: TStatusPanel);
|
||||||
|
var
|
||||||
|
BevelType: integer;
|
||||||
|
Text: string;
|
||||||
|
begin
|
||||||
|
Text := StatusPanel.Text;
|
||||||
|
case StatusPanel.Alignment of
|
||||||
|
taCenter: Text := #9 + Text;
|
||||||
|
taRightJustify: Text := #9#9 + Text;
|
||||||
|
end;
|
||||||
|
case StatusPanel.Bevel of
|
||||||
|
pbNone: BevelType := Windows.SBT_NOBORDERS;
|
||||||
|
pbLowered: BevelType := 0;
|
||||||
|
pbRaised: BevelType := Windows.SBT_POPOUT;
|
||||||
|
end;
|
||||||
|
Windows.SendMessage(StatusPanel.StatusBar.Handle, SB_SETTEXT, StatusPanel.Index or BevelType, LPARAM(PChar(Text)));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure UpdateStatusBarPanelWidths(const StatusBar: TStatusBar);
|
||||||
|
var
|
||||||
|
Rights: PInteger;
|
||||||
|
PanelIndex: integer;
|
||||||
|
CurrentRight: integer;
|
||||||
|
begin
|
||||||
|
if StatusBar.Panels.Count=0 then begin
|
||||||
|
Windows.SendMessage(StatusBar.Handle, SB_SETPARTS, 0, 0);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
Getmem(Rights, StatusBar.Panels.Count * sizeof(integer));
|
||||||
|
try
|
||||||
|
CurrentRight := 0;
|
||||||
|
for PanelIndex := 0 to StatusBar.Panels.Count-2 do begin
|
||||||
|
CurrentRight := CurrentRight + StatusBar.Panels[PanelIndex].Width;
|
||||||
|
Rights[PanelIndex] := CurrentRight;
|
||||||
|
end;
|
||||||
|
Rights[StatusBar.Panels.Count-1] := -1; //Last extends to end;
|
||||||
|
Windows.SendMessage(StatusBar.Handle, SB_SETPARTS, StatusBar.Panels.Count, LPARAM(Rights));
|
||||||
|
finally
|
||||||
|
Freemem(Rights);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TWin32WSStatusBar }
|
{ TWin32WSStatusBar }
|
||||||
|
|
||||||
function TWin32WSStatusBar.CreateHandle(const AWinControl: TWinControl;
|
function TWin32WSStatusBar.CreateHandle(const AWinControl: TWinControl;
|
||||||
@ -209,11 +264,39 @@ begin
|
|||||||
end;
|
end;
|
||||||
// create window
|
// create window
|
||||||
FinishCreateWindow(AWinControl, Params, false);
|
FinishCreateWindow(AWinControl, Params, false);
|
||||||
TWin32WidgetSet(InterfaceObject).StatusBarUpdate(AWinControl);
|
// need to set handle for Update method
|
||||||
|
AWinControl.Handle := Params.Window;
|
||||||
|
Update(TStatusBar(AWinControl));
|
||||||
Result := Params.Window;
|
Result := Params.Window;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TWin32WSStatusBar.PanelUpdate(const AStatusBar: TStatusBar; PanelIndex: integer);
|
||||||
|
begin
|
||||||
|
UpdateStatusBarPanelWidths(AStatusBar);
|
||||||
|
UpdateStatusBarPanel(AStatusBar.Panels[PanelIndex]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWin32WSStatusBar.SetPanelText(const AStatusBar: TStatusBar; PanelIndex: integer);
|
||||||
|
begin
|
||||||
|
if AStatusBar.SimplePanel then
|
||||||
|
Windows.SendMessage(AStatusBar.Handle, SB_SETTEXT, 255, LPARAM(PChar(AStatusBar.SimpleText)))
|
||||||
|
else
|
||||||
|
UpdateStatusBarPanel(AStatusBar.Panels[PanelIndex]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWin32WSStatusBar.Update(const AStatusBar: TStatusBar);
|
||||||
|
var
|
||||||
|
PanelIndex: integer;
|
||||||
|
begin
|
||||||
|
Windows.SendMessage(AStatusBar.Handle, SB_SIMPLE, WPARAM(AStatusBar.SimplePanel), 0);
|
||||||
|
if AStatusBar.SimplePanel then
|
||||||
|
SetPanelText(AStatusBar, 0)
|
||||||
|
else begin
|
||||||
|
UpdateStatusBarPanelWidths(AStatusBar);
|
||||||
|
for PanelIndex := 0 to AStatusBar.Panels.Count-1 do
|
||||||
|
UpdateStatusBarPanel(AStatusBar.Panels[PanelIndex]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TWin32WSCustomListView }
|
{ TWin32WSCustomListView }
|
||||||
|
|
||||||
|
@ -48,12 +48,18 @@ uses
|
|||||||
ComCtrls, Controls,
|
ComCtrls, Controls,
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
WSLCLClasses, WSControls, WSExtCtrls, WSStdCtrls,
|
WSLCLClasses, WSControls, WSExtCtrls, WSStdCtrls,
|
||||||
WSToolwin;
|
WSToolwin,
|
||||||
|
{ TODO: to be removed when statusbar widget methods cleaned }
|
||||||
|
InterfaceBase;
|
||||||
|
|
||||||
type
|
type
|
||||||
{ TWSStatusBar }
|
{ TWSStatusBar }
|
||||||
|
|
||||||
|
TWSStatusBarClass = class of TWSStatusBar;
|
||||||
TWSStatusBar = class(TWSWinControl)
|
TWSStatusBar = class(TWSWinControl)
|
||||||
|
class procedure PanelUpdate(const AStatusBar: TStatusBar; PanelIndex: integer); virtual;
|
||||||
|
class procedure SetPanelText(const AStatusBar: TStatusBar; PanelIndex: integer); virtual;
|
||||||
|
class procedure Update(const AStatusBar: TStatusBar); virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TWSTabSheet }
|
{ TWSTabSheet }
|
||||||
@ -157,6 +163,27 @@ type
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
|
||||||
|
{ TWSStatusBar }
|
||||||
|
|
||||||
|
procedure TWSStatusBar.PanelUpdate(const AStatusBar: TStatusBar; PanelIndex: integer);
|
||||||
|
begin
|
||||||
|
{ TODO: remove when gtk interface adapted to use widgetset method }
|
||||||
|
InterfaceObject.StatusBarPanelUpdate(AStatusBar, PanelIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWSStatusBar.SetPanelText(const AStatusBar: TStatusBar; PanelIndex: integer);
|
||||||
|
begin
|
||||||
|
{ TODO: remove when gtk interface adapted to use widgetset method }
|
||||||
|
InterfaceObject.StatusBarSetText(AStatusBar, PanelIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWSStatusBar.Update(const AStatusBar: TStatusBar);
|
||||||
|
begin
|
||||||
|
{ TODO: remove when gtk interface adapted to use widgetset method }
|
||||||
|
InterfaceObject.StatusBarUpdate(AStatusBar);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TWSCustomListView }
|
{ TWSCustomListView }
|
||||||
|
|
||||||
procedure TWSCustomListView.ColumnDelete(const ALV: TCustomListView; const AIndex: Integer);
|
procedure TWSCustomListView.ColumnDelete(const ALV: TCustomListView; const AIndex: Integer);
|
||||||
|
Loading…
Reference in New Issue
Block a user