Hi shmia,
danke ersteinmal für die schnelle Antwort.
Die dsgnInft gibt es in Delphi 7 nicht mehr dafür allerdings eine DesignIntf. hehe
Ich will ja gar nicht einen neuen Editor schreiben, warum auch das
Rad neu
erfinden. Ich möchte ja lediglich das genau dieselbe Funktion aufpoppt die
ich auch im Objectinspector mit dem [...] Knopp auslösen kann.
Ich hab mir das ungefähr so vorgestellt:
Delphi-Quellcode:
type
T_Test = Class(TGraphicControl)
private
FPicture: TPicture;
procedure SetPicture(const Value: TPicture);
published
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure WndProc(var Message: TMessage); override;
property Picture: TPicture read FPicture write SetPicture;
public
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Beispiele', [T_Test]);
end;
{ T_Test }
constructor T_Test.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csReplicatable];
FPicture := TPicture.Create;
Height := 105;
Width := 105;
end;
destructor T_Test.Destroy;
begin
FPicture.Free;
inherited Destroy;
end;
procedure T_Test.SetPicture(const Value: TPicture);
begin
FPicture.Assign(Value);
end;
procedure T_Test.WndProc(var Message: TMessage);
begin
if (csDesigning in ComponentState) then
Begin
if Message.Msg = WM_LBUTTONDBLCLK then
Begin
// damit wird der Doppelklick ins Nirwana umgeleitet
// und richtet keinen Schaden an :)
Message.Msg := WM_LBUTTONUP;
// hier sollte jetzt sowas wie der Aufruf: TPictureEditor.Execute
// hin so funktioniert es natürlich nicht, aber so ungefähr hab ich
// mir das vorgestellt.
end;
// damit die Komponente denke alles wäre normal verlaufen
inherited WndProc(Message);
end
else
inherited WndProc(Message);
end;
Aber irgentwie bin ich zu Blöde dafür
Also: Hiiiiilfe
Gruss,
Sar