[Code] [Delphi] 7 Segmentanzeige

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von My-Doom, 13. Januar 2009 .

Schlagworte:
  1. 13. Januar 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    [Delphi] 7 Segmentanzeige

    Hi.
    Super einfache Aufgabe (für die liebe Schule):
    Programmiere eine siebensegmentanzeige-komponente in Delphi (5).

    Problem: Ich hab gar keine Ahnung, würds aber trotzdem gern machen

    Daher bräuchte ich bitte schritt-für-schritt support

    Also ich hab jetzt in Delphin Neu-> Neue Komponente ausgewählt, Vorfahrtyp TShape (würd die Anzeige gerne mit Shapes realisieren) und soweit so gut.
    {bild-down: https://www.xup.in/tn/2009_01/26865996.jpeg}

    Jetzt hab ich den Spaß vor mir (siehe screen), und frag mich, wo ich den üblichen clickbunti-scheiß machen kann.
    (das ist mit delphi doch sonst so leicht)
    Also wo kann ich die 7 Segmentanzeige jetzt "formen" ?


    Sollte jemand ne "open source" delphi 7-segment-anzeige finden (oder haben) würde ich mich sehr über diese freuen, um sie zu verstehen und dann auch selber machen zu können. bis jetzt hab ich nur erfolglos gegooglet..

    grüße

    My-Doom

    PS: Jemand nen besseren Prefix-vorschlag? :x
     
  2. 13. Januar 2009
    AW: [Delphi] 7 Segmentanzeige

    Hi, warum unbedingt ein TShape Objekt?
    Wäre eventuel vielleicht ein TGraphicControl Objekt besser.....

    Um eine benutzerdefinierte Zeichnung zu realiesern muss die Funktion Paint
    überschreiben und in dieser deine Objekt und somit dein Segement gezeichnet werden.

    In der überschriebenen Paint-Funktion kannst du mit der Untereigenschaft- objekt Canvas (siehe ausfürliche Beschreibung Delphi Hilfe unter TCanvas) die Verschiedenen Mahlfunktionen aufrufen.

    Beispiel:
    Code:
    [B]uses [/B][...] Controls [...];
    
    [...]
    
    [B]type[/B]
     TMyObject = [B]class[/B](TGraphicControl)
     [B]private[/B]
     [COLOR="Blue"]// Variable in der der Wert gespeichert ist der Angezeigt werden soll[/COLOR]
     FSegement: Integer;
     [COLOR="Blue"]// Funktion die bei Veränderung den neuen Wert übernimmt und die
     // Anzeige Akutalliesiert[/COLOR]
     [B]procedure [/B]SetSegement(Value: Integer);
     [B]protected[/B]
     [B]public[/B]
     [COLOR="Blue"] // Paintfunktion wird überschireben
     // Wird automatisch aufgerufen sobald das Stauerelement vom Betriebssystem
     // den Befehl bekommt[/COLOR]
     [B]procedure [/B]Paint; [B]override[/B];
     [B]published[/B]
    [COLOR="Blue"] // Eigenschaft über die man den Aktuallen Anzeigewert auslessen und
     // setzen kenn
     // Beim lesen wird die Variable FSegement ausgelesen
     // Beim schreiben wird die Funktion SetSegement aufgerufen und der
     // neue Wert übergeben, die Funktione kann dann entscheiden ob der
     // übergebene Wert angenommen wird oder nicht[/COLOR]
     [B]property [/B]Segement: Integer [B]read [/B]FSegement [B]write [/B]SetSegement;
     [B]end[/B];
    
    [...]
    
    [B]implementation[/B]
    
    [...]
    
    [B]procedure [/B]TMyObject.SetSegement(Value: Integer);
    [B]begin[/B]
     [COLOR="Blue"] // Wurde Wert geändert?
     // wenn nicht wird das Akutallieseren der Anzeige
     // nicht durchgeführt um Ressourcen zu sparen[/COLOR]
     [B]if [/B]Value = FSegement [B]then [/B]Exit;
    
     FSegement := Value; [COLOR="Blue"]// Wert übernehmen[/COLOR]
     Paint(); [COLOR="Blue"] // Steuerelement neuzeichnen[/COLOR]
    [B]end[/B];
    
    [B]procedure [/B]TMyObject.Paint;
    [B]var [/B]S: [B]String[/B];
    [B]begin[/B]
     S := IntToStr(FSegement); [COLOR="Blue"]// Wert in String umwandeln[/COLOR]
     [B]with [/B]Canvas [B]do [/B][COLOR="Blue"]// Mit der Eigenschaft Canvas weiter arbeiten[/COLOR]
     [B]begin[/B]
     [COLOR="Blue"] // Text bzw. den Wert auf das Steuerelement zentiert Zeichnen
     // ClientRect von TCanvas enthält die Position- und Größedaten
     // der Zeichenfläche an[/COLOR]
     Brush.Style := bsSolid;
     TextRect(ClientRect, (Width - TextWidth(S)) div 2, (Height - TextHeight(S)) div 2, S);
    
     [COLOR="Blue"] // Rahmen zeichnen[/COLOR]
     Brush.Style := bsClear;
     Rectangle(ClientRect);
     [B]end[/B];
    [B]end[/B];
    
    [...]
    
    Je nach dem, wie deine Anzeige aussehen sollst kannst du die Funktionen bzw. die Eigenschaften
    von TCanvas benutzen: MovoTo, LineTo, Pixels[x,y], FillRect, Rectangel, Circle, Brush, Pen ....

    Mfg Rushh0ur
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.