AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Opensource Lichtsteuerung PC_DIMMER2008

Opensource Lichtsteuerung PC_DIMMER2008

Ein Thema von christian.noeding · begonnen am 26. Mai 2005 · letzter Beitrag vom 13. Sep 2006
 
Robert Marquardt
(Gast)

n/a Beiträge
 
#17

Re: 230V 128 Kanal PC_DIMMER v2.0

  Alt 29. Mai 2005, 16:34
Weiter gehts mit den Verbesserungsvorschlaegen.
Nochmals zur Erinnerung. Das Hauptfenster ist recht gelungen. Viele kommerzielle Programme sind schlechter designt.
Trotzdem gibt es noch genug zu meckern

Die initiale Beschriftung der Buttons ist falsch. Es muss nicht genannt werden das es ein Button ist, sondern die auszuloesende Aktion muss benannt werden.
Also "Szene 1" bis "Szene 8" und "Effekt 1" bis "Effekt 8". Durch die Trennung der Nummerierung entfaellt auch der falsche Zusammenhang.
es waere noch sehr praktisch wenn die Buttons ein Popupmenue zur individuellen Umbenennung bekommen koennten. Es sollte nicht zum grossen Umbenennungsdialog fuehren, sondern zu einem Dialog mit nur einem Eingabefeld fuehren.

Kommen wir wieder zur Source.
FormCreate:
Der SplashScreen gehoert ins .dpr File. Nur dort kann er vor der Erstellung der MainForm angezeigt werden. Dazu gibt es glaube ich einen Code-Library-Eintrag.
Alles ab "// Statusleiste bereit machen" bis (ausschliesslich) "startfademem := 1;" sind Einstellungen die in der IDE an den Komponenten gemacht werden sollten.
Das Laden des Konfigurationsfiles gehoert in eine eigene Methode, da es vielleicht auch an anderer Stelle zu gebrauchen ist.
Die folgenden Zuweisungen lassen sich natuerlich mit Komponenten-Arrays entscheidend vereinfachen.
"case data.comport of" ist wiederum ein typischer Fall fuer eine konstante Tabelle.
"// Kanäle 1-32 von Opto Control Deluxe 32 auf 0 setzen" schreit nach einer eigenen Methode "ResetOCDChannels".
"// Alle Toolboxes wie zuletzt gespeichert anordnen" ist ein Kandidat fuer ein Komponenten-Array. Spaetestens wenn es eine Aktion zum Aufraeumen gibt.
"case data.preheatvalue of" wurde ja schon in der vorigen Message behandelt.

"TMainForm.Senddataout" sollte anders organisiert werden. Das zu sendende Datenpaket erst in einem Puffer zusammenstellen und dann in einem comport.senddata senden.
Delphi-Quellcode:
var
  Puffer: array [0..15] of Byte;
begin
  // alles auf 0 setzen
  FillChar(Puffer, SizeOf(Puffer), 0);

  // ... die einzelnen Bytes eintragen

  // in einem Rutsch senden (auf die verschiedene Laenge pro Firmware achten)
  comport.senddata(Puffer, 15);
Der Grund ist, das bei einem USB zu RS232-Adapter das Senden eines einzelnen Bytes 3 ms dauert, ein laengerer Puffer aber nicht mehtr Zeit braucht.

Delphi-Quellcode:
procedure TMainForm.CheckBtns();
var
  B: Boolean;
begin
  B := listbox.items.count <= 0;
  AddBtn.Enabled := B;
  AddPMnu.Enabled := B;
  RunBtn.enabled := not B;
  ...
und die Methode schrumpft auf die Haelfte zusammen.

Exit1Click() sollte einfach nur Close audfrufen. Der Dialog wird in den OnCloseQuery-Event der Form verlegt, dann kommt die Abfrage immer egal wie man die Form schliesst.

Es folgen Codewuesteneien, die der Komponenten-Arrays beduerfen.

Bei COMx1Click() hoer ich jetzt mal auf.
Mit dem obigen und besonders mit Komponenten-Arrays duerften noch mehrere Tausend Codezeilen verschwinden, ohne das das Programm irgendetwas verliert.
  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 +1. Es ist jetzt 07:58 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