kolmck/Addons/mckEcmListEdit.pas

234 lines
7.2 KiB
ObjectPascal

unit mckEcmListEdit;
interface
{$I KOLDEF.INC}
uses
Windows, KOL, Classes, Messages, Forms, SysUtils, mirror,
mckCtrls, Graphics, KOLEcmListEdit,
//////////////////////////////////////////////////
{$IFDEF _D6orHigher} //
DesignIntf, DesignEditors, DesignConst, //
Variants, //
{$ELSE} //
//////////////////////////////////////////////////
DsgnIntf,
//////////////////////////////////////////////////////////
{$ENDIF} //
mckLVColumnsEditor;
type
// TOnEditText = procedure (Sender: PControl; ACol, ARow: Integer; var Value: String) of object;
TKOLEcmListEdit = class(TKOLListView)
private
fDrawForbidden: TOnDrawItem;
fListData: boolean;
fOnGetText: TOnEditText;
fOnPutText: TOnEditText;
fOnEndEdit: TOnEndEdit;
fOnColAdjust: TOnColAdjust;
fOnEditChar: TOnEditChar;
fOnCreateEdit: TOnCreateEdit;
fLimStyle: TKOLListViewStyle;
fOnDrawCell: TOnDrawCell;
procedure SetOnGetText(const Value: TOnEditText);
procedure SetOnPutText(const Value: TOnEditText);
procedure SetOnEndEdit(const Value: TOnEndEdit);
procedure SetOnColAdjust(const Value: TOnColAdjust);
procedure SetOnEditChar(const Value: TOnEditChar);
procedure SetOnCreateEdit(const Value: TOnCreateEdit);
procedure SetLimStyle(const Value: TKOLListViewStyle);
procedure SetOnDrawCell(const Value: TOnDrawCell);
protected
function AdditionalUnits: string; override;
procedure SetupFirst( SL: TStringList; const AName, AParent, Prefix: String ); override;
procedure SetupLast( SL: TStringList; const AName, AParent, Prefix: String ); override;
procedure AssignEvents( SL: TStringList; const AName: String ); override;
function SetupParams( const AName, AParent: String ): String; override;
function GetCaption: string;
function GetStyle: TKOLListViewStyle;
function GetOptions: TKOLListViewOptions;
procedure SetOptions(v: TKOLListViewOptions);
public
constructor Create(Owner: TComponent); override;
property IsListData: boolean read fListData write fListData;
procedure UpdateColumns; virtual;
published
property Caption: string Read GetCaption;
property Style: TKOLListViewStyle Read fLimStyle write SetLimStyle;
property Options: TKOLListViewOptions read GetOptions write SetOptions;
property OnGetEditText: TOnEditText read fOnGetText write SetOnGetText;
property OnPutEditText: TOnEditText read fOnPutText write SetOnPutText;
property OnStopEdit: TOnEndEdit read fOnEndEdit write SetOnEndEdit;
property OnColAdjust: TOnColAdjust read fOnColAdjust write SetOnColAdjust;
property OnEditChar: TOnEditChar read fOnEditChar write SetOnEditChar;
property OnCreateEdit: TOnCreateEdit read fOnCreateEdit write SetOnCreateEdit;
property OnDrawCell: TOnDrawCell read FOnDrawCell write SetOnDrawCell;
// Hide in Object Inspector property OnDrawItem (made read only)
property OnDrawItem: TOnDrawItem read fDrawForbidden;
end;
procedure Register;
implementation
//{$R EcmListEdit.dcr}
constructor TKOLEcmListEdit.Create;
begin
inherited;
inherited Style := lvsDetail;
inherited Options := [{lvoRowSelect,}lvoHideSel,lvoGridLines,lvoOwnerDrawFixed];
// Font.FontCharset := 204;
end;
function TKOLEcmListEdit.AdditionalUnits;
begin
Result := ', KOLEcmListEdit';
end;
procedure TKOLEcmListEdit.SetupFirst;
begin
// if @fOnGetText <> nil then
// SL.Add( ' PEcmListEdit(' + AName + '.CustomObj).OnGetEditText := Result.' +
inherited;
end;
procedure TKOLEcmListEdit.SetupLast;
begin
inherited AssignEvents(SL, AName);
if @fOnGetText <> nil then
SL.Add( ' PEcmListEdit(' + AName + '.CustomObj).OnGetEditText := Result.' +
ParentForm.MethodName( @OnGetEditText ) + ';' );
if @fOnPutText <> nil then
SL.Add( ' PEcmListEdit(' + AName + '.CustomObj).OnPutEditText := Result.' +
ParentForm.MethodName( @OnPutEditText ) + ';' );
if @fOnEndEdit <> nil then
SL.Add( ' PEcmListEdit(' + AName + '.CustomObj).OnStopEdit := Result.' +
ParentForm.MethodName( @OnStopEdit ) + ';' );
if @fOnColAdjust <> nil then
SL.Add( ' PEcmListEdit(' + AName + '.CustomObj).OnColAdjust := Result.' +
ParentForm.MethodName( @OnColAdjust ) + ';' );
if @fOnEditChar <> nil then
SL.Add( ' PEcmListEdit(' + AName + '.CustomObj).OnEditChar := Result.' +
ParentForm.MethodName( @OnEditChar ) + ';' );
if @fOnCreateEdit <> nil then
SL.Add( ' PEcmListEdit(' + AName + '.CustomObj).OnCreateEdit := Result.' +
ParentForm.MethodName( @OnCreateEdit ) + ';' );
if @fOnDrawCell <> nil then
SL.Add( ' PEcmListEdit(' + AName + '.CustomObj).OnDrawCell := Result.' +
ParentForm.MethodName( @OnDrawCell ) + ';' );
end;
procedure TKOLEcmListEdit.AssignEvents;
begin
inherited;
end;
function TKOLEcmListEdit.GetCaption;
begin
Result := inherited Caption;
end;
function TKOLEcmListEdit.GetStyle;
begin
// Result := lvsDetail;
Result := fLimStyle;
end;
function TKOLEcmListEdit.GetOptions;
begin
Result := inherited Options;
end;
procedure TKOLEcmListEdit.SetOptions;
begin
inherited Options := v + [{lvoRowSelect,}lvoHideSel,lvoOwnerDrawFixed];
end;
procedure Register;
begin
RegisterComponents('KOLAddons', [TKOLEcmListEdit]);
RegisterComponentEditor( TKOLEcmListEdit, TKOLLVColumnsEditor );
end;
procedure TKOLEcmListEdit.UpdateColumns;
begin
Change;
end;
procedure TKOLEcmListEdit.SetOnGetText(const Value: TOnEditText);
begin
if @fOnGetText <> @Value then begin
fOnGetText := Value;
Change();
end;
end;
procedure TKOLEcmListEdit.SetOnPutText(const Value: TOnEditText);
begin
if @fOnPutText <> @Value then begin
fOnPutText := Value;
Change();
end;
end;
procedure TKOLEcmListEdit.SetOnEndEdit(const Value: TOnEndEdit);
begin
if @fOnEndEdit <> @Value then begin
fOnEndEdit := Value;
Change();
end;
end;
procedure TKOLEcmListEdit.SetOnColAdjust(const Value: TOnColAdjust);
begin
if @fOnColAdjust <> @Value then begin
fOnColAdjust := Value;
Change;
end;
end;
procedure TKOLEcmListEdit.SetOnEditChar(const Value: TOnEditChar);
begin
if @fOnEditChar <> @Value then begin
fOnEditChar := Value;
Change();
end;
end;
procedure TKOLEcmListEdit.SetOnDrawCell(const Value: TOnDrawCell);
begin
if @FOnDrawCell <> @Value then begin
FOnDrawCell:= Value;
Change();
end;
end;
function TKOLEcmListEdit.SetupParams(const AName, AParent: String): String;
begin
Result := inherited SetupParams(AName,AParent)
end;
procedure TKOLEcmListEdit.SetOnCreateEdit(const Value: TOnCreateEdit);
begin
if @fOnCreateEdit <> @Value then begin
fOnCreateEdit := Value;
Change();
end;
end;
procedure TKOLEcmListEdit.SetLimStyle(const Value: TKOLListViewStyle);
begin
if (Value <> fLimStyle) and ((Value = lvsDetail) or (Value = lvsDetailNoHeader)) then begin
fLimStyle := Value;
inherited Style := fLimStyle;
end;
end;
end.