AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Komponentenentwicklung LED über TShape ?

Ein Thema von Chris211183 · begonnen am 23. Sep 2013 · letzter Beitrag vom 16. Jun 2015
Antwort Antwort
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#1

AW: Komponentenentwicklung LED über TShape ?

  Alt 23. Sep 2013, 10:24
Christian
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#2

AW: Komponentenentwicklung LED über TShape ?

  Alt 23. Sep 2013, 10:26
wie kann ich dem jetzt aber spezielle Werte zuweisen, zum Bsp., dass er die Farbe wechselt, wenn er angesteuert wir...

wie macht man soetwas ?
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#3

AW: Komponentenentwicklung LED über TShape ?

  Alt 23. Sep 2013, 10:31
Für solche Dinge empfiehlt sich eine Property samt Setter.
Delphi-Quellcode:
type
  TLed = class(TVorfahr)
  private
    FDings: TDatentyp;
    procedure SetDings(const Value: TDatentyp);
  ...
  published
    property Dings: TDatentyp read FDings write SetDings;
    ...
  end;

procedure TLed.SetDings(const Value: TDatentyp);
begin
  if Value <> FDings then
    begin
      FDings := Value;
      invalidate;
    end;
end;
Sobald der Property Dings ein Wert zugewiesen wird, wird der Setter durchlaufen. Dieser schaut nach, ob auch tatsächlich eine Änderung eingetreten ist, setzt dann ggf. den neuen Wert und löst ein Neuzeichnen aus. Das muss man nicht unbedingt so machen, aber als Beispiel sollte das allemal taugen.
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
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.157 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Komponentenentwicklung LED über TShape ?

  Alt 23. Sep 2013, 10:32
Ich denke mit Ansteuern meinte er Mausover? Oder?
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#5

AW: Komponentenentwicklung LED über TShape ?

  Alt 23. Sep 2013, 10:40
ahhhhh, jetzt kommt Licht ins Dunkle, vielen Dank Euch allen, ich mach mal ein bissl rum und melde mich wieder !




Danke
Christian
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#6

AW: Komponentenentwicklung LED über TShape ?

  Alt 24. Sep 2013, 10:43
Hallo @all,

da bin ich wieder, soweit klappt das wohl jetzt halbwegs, noch ein paar Fragen haben sich jetzt aufgetan:

Die Komponente soll die Eigenschaften aus = grau, Activ = Grün und Inactiv = Rot haben

wie kann man das hier implementieren, habe bis jetzt folgenden Code:


unit Unit1;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TLED = class(TForm)
HoyLed: TShape;

private
FActive: Boolean;
procedure SetActive(const Value: Boolean);

public

published
property Active: Boolean read FActive write SetActive;
end;

var
LED: TLED;
Shape : TShape;
Brush: TShape;
Color: TColor;
ShowHint: Boolean;

implementation

{$R *.dfm}
procedure TLED.SetActive(const Value: Boolean);
begin
if Active <> FActive then
begin
FActive := Active;
invalidate;
end;

begin
Shape := TShape.Create(LED);

with Shape do
begin
Left := 30;
Top := 30;
Width := 30;
Color := clGreen;
end;
end;
end;
end.

Bin über jede Hilfe dankbar !
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#7

AW: Komponentenentwicklung LED über TShape ?

  Alt 24. Sep 2013, 13:26
Wieso leitest Du denn von TForm ab? Und weshalb ein Boolean für 3 mögliche Zustände? Ich würde das etwa so angehen (ungetestet, da im Editor getippt):
Delphi-Quellcode:
type
  (* Mögliche Stati *)
  TLEDState = (lsOff, lsActive, lsInactive);
  
  TLED = class(TGraphicControl)
  private
    FState: TLEDState;
    procedure SetState(const Value: TLEDState);
  protected
    procedure Paint; override;
  published
    property State: TLEDState read FState write SetState;
  end;
  
procedure TLED.Paint;
var
  LEDColor: TColor;
begin
  inherited;
  case FState of
    lsActive:
      LEDColor := clGreen;
    lsInactive:
      LEDColor := clRed;
    else
      LEDColor := clGray;
  end;
  Canvas.Brush.Color := LEDColor;
  Canvas.Ellipse(0, 0, Width, Height);
end;

procedure TLED.SetState(const Value: TLEDState);
begin
  if FState <> Value then
    begin
      FState := Value;
      invalidate;
    end;
end;
P.S.: Benutze doch bitte künftig die Delphi-Tags (die "Helm"-Schaltfläche im Beitragseditor), dann ist der Code viel besser zu lesen.
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

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:27 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