Einzelnen Beitrag anzeigen

SarDGer

Registriert seit: 19. Mai 2005
55 Beiträge
 
Delphi 7 Professional
 
#3

Re: Problem mit "TPicture" Property bei Komponeten

  Alt 21. Dez 2005, 17:06
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
  Mit Zitat antworten Zitat