Winkelmann Software Blog

Benutzeroberflächen Planung in Lazarus

In diesem Artikel möchte ich kurz auf meine Erfahrung in der Planung von Benutzeroberflächen eingehen. Jedes Programm sollte gut strukturiert und übersichtlich aufgebaut sein. Aber wie erreicht man das? Je nach Software kann diese Struktur im Aufbau unterschiedlich sein, sollte aber für den wiedererkennungswert klaren Standards folgen. Auch die von einer Firma entwickelte Software gehört zum Cooperate Design. Gleichzeitig werden Software Anwender einem danken das man in der Software klaren Design Standards folgt, diese können sich in neuen Software Bereichen besser und schneller einarbeiten. Auch die Wartung und Anpassung von Software sollte schon beim Design mit geplant werden. Veröffentlicht Ihr ein minimum viable product ein minimal überlebensfähiges Produkt, so wird dies automatisch nach Kundenakzeptanz und Kundenwunsch erweitert. Das GUI Design sollte darauf vorbereitet sein. Damit nicht die ganze Software überarbeitet werden muss, sondern eine Erweiterung eingebaut und Design werden kann.
Ich möchte dies nun etwas genauer beleuchten

Abb. 1.01 GUI Design Standards

Abb. 1.01 GUI Design Standards

Das in Abbildung 1.01 zu sehende Beispiel ist der neue Standard für meine Tutorial Software. Für Winkelmann.Software typischen Header mit dem Winkelmann.Software Blog Logo. Die eigentliche Software ist mit zwei verschiedenen nebeneinander liegenden TPageControl Komponenten aufgebaut. Diese lassen sich, wie man an den beiden Programmen sehen kann, leicht erweitern.

 

GUI Design Standards

GUI Design Standards 2

Bei Verkaufssoftware die auch von der Bedienung größer ist, sollte dieser Standard dann dem entsprechend weiter ausgebaut werden. Bei meiner Software Winkelmann’s IT Team Cockpit kurz WS.ITTC kann man im Design der Software das Cooperate Design meiner Firma Winkelmann.Software erkennen. Was man hier erkennen kann ist, dass auch TPageControls für die bessere Übersicht genutzt werden. Die einzelnen Bereiche sind dazu auch noch Frames die einzeln geladen werden. Kommt damit ein Bereich dazu kann dieser schnell und einfach implementiert werden. Ich werde mit euch gemeinsam die Version 4.0 meiner Software entwickeln und euch bei diesen Schritten mitnehmen lassen.

Diese Standards sollten im eigentlichen Cooperate Design und der übergeordneten Cooparate Idendity bereits von Anfang an festgelegt werden.


Winkelmann Software Blog

If Else Anweisung Freepascal

Allgemeines zur If Else Abfrage in Freepascal

Die IF Else Abfrage heißt auf Deutsch, wenn dann Abfrage. Es wird also ein Zustand der Abfragebedingung geprüft der true oder false ergibt. Trifft die Abfrage zu ist der Wert true deutsch wahr, trifft er nicht zu ist der Wert False deutsch fasch.

Abb. 1.01 Beispiel Software für IF Else Abfrage zum Download s.u.

Abb. 1.01 Beispiel Software für IF Else Abfrage zum Download s.u.

Abb. 1.01 Beispiel Software für IF Else Abfrage zum Download s.u.

Als erstes sehen wir uns die einfache IF Abfrage an.

If Abfrage

Der Lazarus Programmcode  If Abfrage

Var
X,Y : integer;
X := 1
Y := 2

IF (X >= Y) then
Begin
// Mache etwas
END;

Im Quellcode können wir gut sehen das wir eine Bedingung in den runden Klammern haben die abgefragt wird. Gelesen wird das Ganze: Wenn X größer gleich > ist dann // mache etwas.

In einer Software mit GUI General User Interface im deutsch Benutzeroberfläche müssen wir von einem Editfeld Daten als Text auslesen und die in einen Integer umwandeln. Dies geht mit der Funktion StrToInt().

Das UML Diagramm dazu:

Abb. 1.02 Das IF Else UML Diagramm

Abb. 1.02 Das IF Else UML Diagramm

 

Abb. 1.03 If Abfrage Beispiel Software

Abb. 1.03 If Abfrage Beispiel Software

In der Beispiel Software prüfe ich ob Zahl1 kleiner ist als Zahl 2. Bei dieser Abfrage kann nur das Wahre Ergebnis ausgegeben werden. Sollte ein Ergebnis unwahr sein ändert sich nicht. Damit auch bei einer zweiten Abfrage das wahr sollte die erste Abfrage wahr gewesen sein.

Die Button Click Funktion des Quellcodes

procedure TForm1.Button1Click(Sender: TObject);
begin
if (StrToInt(EdtZahl1.text)) < (StrToInt(EdtZahl2.Text)) then
BEGIN
EdtErgebnis.Text := 'Wahr';
END;
end;

Das ist noch ziemlich unschön daher gibt es noch eine IF Else Anweisung. Diese sehen wir uns als nächstes an.

IF Else Anweisung in Freepascal

Der Quellcode zur IF Else Abfrage

Var
X,Y : integer;
X := 1
Y := 2
IF (X > Y) then
Begin
// Mache etwas
END ELSE
BEGIN
// mach etwas anderes
END;

Bei der IF Else Abfrage habe ich nun den Else Teil hinzugefügt. Gelsen wird das ganze wie folgt: Wenn X größer als y Ist dann mache etwas wenn nicht dann mache etwas anderes. In meiner Beispiel Software kann ich mit der IF Else Abfrage schon mehr abfragen.

Das UML Diagramm dazu:

Abb. 1.04 UML Diagramm zur IF Else Abfrage

Abb. 1.04 UML Diagramm zur IF Else Abfrage

 

Abb. 1.05 Beispiel 3 IF Else Abfrage wahr

Abb. 1.05 Beispiel 3 IF Else Abfrage wahr

 

Abb. 1.05 Beispiel 3 IF Else Abfrage unwahr

Abb. 1.05 Beispiel 3 IF Else Abfrage unwahr

Die Button Click Funktion des Quellcodes
procedure TForm1.BtnProofA2Click(Sender: TObject);
begin
if (StrToInt(EdtIEAZahl1.text)) > (StrToInt(EdtIEAZahl2.Text)) then
BEGIN
EdtIEAErgebnis.Text := 'Wahr';
END ELSE
BEGIN
EdtIEAErgebnis.Text := 'Unwahr';
END;
end;

wir können nun schon zwischen Wahr und unwahr unterscheiden. Wenn wir aber wissen möchten, ob Zahl 1 kleiner oder größer ist benötigen wir noch eine weitere Abfrage. Die IF ELSE IF Abfrage diese sehen wir uns als letztes an.

Die IF ELSE IF Abfrage in Freepascal

Der Quellcode zur IF Else Abfrage

Var
X,Y : integer;
X := 1
Y := 2
IF (X > Y) then
Begin
// Ausgabe X größer Y.
END ELSE IF (X < Y) then
BEGIN
// Ausgabe X kleiner Y.
END;

Im ELSE Teil haben wir nun eine weitere IF Abfrage. Mit der wir prüfen können. Diese IF Else Anweisungen lassen sich auch weiter verschachteln. So könnten wir weiter prüfen ob Zahl 1 = Zahl 2 ist.

Das UML Diagramm dazu:

Abb. 1.07 Das UML Diagramm zur IF ELSE IF Diagramm

Abb. 1.06 Das UML Diagramm zur IF ELSE IF Diagramm

Kommen wir nun zu meiner Beispiel Software.

Abb. 1.08 IF ELSE If Abfrage Beispiel 1

Abb. 1.07 IF ELSE If Abfrage Beispiel 1

Abb. 1.09 IF ELSE If Abfrage Beispiel 2

Abb. 1.08 IF ELSE If Abfrage Beispiel 2

Abb. 1.09 IF ELSE If Abfrage Beispiel 2

Die Klick Funktion des Buttons

procedure TForm1.Button2Click(Sender: TObject);

begin
if (StrToInt(EdtIEFZahl1.text)) < (StrToInt(EdtIEFZahl2.Text)) then
BEGIN
EdtIEFErgebnis.Text := 'Die Zahl1 ist kleiner!';
END ELSE IF (StrToInt(EdtIEFZahl1.text)) > (StrToInt(EdtIEFZahl2.Text)) then
BEGIN
EdtIEFErgebnis.Text := 'Die Zahl 2 ist größer!';
END;
end;

Allgemeines zum Artikel:

Die UML Diagramme wurden mit der kostenlosen Software draw.io erstellt. Die Beispiel Software ist mit 7Zip gepackt und enthält keine Exe Datei. Diese kannst du mit der Lazarus IDE selber erstellen. Einfach auf den grünen Play Button drücken oder die F9 Taste zum kompilieren und starten der Software drucken.

Hier geht es zum Herunterladen der Beispiel Software. Die Software ist 644kb groß.


Winkelmann Software Blog

Wahrheitsoperatoren in Freepascal

In Freepascal gibt es vier Wahrheitsoperatoren das AND, das OR, das XOR und das NOT. Hiermit können wir alle logischen Operatoren nachbilden. Einschließlich das NAND (negatives UND) siehe Beispiel unten. Am Ende gibt es noch eine kleine Wahrheitsoperatoren Software um die Tabellen testen zu können.

Die Wahrheitsoperatoren kommen aus dem Bereich der Digitaltechnik. Der Vollständigkeitshalber zeige ich hier die Mathematischen Formen und die Digitalen Schaltbilder auf. Im Bereich der Digitaltechnik werden für TRUE eine 1 angegeben für FALSE eine 0. Im Bereich der Programmiersprache Free Pascal ist nur FALSE eine 0 und TRUE eine -1 bzw. alles andere.

Wahrheitsoperator loisches AND / logisches UND Gatter

AND Gatter / UND Gatter

Digitales AND Gatter mit Formel und Ergebnistabelle

Hier noch einmal die Tabelle mit der Wahrheitswerten TRUE und FALSE

 Eingang A Eingang B Ergebnis
true false false
true true true
false true false
false false false

Freepascal Code:

and

Wahrheitsoperator logisches OR Gatter / logisches Oder

Digitales OR Gatter mit Formel und Ergebnistabelle

Digitales OR Gatter mit Formel und Ergebnistabelle

Eingang A Eingang B Ergebnis
true false True
true true True
false true True
false false False

Freepascal Code

or

Wahrheitsoperator XOR  (antivalentes oder)

Digitales XOR Gatter mit Formel und Ergebnistabelle

Digitales XOR Gatter mit Formel und Ergebnistabelle

Eingang A Eingang B Ergebnis
true false False
true true TRUE
false true TRUE
false false FALSE

Freepascal Code

xor

Wahrheitsoperator NOT   logische Negation

Alle Eingabe die Null als Eingangs Signal haben werden in 1 Umgewandelt und umgekehrt. Bei einem Oder oder AND Gatter wird eine Negation als runder Kreis dargestellt. Das Oder Gatter wird dann zum NAND und das AND Gatter zum NAND.

Digitales NOT Gatter mit Formel und Ergebnistabelle

Digitales NOT Gatter mit Formel und Ergebnistabelle

E1 A
0 1
1 0

Freepascal Code

not

NAND negatives logisches AND Gatter / UND Gatter als Beispiel

Beispiel Negation eines UND das sogenannte NAND (negatives UND) Freepascal benötigt hier ein NOT AND. bei einem OR Gatter wäre es dann ein NOR.

Wahrheitsoperator NOT Beispiel NAND Negation des AND Operators / UND Operators

Digitales NAND Gatter mit Formel und Ergebnistabelle

Digitales NAND Gatter mit Formel und Ergebnistabelle

 

Eingang A Eingang B Ergebnis
true false True
true true False
false true True
false false True

Winkelmann Software Blog

Freepascal Vergleichsoperatoren

Vergleichsoperatoren

Mit einem Vergleichsoperator können wie der Name schon sagt Vergleiche durchgeführt werden. Die Werte die daraus resultieren sind boolesche Werte (Wahr oder Falsch). Diese werden bei Freepascal wahr engl. true als 1 und falsch engl. false 0 dargestellt. Bei der Darstellung in unserer kleinen Vergleichsoperatoren Software werden die Informationen durch die Funktion boolTostr() in true -1 und false 0 dargestellt.

Software-Vergleichsoperatoren

Abb. 1.01 Software-Vergleichsoperatoren

< Kleiner Operator Beispiele:

  • 5 < 6 gelesen 5 ist kleiner als 6 ergibt true -1
  • 6 < 5 gelesen 6 ist kleiner als 5 ergibt false 0

> Größer Operator Beispiele:

  • 5>6 gelesen 5 ist größer als 6 ergibt false 0
  • 6>5 gelesen 6 ist größer als 5 ergibt true -1

<= Kleiner Gleich Beispiele:

  • 5<=6 gelesen 5 ist kleiner gleich 6 ergibt true -1
  • 6<=5 gelesen 6 ist kleiner gleich 5 ergibt false 0

>= Größer Gleich Beispiele:

  • 5>=6 gelesen 5 ist größer gleich als 6 ergibt false 0
  • 6>=5 gelesen 6 ist größer gleich als 5 ergibt true -1

= Gleich Operator: Beispiele:

  • 5=5 gelesen 5 ist gleich 5 und ergibt true -1
  • 5=6 gelesen 5 ist gleich 6 und ergibt false 0

<>Ungleich Operator: Beispiele:

  • 5<>5 gelesen 5 ist ungleich 5 und ergibt false 0
  • 5<>6 gelesen 5 ist ungleich 6 und ergibt true -1

Meine Beispielsoftware Vergleichsoperatoren kannst du hier als .zip Archiv mit 7Zip erstellt herunterladen. Sie steht als Programmcode für die Lazarus IDE, ohne ausführbare .exe zur Verfügung. Diese kompilierst du indem du das Projekt (.lpi Datei) in Lazarus öffnest, indem du (f9) oder den grünen Play Button drückst.


Ich habe mir drei verschiedene Applikationen für euch ausgedacht.

Bevor Ihr abstimmt lest euch doch mal die Beschreibungen durch. Ihr habt eine Stimme.

Welche Software möchtet Ihr mit mir in Lazarus und Freepascal entwickeln?

View Results

Loading ... Loading ...

1. Hausverwalter Software

Hausverwalter Software Planungsübersicht

Hausverwalter Software Planungsübersicht

Herunterladen der Software Planung– gepackt als zip Archiv mit 7Zip erstellt mit draw.io als drawio File.

Die Planung sieht so aus, das man

  1. Stammdaten der eigenen Firma verwalten kann
  2. Mitarbeiter Verwaltung – Jeder Mitarbeiter hat ein eigenes Profil
  3. Eigenes Logo Design White Label für Rechnungen als PDF oder Report
  4. Anlegen von Privatkunden und Gewerbekunden
  5. CRM Funktionen Kontakt Management mit Kunden History und aktuellen bzw. individuellen Kundenpreisen
  6. CRM Funktion Zahlungsmoral Kunde
  7. CRM Funktion Umsatz, Gewinn pro Kunde und pro Jahr, Monat, Quartal und insgesamt
  8. CRM Funktionrn Umsatz, Gewinn pro Objekt und pro Jahr, Monat, Quartal und insgesamt
  9. Adressdaten – verschiedene Standorte
  10. Rechnungsadresse
  11. Lieferadresse
  12. Ansprechpartner
  13. Objektverwaltung
  14. Objektwartung
  15. Wohnungen anlegen
  16. Mieter anlegen
  17. Rechnungsverwaltung
  18. Übersicht Mieteinnahmen
  19. Nebenkosten erstellen
  20. Heizkosten Abrechnung

Welche Software möchtet Ihr mit mir in Lazarus und Freepascal entwickeln?

View Results

Loading ... Loading ...

2. CRM System mit Asset Verwaltung und Remode Desktop Verwaltung

CRM-System

CRM-System – Ganzes Bild ansehen bitte anklicken.

Herunterladen der Software Planung – gepackt als zip Archiv mit 7Zip erstellt mit draw.io als drawio File.

Die Planung sieht so aus, das man

  1. Stammdaten der eigenen Firma verwalten kann
  2. Mitarbeiter Verwaltung – Jeder Mitarbeiter hat ein eigenes Profil
  3. Eigenes Logo Design White Label für Rechnungen als PDF oder Report
  4. Anlegen von Privatkunden und Gewerbekunden
  5. CRM Funktionen Kontakt Management mit Kunden History und aktuellen bzw. individuellen Kundenpreisen
  6. CRM Funktion Zahlungsmoral Kunde
  7. CRM Funktion Umsatz, Gewinn Kunde pro Jahr, Monat, Quartal und insgesamt
  8. Adressdaten – verschiedene Standorte
  9. Rechnungsadresse
  10. Lieferadresse
  11. Ansprechpartner

Als weites soll eine Asset Verwaltung integriert werden.

  1. Asset IT Hardware – Racks
  2. Asset IT Hardware – COmputer, PC, Notebook, Netbooks, Tablets, Smartphones, Server, Switche, Router, Loadbalancer usw.
  3. Asset IT Hardware in den Computern und Servern
  4.  Asset IT Hardware Anschlüsse Beispiel Grafikarten VGA, DGVI, HDMI usw.
  5. Netzwerkports: Kupfer, LWL oder Coaxial und Port Typen(RJ45, Cat 5, CAT5a, CAT6, CAT 6a, LC, SC, ST oder F Stecker)
  6. Hardware Überblick: Betriebssystem, Zugänge Lizenzen Lifetime usw.
  7. Konfiguration von Netzlaufwerken
  8. Eingesetzte Software, Lizenzen und Lifetime
  9. Eingesetzte Treiber
  10. Dokumente zu den Systemen Garantie, Kaufvertrag usw.
  11. Wartung Reparatur und Veränderungen der Hardware und Software (Upgrades)
  12. Elektrische DGUV-V3 Prüfungsverwaltung
  13. Backup Verwaltung
  14. Hersteller Verwaltung
  15. Warungsintervalle für Hardware und Software mit automatischer Wiedervorlage

Welche Software möchtet Ihr mit mir in Lazarus und Freepascal entwickeln?

View Results

Loading ... Loading ...

3. Faktura Software

Die Planung sieht so aus, das man

  1. Stammdaten der eigenen Firma verwalten kann
  2. Mitarbeiter Verwaltung – Jeder Mitarbeiter hat ein eigenes Profil
  3. Eigenes Logo Design White Label für Rechnungen als PDF oder Report
  4. E-Mail Versand / Stapelverarbeitung ( E-Mail Newsletter mit Reportanhand bzw. Download aus dem I-Net als Link)
  5. Login durch Mitarbeiter Verwaltung
  6. Kundenverwalten – Kunden anlegen und verwalten
  7. Rechnungs und Lieferanschriften, Rabattaktionen, Staffelpreise, verschiedene Verkaufspreise pro Produkt
  8. Konditionen pro Kunde oder unabhänige Konditionen als Staffelpreis.
  9. Rechnungen, Angebote und Lieferscheine selbst erstellen.
  10. Auftragserstellung.
  11. Artikel und Dienstleistungen erstellen und die die Angebote und Rechnungen einfügen kann.
  12. Aus Angebote Rechnungen erstellen.
  13. CRM Funktionen Kontakt Management mit Kunden History und aktuellen bzw. individuellen Kundenpreisen
  14. CRM Funktion Zahlungsmoral Kunde
  15. CRM Funktion Umsatz, Gewinn Kunde pro Jahr, Monat, Quartal und insgesamt

Welche Software möchtet Ihr mit mir in Lazarus und Freepascal entwickeln?

View Results

Loading ... Loading ...