AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Komponente ändern von Eigenschaftswerten und (re-)paint
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente ändern von Eigenschaftswerten und (re-)paint

Ein Thema von josef-b · begonnen am 5. Sep 2017 · letzter Beitrag vom 5. Sep 2017
Antwort Antwort
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, 07: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
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Komponente ändern von Eigenschaftswerten und (re-)paint

  Alt 5. Sep 2017, 07:35
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;
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#3

AW: Komponente ändern von Eigenschaftswerten und (re-)paint

  Alt 5. Sep 2017, 07:47
Hmm..

Besser so herum:

Delphi-Quellcode:
property Breite : integer read FBreite write SetBreite default 20;
property Hoehe : integer FHoehe read write SetHoehe default 300;
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponente ändern von Eigenschaftswerten und (re-)paint

  Alt 5. Sep 2017, 07:58
Moin..
Delphi-Quellcode:
property Breite : integer read FBreite write SetBreite default 20;
property Hoehe : integer read FHoehe write SetHoehe default 300;
...eher so.

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. Eine bessere Variante ist der CnPack... ein Muß.

Geändert von haentschman ( 5. Sep 2017 um 08:05 Uhr)
  Mit Zitat antworten Zitat
josef-b

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

AW: Komponente ändern von Eigenschaftswerten und (re-)paint

  Alt 5. Sep 2017, 08:30
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?

Geändert von josef-b ( 5. Sep 2017 um 08:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#6

AW: Komponente ändern von Eigenschaftswerten und (re-)paint

  Alt 5. Sep 2017, 08:45
Moin...

http://docwiki.embarcadero.com/RADSt...aften_(Delphi)
Zitat:
Die optionalen Direktiven stored, default und nodefault sind Speicherbezeichner. Sie haben keinerlei Auswirkungen auf die Funktionsweise des Programms, sondern bestimmen, ob die Werte der published-Eigenschaften in Formulardateien gespeichert werden.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Komponente ändern von Eigenschaftswerten und (re-)paint

  Alt 5. Sep 2017, 09:05
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 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