LazPlan v0.7 (Beta) - Schaltplansoftware

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.0.1 - Schaltplansoftware

Beitrag von compmgmt »

siro hat geschrieben:Da brauchst aber nur schreiben:

Btn_CreateObjectClick(self);

Man übergibt eigentlich fast immer den Sender, also den Auslöser des Ereignisses.
Self steht dann für deine ListBox LB_Objects
Das wird aber bei Dir eh nicht ausgewertet und ist somit egal.
Ja, allerdings habe ich hier bewusst den Button als Sender angegeben, da es nur als Weiterleitung fungiert und kein Unterschied gemacht werden soll zwischen Doppelklick in der Listbox oder Klick auf den Button.

siro hat geschrieben:Compiliert bekomme ich es, aber wenn ich das Programm starte bekomme ich eine Fehlermeldung:
List index (-1) out of bounds
Dann wurden die Komponenten nicht korrekt geladen. Ist das Verzeichnis "Components" auch wirklich im gleichen Pfad wie die Binärdatei? Bzw hast du die Zip auch entpackt?

EDIT:
Hier wird der Pfad des "Components" Verzeichnisses festgelegt. Sollte eigentlich auch unter Linux funktioneren:

Code: Alles auswählen

// ObjectPath definieren
  ObjectPath := ExtractFilePath(Application.ExeName) + 'Components' + PathDelim;

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.0.2 - Schaltplansoftware

Beitrag von compmgmt »

So, hab jetzt nochmal das Einlesen der Schaltsymbole verbessert. Wenn Sie nicht eingelesen werden können, wird eine Fehlermeldung ausgegeben (das Programm stürzt nicht mehr ab). Außerdem werden nur noch *.bmp Dateien in den Verzeichnissen beachtet.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: LazPlan v0.0.0.2 - Schaltplansoftware

Beitrag von siro »

Jetzt läuft es:

Deine Fehlerfenster habe ich jetzt auch bekommen.
Die LazPlan.exe Datei wurde bei mir im Verzeichnis...\Source code hineincompiliert
die muss ich dann ins übergeordnete Verzeichnis kopieren, dann geht es.

Dann wünsche ich noch ein schönes Wochenende und viel Spass beim Weiterentwickeln.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.0.2 - Schaltplansoftware

Beitrag von compmgmt »

siro hat geschrieben:Die LazPlan.exe Datei wurde bei mir im Verzeichnis...\Source code hineincompiliert
die muss ich dann ins übergeordnete Verzeichnis kopieren, dann geht es.

Dann wünsche ich noch ein schönes Wochenende und viel Spass beim Weiterentwickeln.

Ja, logischerweise muss der "Components" Ordner im selben Verzeichnis sein, wie die Binärdatei.

Danke, dir auch ein schönes Wochenende!

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: LazPlan v0.0.0.2 - Schaltplansoftware

Beitrag von Mathias »

Ja, logischerweise muss der "Components" Ordner im selben Verzeichnis sein, wie die Binärdatei.

Dies kannst du sehr einfach umgehen.
Project/Prjecteinstellungen.../Pfade/ dort LazPlan durch ../LazPlan ersetzen. Bei Windows ..\LazPlan.

Noch ein Tip, ich würde im Project-Verzeichniss 2 Ordner machen.
./bin dort befinden sich deine Exe, deine *.txt und auch der Ordner Components.
./source dort ist deine Source.
Somit hast du die Quellen und das Endergebnis sauber getrennt. :wink:
Der oben beschriebene Pfad wäre dann ../bin/LazPlan .
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.0.2 - Schaltplansoftware

Beitrag von compmgmt »

Mathias hat geschrieben:
Ja, logischerweise muss der "Components" Ordner im selben Verzeichnis sein, wie die Binärdatei.

Dies kannst du sehr einfach umgehen.
Project/Prjecteinstellungen.../Pfade/ dort LazPlan durch ../LazPlan ersetzen. Bei Windows ..\LazPlan.

Noch ein Tip, ich würde im Project-Verzeichniss 2 Ordner machen.
./bin dort befinden sich deine Exe, deine *.txt und auch der Ordner Components.
./source dort ist deine Source.
Somit hast du die Quellen und das Endergebnis sauber getrennt. :wink:
Der oben beschriebene Pfad wäre dann ../bin/LazPlan .
Gute Idee. Werde ich in der nächsten Version so machen. Danke.

LG
compmgmt

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.0 - Schaltplansoftware

Beitrag von compmgmt »

So, hab jetzt einiges geändert:

Code: Alles auswählen

v0.0.1.0 22.07.2017
   - Änderungen der Pfade
      - Binärdatei in ./bin/
      - Quellcode in ./source/
      - Komponenten in ./Components/
         - Schaltsymbole in ./Components/objects/
         - Thumbnails in ./Components/thumbnails/
   - ListView statt ListBox
      - Jedes Schaltsymbol hat ein Thumbnail
      - Thumbnails kommen aus ./Components/thumbnails/ und sind immer 32x32 Pixel groß
         - Skalierung von Schaltsymbolen aus ./Components/objects/ nicht möglich, da es immer wieder zu Anzeigefehlern kam
   - GroupBox "Schaltymbol erstellen" vergrößert
      - Ändert die Größe beim Verändern der Fenstergröße
   - Neue Schaltsymbole
      - Neue Kategorie "Induktion"
         - Neues Symbol "Spule"

Könnte das Programm bitte noch mal jemand unter Linux testen? Unter Windows geht bei mir alles :)
Hinweis: "Components" muss jetzt nicht mehr im selben Verzeichnis sein, wie die binary, sondern ein Verzeichnis drüber (../Components)

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: LazPlan v0.0.1.0 - Schaltplansoftware

Beitrag von siro »

Windows 10 Test:

Compilieren einwandfrei
.exe wird im Ordner .bin angelegt, auch okay.

Beim ersten Starten des Programms sehe ich die Dioden mit Symbolen.
Wenn ich dann eine andere Kategorie gewählt habe, sehe ich leider keine Symbole mehr, nur den Text,
auch nicht mehr, wenn ich dann zurück auf Dioden gehe.
Funktion mit Doppelklick ist aber gegeben.

Bei Datei öffnen sollte evtl. noch der Pfad gleich entsprechend gesetzt werden.
"Beispielschaltungen" Hier ist Standard bei mir anscheinend Dokumente.

Das ist kein Meckern, sondern Info für Dich. :wink:

Es wird, und das Wochenende ist ja noch lang.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: LazPlan v0.0.1.0 - Schaltplansoftware

Beitrag von Mathias »

Könnte das Programm bitte noch mal jemand unter Linux testen?

Sieht so aus, wie wen es laufen würde.

Den Ordner Componetes, würde ich noch in den bin-Ordner verschieben.
Bei Leitungen, ist das Symbol bei Vertikal falsch, dargestellt wird es aber richtig.
Der Button "Schaltsymbole erstellen", muss das Anchors von akTop auf akButton geändert werden.

Beim ersten Starten des Programms sehe ich die Dioden mit Symbolen.
....
Bei mir kommt beim ersten Start "Kondensatoren", auch wen ich nachträglich Diode wähle, kann ich keinen Fehler feststellen.

Ansonsten sieht das Programm super aus. :shock:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.0 - Schaltplansoftware

Beitrag von compmgmt »

siro hat geschrieben:Beim ersten Starten des Programms sehe ich die Dioden mit Symbolen.
Wenn ich dann eine andere Kategorie gewählt habe, sehe ich leider keine Symbole mehr, nur den Text,
auch nicht mehr, wenn ich dann zurück auf Dioden gehe.
Funktion mit Doppelklick ist aber gegeben.
Sehr merkwürdig, da bei mir unter Win10 alles funktioniert.

siro hat geschrieben:Bei Datei öffnen sollte evtl. noch der Pfad gleich entsprechend gesetzt werden.
"Beispielschaltungen" Hier ist Standard bei mir anscheinend Dokumente.
Ne, ist Absicht. Später wirst du ja deine selbst erstellten Schaltungen auch unter "Dokumente" und nicht unter "Beispielschaltungen" abspeichern ;)
Wobei ich auch einfach den zuletzt aufgerufenen Pfad in der Konfigdatei speichern kann. Mach ich auch.

Mathias hat geschrieben:Den Ordner Componetes, würde ich noch in den bin-Ordner verschieben.
Das ist eigentlich Absicht, damit man ein Projektverzeichnis hat und von dort aus direkt alles nach Kategorien (binaries, Komponenten, source Code, libraries, ...) sortiert hat.

Mathias hat geschrieben:Bei Leitungen, ist das Symbol bei Vertikal falsch, dargestellt wird es aber richtig.
Oh, da hab ich das thumbnail vegessen zu drehen :lol:

Mathias hat geschrieben:Der Button "Schaltsymbole erstellen", muss das Anchors von akTop auf akButton geändert werden.
Ups, da hab ich wohl was verpennt. Naja, lässt sich ja schnell ändern

Mathias hat geschrieben:Bei mir kommt beim ersten Start "Kondensatoren", auch wen ich nachträglich Diode wähle, kann ich keinen Fehler feststellen.
Liegt daran, dass Windows bei FindAllDirectories() oder FindAllFiles() die Ordner/Dateien alphabetisch sortiert. Linux macht das nicht (probier es gerne mal aus). Ich hab ehrlich gesagt auch nicht verstanden, nach welchen Kriterien das ganze unter Linux sortiert wird :lol:

Ansonsten falls noch irgendwelche Fehler/Verbesserungsvorschläge da sind, immer her damit :D

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von siro »

Hm, komisch bei mir geht das nicht mit den Symbolen :(
Hab es grad nochmal runtergeladen.

LazPlan_Symbole.jpg
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von Mathias »

Liegt daran, dass Windows bei FindAllDirectories() oder FindAllFiles() die Ordner/Dateien alphabetisch sortiert. Linux macht das nicht (probier es gerne mal aus). Ich hab ehrlich gesagt auch nicht verstanden, nach welchen Kriterien das ganze unter Linux sortiert wird :lol:

Ich denke mal, da liegt am OS.

So könntest du dies umgehen,

Code: Alles auswählen

var  sl: TStringList;  
...
 
  // Kategorien einlesen
  sl := FindAllDirectories(ObjectPath + 'objects' + PathDelim, False);
  sl.Sort;
  CB_Categories.Items := sl;
  sl.Free;
 
  //  FindAllDirectories(CB_Categories.Items, ObjectPath + 'objects' + PathDelim, false);


Leider geht CB_Categories.Items.Sort nicht, darum dieser Umweg.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von Mathias »

Noch ein Tip, für das Home-Directory

Code: Alles auswählen

  {$ifdef mswindows}
  CfgPath := IncludeTrailingPathDelimiter(GetEnvironmentVariable('appdata')) + 'LazPlan' + PathDelim;
  {$else}
      CfgPath := IncludeTrailingPathDelimiter(GetEnvironmentVariable('HOME')) + '.LazPlan' + PathDelim;
  {$endif}
  CfgPath := IncludeTrailingPathDelimiter(GetUserDir) + '.LazPlan' + PathDelim; // neu

Hast du dies bewusst gemacht, das LazPlan unter Linux eine versteckte Datei ist ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

siro hat geschrieben:Hm, komisch bei mir geht das nicht mit den Symbolen :(
Hab es grad nochmal runtergeladen.

LazPlan_Symbole.jpg

Das kann ich mir nicht erklären. Vor allem, weil es bei Mathias und mir funktioniert :(

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: LazPlan v0.0.1.1 - Schaltplansoftware

Beitrag von compmgmt »

Mathias hat geschrieben:
Liegt daran, dass Windows bei FindAllDirectories() oder FindAllFiles() die Ordner/Dateien alphabetisch sortiert. Linux macht das nicht (probier es gerne mal aus). Ich hab ehrlich gesagt auch nicht verstanden, nach welchen Kriterien das ganze unter Linux sortiert wird :lol:

Ich denke mal, da liegt am OS.

So könntest du dies umgehen,

Code: Alles auswählen

var  sl: TStringList;  
...
 
  // Kategorien einlesen
  sl := FindAllDirectories(ObjectPath + 'objects' + PathDelim, False);
  sl.Sort;
  CB_Categories.Items := sl;
  sl.Free;
 
  //  FindAllDirectories(CB_Categories.Items, ObjectPath + 'objects' + PathDelim, false);


Leider geht CB_Categories.Items.Sort nicht, darum dieser Umweg.
Gute Idee. So wäre es überall einheitlich. Werde ich einbauen.

Mathias hat geschrieben:Noch ein Tip, für das Home-Directory

Code: Alles auswählen

  {$ifdef mswindows}
    CfgPath := IncludeTrailingPathDelimiter(GetEnvironmentVariable('appdata')) + 'LazPlan' + PathDelim;
  {$else}
      CfgPath := IncludeTrailingPathDelimiter(GetEnvironmentVariable('HOME')) + '.LazPlan' + PathDelim;
  {$endif}
  CfgPath := IncludeTrailingPathDelimiter(GetUserDir) + '.LazPlan' + PathDelim; // neu

Hast du dies bewusst gemacht, das LazPlan unter Linux eine versteckte Datei ist ?
GetUserDir() kannte ich noch gar nicht. Danke.
Nur der Ordner, der die Konfigurationsdatei enthält, ist unsichtbar. Alles andere ist sichtbar. Aber ja, ist bewusst so, damit der Nutzer nicht durch den Ordner gestört wird (wobei das die wenigsten Linux-Nutzer stören dürfte, das ganze ist eher für Leute, die sich nicht mit dem System auseinandersetzen wollen)

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Antworten