Mam komponent bazujący na TCustomListView:
unit DRListView;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls, Messages, UxTheme, LCLType, Windows;
type
TDRListView = class(TCustomListView)
private
FColumn: TListColumn;
FItemHeight: Integer;
procedure DROnDrawItem(Sender: TCustomListView; AItem: TListItem; ARect: TRect; AState: TOwnerDrawState);
protected
FPreviewLight: Integer;
procedure WMMeasureItem(var AMsg: TWMMeasureItem); message CN_MEASUREITEM;
procedure CreateWnd; override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseLeave; override;
procedure Resize; override;
public
constructor Create(AOwner: TComponent); override;
published
property Action;
property AllocBy;
property Align;
property Anchors;
property BorderStyle;
property BorderWidth;
property Color;
property Constraints;
property Enabled;
property Font;
property FlatScrollBars;
property ItemHeight: Integer read FItemHeight write FItemHeight default 50;
property Items;
property MultiSelect;
property ParentBiDiMode;
property ParentColor default False;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property SortType;
property TabOrder;
property TabStop default True;
property Visible;
property OnChange;
property OnClick;
property OnDblClick;
property OnDeletion;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnResize;
property OnSelectItem;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Common Controls',[TDRListView]);
end;
constructor TDRListView.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ViewStyle := vsReport;
OwnerDraw := True;
FItemHeight := 50;
ShowColumnHeaders := False;
ReadOnly := True;
FColumn := Columns.Add;
FColumn.Width := Width;
FPreviewLight := -1;
OnDrawItem := @DROnDrawItem; // Tutaj występuje błąd
end;
{deklaracja pozostałych procedur}
initialization
UxTheme.InitThemeLibrary;
end.
Kiedy próbuję przypisać procedurę DROnDrawItem do zdarzenia OnDrawItem kompilator pokazuje błąd:
Error: Incompatible types: got "<procedure variable type of procedure(TCustomListView;TListItem;TRect;TOwnerDrawState) of object;Register>"
expected "COMCTRLS.<procedure variable type of procedure(TCustomListView;TListItem;TRect;TOwnerDrawState) of object;Register>"
O co tu chodzi?
On...
w nazwie powinno wystarczyć.