![]() |
Komponente ändern von Eigenschaftswerten und (re-)paint
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? |
AW: Komponente ändern von Eigenschaftswerten und (re-)paint
Delphi-Quellcode:
property Breite : integer read SetBreite write FBreite default 20;
property Hoehe : integer read SetHoehe write FHoehe default 300; ... procedure TElevator.SetBreite(const Value: Integer); begin if FBreite <> Value then begin FBreite := Value; Repaint; end; end; procedure TElevator.SetHoehe(const Value: Integer); begin if FHoehe <> Value then begin FHoehe := Value; Repaint; end; end; |
AW: Komponente ändern von Eigenschaftswerten und (re-)paint
Hmm..
Besser so herum: Zitat:
|
AW: Komponente ändern von Eigenschaftswerten und (re-)paint
Moin..:P
Delphi-Quellcode:
...eher so. :zwinker:
property Breite : integer read FBreite write SetBreite default 20;
property Hoehe : integer read FHoehe write SetHoehe default 300; :evil: Man sollte mal aktualisieren... @josef-b: Aus deinem Quelltext kann ich entnehmen, daß du nicht mit der Codevervollständigung arbeitest. Warum machst du dir es so schwer? Du hast doch "Seattle". Da hast du die Werkzeuge dazu. :gruebel: Eine bessere Variante ist der CnPack... ein Muß. :zwinker: |
AW: Komponente ändern von Eigenschaftswerten und (re-)paint
Danke das Klappt :)
Nur die default-Werte übernimmt er nicht. Breite und Höhe sind immer noch 0. Ich habe die Initialisierungswerte ins oncreate der Komponente genommen, das geht auch ;-) Aber wofür sind dann die Default Werte? |
AW: Komponente ändern von Eigenschaftswerten und (re-)paint
Moin...:P
![]() Zitat:
|
AW: Komponente ändern von Eigenschaftswerten und (re-)paint
Möp, der Kaffee hat noch nicht gewirkt! Natürlich müssen die Setter hinter dem write anstatt hinter dem read!
Ich lasse es als warnendes Beispiel aber mal uneditiert, damit spätere Generationen sehen, was für schädliche Auswirkungen zu geringer Kaffeekonsum haben kann! Wir haben gar keinen :coffee: Smiley! :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz