Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Komischer Effekt mit eigener Komponente (https://www.delphipraxis.net/195007-komischer-effekt-mit-eigener-komponente.html)

sko1 26. Jan 2018 06:45


Komischer Effekt mit eigener Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

bisher hatte ich (älteres Delphi) nie Probleme mit eigenen Komponenten, jetzt passiert was ganz komisches:
Ich kann die Komponente im Designer auf eine Form platzieren, danach werden die Anfasser wie sonst auch angezeigt, nur verschieben mit der Maus geht nicht...

Klicke ich danach auf eine andere Komponente auf der Form (z.B. ein Button) bekommt der die Anfasser.
Klicke ich nun wieder auf die Komponente bekommt die keine Anfasser mehr, ist also irgendwie verschwunden, beim Start der Anwendung ist sie auch nicht mehr vorhanden!

Wo kann ich ansetzen?

Beim Erzeugen der Komponente bekam ich folgende Meldung (siehe Anhang), vielleicht ist da ja irgendwie die Ursache?

Ciao
Stefan

Jasocul 26. Jan 2018 07:04

AW: Komischer Effekt mit eigener Komponente
 
Klingt nach einem Problem im Create deiner Komponente.
Da ich deinen Source nicht kenne, stochere ich im Nebel, aber ich vermute, dass du den ComponentState prüfen musst:

Delphi-Quellcode:
if not (csDesigning in ComponentState) then
Einige Dinge dürfen nicht im Design-Modus gemacht werden. Ich habe bei mir auch eine derartige Komponente.

sko1 26. Jan 2018 07:08

AW: Komischer Effekt mit eigener Komponente
 
Ich habe oben mal eine Erweiterung gemacht, es soll eine WPTools-Komponente in meine Komponente und da hat RadStudio mir die oben gezeigte Meldung ausgegeben...

Ciao
Stefan

Jasocul 26. Jan 2018 07:21

AW: Komischer Effekt mit eigener Komponente
 
In dem Fall würde ich die eigene Komponente einmal deinstallieren, dann neu kompilieren und anschließen wieder installieren.

jziersch 26. Jan 2018 07:39

AW: Komischer Effekt mit eigener Komponente
 
Ich denke da fehlt irgendwo ein Aufruf von "inherited".

Da es sich offenbar um eine Komponente handelt welche intern WPTools objekte einsetzt, hier ein Beispiel wie in einem TPanel mehrere Komponenten zusammen gefasst werden können.

Code:
unit WPToolsEmbeddedControl;
{ Wordprozessor für Delphi
  Komponente die TWPRichText und die Lineale in einem Panel erzeugt
  WPTools: https://www.wpcubed.com
}

interface

uses System.Classes, VCL.Controls, VCL.ExtCtrls, WPCtrRich, WPRuler;

type
  TDelphiWord = class(TPanel)
  private
  fWPRichText : TWPRichText;
  fWPRuler   : TWPRuler;
  fWPVertRuler : TWPVertRuler;
  protected
    procedure Resize; override;
  public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
    function Load(Filename : String) : Boolean;
    property WPRichText : TWPRichText read fWPRichText;
  end;

  procedure Register;

implementation

{ TDelphiWord }

constructor TDelphiWord.Create(AOwner: TComponent);
begin
  inherited;
  fWPRichText := TWPRichText.Create(Self);
  fWPRuler   := TWPRuler.Create(Self);
  fWPVertRuler := TWPVertRuler.Create(Self);
  fWPRichText.WPRuler := fWPRuler;
  fWPRichText.VRuler := fWPVertRuler;
  fWPRichText.Align := alClient;
  fWPVertRuler.Align := alLeft;
  fWPRuler.Align := alTop;
  fWPRuler.Options := fWPRuler.Options - [wpNoVertRulerAttached];
  fWPRichText.Parent := Self;
  fWPRuler.Parent := Self;
  fWPVertRuler.Parent := Self;
end;

destructor TDelphiWord.Destroy;
begin
  fWPRichText.Parent := nil;
  fWPRuler.Parent := nil;
  fWPVertRuler.Parent := nil;
  fWPRichText.Free;
  fWPRuler.Free;
  fWPVertRuler.Free;
  inherited;
end;

function TDelphiWord.Load(Filename: String): Boolean;
begin
   Result := fWPRichText.LoadFromFile(Filename, true, 'AUTO');
end;

procedure TDelphiWord.Resize;
begin
  inherited;
  fWPRuler.VertRulerWidth := fWPVertRuler.Width;
end;

procedure Register;
begin
  RegisterComponents( 'Delphi Word', [TDelphiWord]);
end;

end.

sko1 26. Jan 2018 08:20

AW: Komischer Effekt mit eigener Komponente
 
Danke für den Code, wird gleich getestet!

Ciao
Stefan

Hobbycoder 26. Jan 2018 12:22

AW: Komischer Effekt mit eigener Komponente
 
Nach dem Deinstallieren und denn erneutem Kompilieren bzw. Installieren würde ich auf den Fall noch Bereinigen.
Bei einer früheren Komponente habe ich mir mal einen Wolf nach einem Fehler gesucht, der letztlich nur durch ein kurzes Bereinigen entsorgt werden konnte.

sko1 26. Jan 2018 14:04

AW: Komischer Effekt mit eigener Komponente
 
Der Code von jziersch funktioniert, alles bestens!

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz