PDA

View Full Version : Control of class '' cant have control of a class '' as child



CynicRus
07-13-2012, 08:25 AM
Hi all. I have some trouble with delphi code in lazarus. And don't have experience in lazarus for fix that. Maybe yor can help me with this.
I have class, 1 class field its another class:

TGsvObjectInspectorInplaceEditor = class(MaskEdit.TCustomMaskEdit)
public
constructor Create(AOwner: TComponent); override;

private
// собственные переменные
FInspector: TGsvCustomObjectInspectorGrid;
FPropertyInfo: PGsvObjectInspectorPropertyInfo; // дескриптор редактируемого свойства
FListBox: TGsvObjectInspectorListBox; // окно выпадающего списка строк
FButtonWidth: Integer;
FPressed: Boolean;
FWasPressed: Boolean;
FLockModify: Boolean;
FDropDownCount: Integer;

procedure SetNewEditText(const Value: String);
procedure ShowEditor(ALeft, ATop, ARight, ABottom: Integer;
Info: PGsvObjectInspectorPropertyInfo;
const Value: String);
procedure HideEditor;
procedure ShowEditHint;
procedure ShowValueHint;
procedure DropDown;
procedure CloseUp(Accept: Boolean);
procedure ListItemChanged;
procedure SetListItem(Index: Integer);
procedure ShowDialog;
procedure ValidateStringValue(const Value: String);


// события Windows
procedure CMCancelMode(var Message: TLMessage); message LM_CANCELMODE;
procedure WMPaint(var Message: TLMPaint); message LM_PAINT;
procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
procedure WMKillFocus(var Message: TMessage); message WM_KILLFOCUS;

protected
// переопределяемые методы базового класса
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure PaintWindow(DC: HDC); override;
procedure DoExit; override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint):
Boolean; override;
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint):
Boolean; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure Change; override;
procedure ValidateError;

public
procedure ValidateEdit; override;
end;


Another class:

TGsvObjectInspectorListBox = class(TCustomListBox)
public
constructor Create(AOwner: TComponent); override;

private
FEditor: TGsvObjectInspectorInplaceEditor;

procedure HideList(Accept: Boolean);

procedure WMRButtonDown(var Message: TWMRButtonDown); message WM_RBUTTONDOWN;
procedure WMRButtonUp(var Message: TWMRButtonDown); message WM_RBUTTONUP;
procedure WMMButtonDown(var Message: TWMMButtonDown); message WM_MBUTTONDOWN;
procedure WMMButtonUp(var Message: TWMMButtonDown); message WM_MBUTTONUP;

protected
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
end;

in TGsvObjectInspectorListBox one method, defined as a class TGsvObjectInspectorInplaceEditor In delphi that construction work fine, but in lazarus i have error:" Control of class 'TGsvObjectInspectorInplaceEditor ' cant have control of a class 'TGsvObjectInspectorListBox ' as сhild". How i can fix that? Thanks for you advice.