AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Neue Komponente entwickeln

Ein Thema von josef-b · begonnen am 23. Aug 2017 · letzter Beitrag vom 25. Aug 2017
Antwort Antwort
Seite 3 von 3     123   
josef-b

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

AW: Neue Komponente entwickeln

  Alt 25. Aug 2017, 08:08
nein im Code ist er auch nicht verfügbar..

Ich möchte einfach nur die Farbe von der aus TGraphicControl abgeleiteten Komponente
zur Laufzeit ändern, in Abhängigkeit von einer Boolschen Variablen.

Genau genommen nicht die ganze Komponente sondern nur zwei "Kreise" darin,
etwas weiter oben sieht man das Teil im Anhang.

So nach dem Motto: if true then farbe = rot, if false then farbe = weiss
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Neue Komponente entwickeln

  Alt 25. Aug 2017, 08:20
Das würde ich nicht so machen, sondern im Setter der Property ein Refresh/Repaint/Invalidate aufrufen. Innerhalb der Zeichenroutine wird dann der entsprechende Teil gemäß des Property-Wertes eingefärbt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
josef-b

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

AW: Neue Komponente entwickeln

  Alt 25. Aug 2017, 08:21
Sorry DeddyH ,

da hatte sich jetzt was überschnitten...

Das hat jetzt geklapt mit dem Canvas.

Habe die property eingefügt.

Danke, aber das mit dem Setter habe ich nicht verstanden.

Kannst du mir das noch etwas genauer erklären, ich bin leider kein gelernter Informatiker, nur Betriebswirt

Geändert von josef-b (25. Aug 2017 um 08:24 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#24

AW: Neue Komponente entwickeln

  Alt 25. Aug 2017, 09:23
Habe gerade mal ausgehend von Detlef's Beispiel im Editor was zusammengeschrieben. Sollte eigentlich funktionieren. Eventuell ist noch der ein oder andere Syntaxfehler drin, aber den bekommst Du dann denke ich aufgelöst.

Delphi-Quellcode:
type
  TSiloZelle = class(TGraphicControl)
  private
    FIsEmpty: Boolean;
  protected
    procedure Paint; override;
    procedure SetIsEmpty(Value: Boolean); virtual;
    function GetIsEmpty: Boolean; virtual;
  public
    //...
    property Canvas;
    property IsEmpty: Boolean read GetIsEmpty write SetIsEmpty;
  //...
  end;


procedure TSiloZelle.Paint;
begin
  inherited;

  DoSomePaintStuff();

  if IsEmpty then
    Canvas.Brush.Color := clRed
  else
    Canvas.Brush.Color := clGreen;

  DoSomeOtherPaintStuff();
end;

procedure SetIsEmpty(Value: Boolean);
begin
  FIsEmpty := Value;
  Self.Invalidate;
end;

function GetIsEmpty: Boolean;
begin
  Result := FIsEmpty;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Neue Komponente entwickeln

  Alt 25. Aug 2017, 10:14
Richtig, ich persönlich frage nur immer ab, ob sich der Wert auch tatsächlich geändert hat, damit nicht unnötig neu gezeichnet wird.
Delphi-Quellcode:
type
  TMeineDingensKomponente = class(TGraphicControl)
  private
    FSomeProp: Boolean;
    procedure SetSomeProp(const Value: Boolean);
  //...
  public
    property SomeProp: Boolean read FSomeProp write SetSomeProp;
    //...
  end;

//...

procedure TMeineDingensKomponente.SetSomeProp(const Value: Boolean);
begin
  if FSomeProp <> Value then
    begin
      FSomeProp := Value;
      Invalidate; //In der Paint-Methode dann je nach Wert zeichnen
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#26

AW: Neue Komponente entwickeln

  Alt 25. Aug 2017, 10:25
Richtig, ich persönlich frage nur immer ab, ob sich der Wert auch tatsächlich geändert hat, damit nicht unnötig neu gezeichnet wird.


Meins war allerdings nur ein Beispiel um zu verdeutlichen was du meintest. Die zusätzlichen Optimierungen habe ich in dem Schritt noch nicht bedacht/beachtet.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: Neue Komponente entwickeln

  Alt 25. Aug 2017, 10:32
Man kann sich auch ein paar OpenSource-Projekte ansehen, z.B. das hier: http://www.delphipraxis.net/71655-bu...nschaften.html oder auch meinen runden Button: http://www.delphipraxis.net/107624-g...ezeichnet.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 20:15 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