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
Seite 2 von 5     12 34     Letzte » 
Chris211183

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

AW: Komponentenentwicklung LED über TShape ?

  Alt 23. Sep 2013, 11: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
 
#12

AW: Komponentenentwicklung LED über TShape ?

  Alt 24. Sep 2013, 11: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.259 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Komponentenentwicklung LED über TShape ?

  Alt 24. Sep 2013, 14: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
Chris211183

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

AW: Komponentenentwicklung LED über TShape ?

  Alt 25. Sep 2013, 12:16
, Danke Dir !

Alles Klar, mach ich !
Christian
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#15

AW: Komponentenentwicklung LED über TShape ?

  Alt 25. Sep 2013, 13:37
Ich würde es so machen wie bei der TJvLed (sourcecode):
Eine Farbe für den aktiven Zustand, eine Farbe für den nichtaktiven Zustand und eine Hintergrundfarbe.

Bei der Simulation einer Zweifarben-LED setzt man dann eben property ColorOn jeweils auf Rot oder Grün.
fork me on Github
  Mit Zitat antworten Zitat
Chris211183

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

AW: Komponentenentwicklung LED über TShape ?

  Alt 27. Sep 2013, 10:50
Ich wollte mal meine Komponente Testen, jedoch wird nix dsrgestellt

Delphi-Quellcode:
unit LedUnit;

interface

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

type
    TLED = class(TGraphicControl)
    //HoyLed: TShape;


  private
  { Private declarations }
  FActive: Boolean;
  procedure SetActive(const Value: Boolean);

  protected
  { Protected declarations }

  public
  { Public declarations }

  published
  { Published declarations }
     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;

end;
  end;
    end;


type
        TTriangleShape = class(TShape)

        private
        { Private declarations }

        protected
        { Protected declarations }
          procedure Paint; override;

        public
        { Public declarations }
        published
        { Published declarations }
end;


type
        TPointArray = array [0..2] of TPoint;
        PPointArray = ^TPointArray;

        procedure TTriangleShape.Paint;


begin
with Canvas do
        begin
        Polygon([Point(0, (Self.Height-2)), Point((Self.Width div 2), 0),
        Point(Self.Width, (Self.Height-2)), Point(0, (Self.Height-2))]);
        end;
           end;
jemand ne Ahnung warum nichts beim Test während der Laufzeit auf meinem Formular zu sehen ist ?? Ich langsam nicht mehr
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.259 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: Komponentenentwicklung LED über TShape ?

  Alt 27. Sep 2013, 11:41
Du hast da begins und ends sowie Typdeklarationen wild im Code verteilt. Was gehört denn wozu? Und woher soll der Compiler das wissen? Und wozu ein GraphicControl und zusätzlich noch ein TShape?
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 stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.196 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Komponentenentwicklung LED über TShape ?

  Alt 27. Sep 2013, 13:28
Du solltest Dich erst einmal mit der Komponentenentwicklung grundsätzlich befassen.

Ein schönes Beispiel (und auch mein erstes ) ist die "Entwicklung" eines TRedPanels. Das soll in der Komponentenpalette stehen und wenn man es in´s Formular zieht soll es rot sein.

Wenn Du das geschafft hast sollte es auch möglich werden, andere Komponenten zu entwickeln, die etwas komplexer sind.
Mit dem TRedPanel bleibt es aber erst mal schön übersichtlich und man lernt die Abläufe kennen.

Welche Delphi-Version hast Du denn? Die könntest Du auch mal in Deinem Profil angeben.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

AW: Komponentenentwicklung LED über TShape ?

  Alt 27. Sep 2013, 14:04
Bei einer "visuellen" Komponente, muss ja auch etwas visualisiert werden.

Dieses erreicht man, indem etwas gezeichnet wird. Folglich muss die Paint-Methode entsprechend angepasst (überschrieben) werden, denn genau diese ist für das Zeichnen zuständig.

Das ist so eigentlich das große Geheimnis bei dieser Art von Komponente die du haben willst.

Wie und was du da zeichnest und warum (Berücksitigung von Parametern) genau so ist egal, Hauptsache es wird gezeichnet.

Bei einer Änderung der Parameter wird der Komponente einfach mit Invalidate mitgeteilt, dass eine Änderung passiert ist und ein Neuzeichnen erforderlich ist.

Ein Code-Beispiel folgt sogleich ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.259 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: Komponentenentwicklung LED über TShape ?

  Alt 27. Sep 2013, 14:09
*Psst* ein Code-Beispiel steht bereits da oben
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
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 +2. Es ist jetzt 13:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf