Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit eigenen Komponenten (https://www.delphipraxis.net/137396-problem-mit-eigenen-komponenten.html)

Punisher 20. Jul 2009 09:19


Problem mit eigenen Komponenten
 
Hallo,

ich versuche zur Zeit vorhandene Delphi-Komponenten umzuschreiben und stosse dabei immer wieder auf den selben Fehler.


hier ein Beispiel:

Delphi-Quellcode:
unit LabelKomponente;

interface

uses
  SysUtils, Classes, Controls, StdCtrls;

type
  TLabel1 = class(TLabel)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  constructor Create(AOwner: TComponent); override;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation
uses
  graphics;

constructor Tlabel1.Create(AOwner: TComponent);
begin
inherited create(aowner);
font.Color := clgreen;
end;

procedure Register;
begin
  RegisterComponents('Samples', [TLabel1]);
end;

end.


Diese Komponente wird in einem Package integriert und das Package installiert.
Wenn ich die Komponente auf einem Form platziere wird sie grün angezeigt(wie gewünscht).

Ändere ich dann den Code im Konstruktor auf "font.Color := clred;" so sollte sich
das so auswirken, dass nach dem nächsten Kompilieren des Programmes, die Komponente rot dargestellt wird.
Das passiert nicht.

Weiters sollte ein Neukompilieren des Packages sich so auswirken, dass die Komponente bereits
zur Designzeit rot auf dem Form dargestellt wird. Auch das passiert nicht. Erst wenn ich die Komponente neu auf dem Form
platziere wird sie rot dargestellt.

In Delphi-2006 hat das immer problemlos funktioniert.

Ich vermute ein Problem mit Such- oder Bibliothekspfaden.


Kann mir da irgendjemand helfen?

himitsu 20. Jul 2009 09:34

Re: Problem mit eigenen Komponenten
 
Zitat:

Zitat von Punisher
Ändere ich dann den Code im Konstruktor auf "font.Color := clred;" so sollte sich
das so auswirken, dass nach dem nächsten Kompilieren des Programmes, die Komponente rot dargestellt wird.
Das passiert nicht.

Nicht nur das Programm muß neu Kompiliert werden, sondern auch und vorallem das Package,
denn von alleine kommt der geänderte Code da nicht rein und Packages werden nicht automatisch neu kompiliert.

Zitat:

Zitat von Punisher
Weiters sollte ein Neukompilieren des Packages sich so auswirken, dass die Komponente bereits
zur Designzeit rot auf dem Form dargestellt wird. Auch das passiert nicht. Erst wenn ich die Komponente neu auf dem Form
platziere wird sie rot dargestellt.

Das liegt wohl daran, daß in der .DFM die Farbe gespeichert wird, wenn sie vom Default abwicht.
Standarmäßig ist Default 0, also Schwarz.

wenn du es in der Komponente (im Package änderst), dann existiert also noch die vorrangige Angabe in der DFM (in den Formulardaten)

gib also in deiner Defnition das Default mit an, dann wird
A) die DFM kleiner (da diese dann nimmer mit drinseht) und
B) er nimmt vermutlich dann den Wert, welchen du dort setzt (da er ja nicht mehr vom DFM-Loader überschrieben wird)

Delphi-Quellcode:
TLabel1 = class(TLabel)
...
published
  { Published-Deklarationen }
  property Color: TColor default clGreen;
end;
Achtung: default setzt den Property nicht auf den Wert, sondern besagt nur, daß der Property-Wert nicht gespeichert werden soll, wenn er dem Default-Wert entspricht.

Punisher 20. Jul 2009 10:54

Re: Problem mit eigenen Komponenten
 
Danke für die schnelle Hilfe

Default hat mein Problem gelöst

Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 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