The orginal code comes from JVCL , which wont complile under FPC , the actual unit is jvlistbox.pas
I have since and made a few change , basically
not copying ItemState to a variable but directly doing the checking agaist it
procedure TJvCustomListBox.CNDrawItem(var Msg: TLMDrawListItem);
begin
with Msg.DrawListItemStruct^ do
begin
Canvas.Handle := hDC;
Canvas.Font := Font;
Canvas.Brush := Brush;
if Integer(itemID) >= 0 then
begin
if odSelected in ItemState then
begin
Canvas.Brush.Color := FSelectedColor;
Canvas.Font.Color := FSelectedTextColor;
end;
if (([odDisabled, odGrayed] * ItemState) []) or not Enabled then
Canvas.Font.Color := FDisabledTextColor;
end;
if Integer(itemID) >= 0 then
DrawItem(ItemID, Area, ItemState)
else
begin
if Background.DoDraw then
begin
Perform(WM_ERASEBKGND, Canvas.Handle, 0);
if odFocused in ItemState then
DrawFocusRect(hDC, Area);
end
else
begin
Canvas.FillRect(Area);
if odFocused in ItemState then
DrawFocusRect(hDC, Area);
end;
end;
Canvas.Handle := 0;
end;
end;
On DrawItem i get this error
Error: Incompatible type for arg no. 3: Got "TBaseOwnerDrawState", expected "TOwnerDrawState"
I'm Using FPC 2.2.4 & Lazarus X64 9.28.2 ( this is the only one i can debug with in X64).
Kind Regards
Earlier message 22 lines
----- Original Message -----
From: "Jonas Maebe"
To: "Justin Smyth" ; "FPC-Pascal users
discussions"
Sent: Sunday, February 21, 2010 8:11 PM
Subject: Re: [fpc-pascal] Sets & FPC
On 21 Feb 2010, at 07:26, Justin Smyth wrote:
> I've done the bit Micheal suggest now which i highlight TWMDrawItem it
> says its comes from TLMDrawItems.
>
> i still get Error: Incompatible types: got "TOwnerDrawStateType" expected
> "<enumeration type>"
Can you post the full program somewhere? (or the full sources to another,
smaller, program that demonstrates the same problem)
Jonas