Benutzer-Werkzeuge

Webseiten-Werkzeuge


k17:k17.10:start

17.10 LCDNumber

Die Klasse LCDNumber (gb.qt4.ext) implementiert eine Komponente, welche die anzuzeigenden Ziffern (Digits) wie einen LCD-Bildschirm zeigt. In einem 7-Segment-Anzeigeelement kann jedes Segment ein- oder ausgeschaltet werden. Jede Ziffer wird in einem separaten 7-Segment-Anzeigeelement angezeigt. Es werden die Ziffern 0 bis 9 und ein Punkt sowie die Buchstaben A, b, C, d, E und F im hexadezimalen Anzeige-Modus angezeigt.

Die Komponente LCDNumber gilt seit Gambas 3.4 als veraltet. Es wird die Empfehlung ausgesprochen, statt der Komponente LCDNumber die Komponente LCDLabel → Kapitel 17.16 LCDLabel zu verwenden. Diese Auffassung teilt der Autor nicht, denn für die Verwendung der Komponente LCDNumber sprechen – mit Blick auf die Möglichkeiten der Komponente LCDLabel – mindestens folgende Gründe:

  • Die Anzeige der Zahl (Typ Float) kann dezimal erfolgen oder für den Teilbereich der ganzen Zahlen auch binär oder hexadezimal!
  • Mit der Auswertung der Eigenschaft LCDNumber.Overflow (read-only) sind Sie in der Lage, den Anzeigebereich dynamisch zu vergrößern, indem Sie die Anzahl der anzuzeigenden Stellen (Digits) erhöhen.
  • Ein Rand kann hinzugefügt werden, der sich dann in vier unterschiedlichen Randformen formatieren lässt.
  • In der Anzeige stören keine Segmente, wenn diese nicht sichtbar sind.

B1

Abbildung 17.10.1: Binäre Anzeige von ganzen Zahlen mit LCDNumber

17.10.1 Eigenschaften LCDNumber

In der folgenden Tabelle werden ausgewählte Eigenschaften der Komponente LCDNumber beschrieben:

LCDNumberDatentypDefaultBeschreibung
.DigitsInteger1Über diese Eigenschaft wird die Anzahl der anzuzeigenden Ziffern festgelegt oder ausgelesen.
.ModeInteger1Gibt den Anzeige-Modus vor (hexadezimal (0), dezimal (1), binär (3)) oder liest den Modus aus.
.Overflow Boolean-Gibt an, ob die Zahl zu groß ist, um exakt angezeigt werden (read-only)
.SmallDecimalPointBooleanFalseErmittelt oder legt fest, wie das Komma angezeigt wird. Wenn diese Eigenschaft TRUE ist, dann wird das Komma zwischen zwei Ziffern eingefügt.
.StyleIntegerOutlineSetzt den Style oder gibt diesen zurück. Konstanten: LCDNumber.Outline (0), LCDNumber.Filled (1) und LCDNumber.Flat (2)
.ValueFloat0Legt den Wert fest, der in der Komponente LCDNumber angezeigt wird oder gibt diesen Wert zurück.

Tabelle 17.10.1.1: Ausgewählte Eigenschaften

Für den Anzeige-Modus werden 3 Konstanten zur Verfügung gestellt:

  • 0 → LCDNumber.Hexadecimal,
  • 1 → LCDNumber.Decimal,
  • 3 → LCDNumber.Binary.

17.10.2 Beispiel LCDNumber

Im Projekt wird die Zahl (LCDNumber1.Value) aus dem Bereich [0,10] durch einen Drehknopf (Komponente Dial) erzeugt und in einer Komponente LCDNumber im dezimalen Anzeigemodus angezeigt. Gleiches gilt auch für die Projekt-Erweiterung, bei der das Anzeige-Element LCDNumber gegen ein LCDLabel ausgetauscht wurde:

B2

Abbildung 17.10.2.1: Dezimale Anzeige mit LCDNumber

B3 LCDLabel

Abbildung 17.10.2.2: Dezimale Anzeige mit LCDLabel

' Gambas class file
 
Private $iRatio As Integer = 10
 
Public Sub Form_Open()
 
  FMain.Center
 
  Dial1.MinValue = 0
  Dial1.MaxValue = 100
  Dial1.PageStep = 10
  Dial1.Step = 1
  Dial1.Value = 25
  Dial1.Wrap = False  
  LCDNumber1.Digits = 3
  LCDNumber1.SmallDecimalPoint = False
  LCDNumber1.Mode = LCDNumber1.Decimal  
  Form2.Show
 
End ' Form_Open()
 
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Public Sub Dial1_Change()
 
  GetOverflow()
  LCDNumber1.Value = Dial1.Value / $iRatio
  If LCDNumber1.Value >= 9 Then
     LCDNumber1.Background = &HFFBFBF
  Else 
     LCDNumber1.Background = &HF5FFE6
  Endif ' LCDNumber1.Value >= 9 ?
End ' Dial1_Change()
 
Private Sub GetOverflow()
  If LCDNumber1.Overflow = True Then 
     Message.Error("Die Zahl ist zu groß, um exakt angezeigt zu werden.")
     Inc LCDNumber1.Digits
     Return
  Endif ' LCDNumber1.Overflow = True ?  
End ' GetOverflow()

Die Prozedur GetOverflow() greift in Abhängigkeit von der voreingestellten Anzahl der Digits und vom verwendeten Modus. Im Event-Handler Dial1.Change() wird die Hintergrundfarbe des Anzeige-Elements LCDNumber von hellgrün auf hellrot geändert, wenn der anzuzeigende Wert den Grenzwert 9 erreicht oder überschreitet:

B4 GrenzBereich

Abbildung 17.10.2.3: Anzeige im Grenzbereich mit LCDNumber

Download

Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k17/k17.10/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge