Ferra,
интересный факт:
1) в GLScene много редакторов, но никто не наследуется от TClassProperty, а все либо от TForm, либо от TFame.
2) после установки GLSсene все файлы с формами (.dfm) становятся ненужными.,
3) как бы я не потылся, у меня действительно создаётся новое свойство в инспекторе объектов (ура), но у него в поле-значении написан класс и никакого троеточия (тобиш никакого редактора при нажатии не открывается). Скриншот:
Что посоветуете?
Цитата:
Сообщение от Ferra
Вот тебе кусок кода с моего старого проекта, разбирайся.
Код:
{$I versions.inc}
{$D-,L-,Y-}
unit uEditor;
interface
uses
Windows, Classes, Forms, Controls, ExptIntf, TypInfo, ToolIntf,
EditIntf, VirtIntf, SysUtils, Dialogs, ExtCtrls,
{$IFDEF DELPHI5_OR_ABOVE}
ToolsApi,
{$ENDIF}
{$IFNDEF DELPHI6_OR_ABOVE}
DsgnIntf,
{$ELSE}
DesignIntf,
DesignEditors,
VCLEditors,
{$ENDIF}
StdCtrls,
Graphics;
type
TAboutProperty = class(TClassProperty)
public
procedure Edit; override;
function GetAttributes: TPropertyAttributes; override;
function GetValue: string; override;
{$IFDEF VER130}
procedure PropDrawName(ACanvas: TCanvas; const ARect: TRect;
ASelected: Boolean); override;
{$ENDIF}
end;
implementation
uses uFormAbout;
function TAboutProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog, paReadOnly {$IFDEF DELPHI5_OR_ABOVE}, paFullWidthName {$ENDIF}]
end ;
procedure TAboutProperty.Edit;
var
Form : TFormAbout;
begin
try
Form := TFormAbout.Create(nil);
Form.ShowModal;
finally
Form.Free;
end;
end;
function TAboutProperty.GetValue: string;
begin
Result := '(About)';
end;
{$IFDEF VER130}
procedure TCHAboutProperty.PropDrawName(ACanvas: TCanvas; const ARect: TRect;
ASelected: Boolean);
begin
ACanvas.Font.Style := [fsBold];
inherited PropDrawName(ACanvas, ARect, ASelected);
end;
{$ENDIF}
end.
|