Einzelnen Beitrag anzeigen

josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
95 Beiträge
 
Delphi 11 Alexandria
 
#1

Komponente ändern von Eigenschaftswerten und (re-)paint

  Alt 5. Sep 2017, 08:30
Delphi-Quellcode:
unit Elevator;

interface

uses
  System.SysUtils, System.Classes, Vcl.Controls, graphics, dialogs, forms;

type

  TElevator = class(TGraphicControl)
  private
    { Private-Deklarationen }

    FBreite: Integer;
    FHoehe: Integer;

  protected
    { Protected-Deklarationen }

  procedure Paint; override;

    public
    { Public-Deklarationen }

    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;



  published
    { Published-Deklarationen }
   
    property onclick;
    property ondblclick;
    property showhint;

    Property Breite : integer read FBreite write FBreite default 20;
    Property Hoehe : integer read FHoehe write FHoehe default 300;


  end;

procedure Register;

implementation

//uses uKomp_Zustaende;

procedure Register;
begin
  RegisterComponents('SPS', [TElevator]);
end;

constructor TElevator.Create(AOwner: TComponent);
begin
  inherited;
end;

destructor TElevator.Destroy;
begin
  inherited;

end;

procedure TElevator.Paint;
begin
  inherited; // <--- Wichtig!!!

  with canvas do
    begin
    //Silo-Körper
    pen.Color := clblack;
    Brush.Color := clgray;
    Brush.Style := bsSolid;
    rectangle(0,0,FBreite,FHoehe);
    end;
 
end;

Wenn beim Einsatz der Komponente also zur Entwurfszeit der Anwendung im OI die Werte für Breite und Höhe geändert werden,
wird das Objekt nicht neu gezeichnet..Wie kann ich das programmieren?, also wenn Value für Breite geändert, dann paint.


Die Default-Werte für Breite und Höhe übernimmt er nicht bei Nutzung der Komponente auf einer Form, da steht dann bei beidem 0
im OI.

Wie kann ich die Grundeinstellung (default) für (die geerbten Eigenschaften) width und height der Komponente ändern?
  Mit Zitat antworten Zitat