Hallo Frank,
Danke für deine Hilfe.
Hi Klaus,
ich kann deinen Code auf Grund fehlender
Unit' s nicht kompilieren und testen.
Ich habe deshalb in einem geänderten Code, statt der von TStringGrid abgeleiteten Komponente TFilterGrid, TStringGrid verwendet. Und es hat eigenartigerweise plötzlich funktioniert. Also muß irgendwas bei TFilterGrid nicht stimmen. Aber was? Warum verhält sich TFilterGrid zur Entwurfszeit anders als TStringGrid?
TFilterGrid ist folgendermaßen deklariert:
Delphi-Quellcode:
TFilterGrid = class(TStringGrid)
private
.....
procedure Change; dynamic;
public
constructor Create(aOwner: TComponent); override;
destructor Destroy; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure DrawCell(ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); override;
function SelectCell(ACol, ARow: LongInt): boolean; override;
function GetEditText(ACol, ARow: Longint): string; override;
procedure SetEditText(ACol, ARow: Longint; const Value: string); override;
......
constructor TFilterGrid.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
..... // es werden nur Variable initiert.
end;
Ich würde die Komponenten im Constructor nur erzeugen und eine Methode PositionControls einführen.
Diese könnte man in der überschriebenen Methode CreateWnd nach dem Inherited aufrufen.
Dann sollte das Fensterhandle verfügbar sein.
Ich habe es dann so gemacht und es funktioniert.
Gruß Klaus.