Autor |
Beitrag |
Bronstein
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Fr 15.12.06 11:48
Hallo,
habe für meinen Betrieb einen Urlaubsplaner machen dürfen. Habe den kompletten Quelllcode im Anhang mitgeschickt.
Die Funktionsweise ist grob im Hilfe Menü erkärt.
Ziel ist es noch, dass man einzelne Zellen im StringGrid1 selektieren kann. Und nicht nur zusammenhängende (sprich mit Hilfe der STRG-Taste).
Wird noch folgen, falls dies überhaupt möglich ist. Wenn jemand eine Idee hat, dann informiert mich.
P.S. der Schichtplaner wurde aber noch nicht in der Praxis getestet, deshalb könnnen noch Bugs auftreten. Er wird bei uns in der Firma aber im Januar 2007 eingeführt.
Falls euch irgendwelche Fehler auffallen, dann gibt mir bescheid.
Noch zur Info das Programm wurde mit Delphi 6 erstellt
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
Zuletzt bearbeitet von Bronstein am Mi 13.02.13 21:26, insgesamt 1-mal bearbeitet
Für diesen Beitrag haben gedankt: wikubili
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 15.12.06 11:56
Du solltest noch ein paar Dinge dazu erläutern:
1. Welche Datenbank wird eingesetzt?
2. Einstellungen für die INI-Datei.
Übrigens musst Du nicht die Dateien mit *.~* mitschicken. Selbst auf *.DCU kann man verzichten in diesem Fall. Das macht die ZIP-Datei etwas schlanker.
Erster Eindruck:
- Übersichtlich
- Die Fortschrittsanzeige wirkt irgendwie sinnlos
- Eingabe ungültiger Jahre möglich
- Feiertagsverwaltung nicht gefunden
- Was macht Button4?
- Schichteintrag ausgewählt: Listenindex überschreitet Maximum
- Abwesend: das selbe
- Bei Auswahl des Monats ist der Aufbau des unteren Grids langsam
- Auch beim Neuzeichnen (Programmwechsel mit alt-tab) wirkt das träge
- Wenn ich im oberen Grid seitlich scrolle (Tastatur), läuft das untere nicht mit.
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Fr 15.12.06 12:37
Die Datenbank ist eine Access DB.
Zu der INI-Datei, es wird doch alles erklärt bei den Fehlermeldungen die kommen, wenn die DB nicht gefunden wurde.
Bei mir funktioniert das mit dem Schichteintrag und Abwesend. Man darf nur keine Zeile auswählen, bei der kein Name vorne steht.
Das mit den Jahren mache ich noch so, dass man nur Jahre auswählen kann, sprich nicht in die CombBocx schreiben darf.
Was meinst du mit Feiertagsverwaltung. Die Feierttage werden vom Programm berechnet. Muss man halt für jedes Bundesland anpassen. Zur Zeit werden die Feierttage für BW berechnet.
Button4 war nur zum Test da, wollte ich noch entfernen.
Das mit dem Scrollen möchte ich auch noch ändern, dass man nur mit Hilfe der Scrollbar Scrollen kann. Ich weiß nur noch nicht wie ich das machen soll
Das mit der Geschwindigkeit nehme ich in Kauf, das dauert halt, da er sämtliche Daten aus der DB holt und diese berechnet.
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 15.12.06 12:49
INI-Datei:
Warum muss denn erst eine Fehlermeldung kommen? Außerdem ist nicht anwenderfreundlich, wenn man die INI-Datei manuell korrigieren muss. Ein kleines Konfigurationsmodul (Auswahl der Datenbank) ist nicht wirklich kompliziert.
Schichteintrag und Abwesend:
Bei mir stehen mehrere Gridzeilen, ohne einen Namen auf dem Bildschirm. Personaldaten sind aber vorhanden. Ist der Fehler vielleicht woanders?
Feiertagsverwaltung:
Es gibt auch Feiertage, die nicht berechenbar sind. Außerdem willst Du wohl nicht für jedes Bundesland eine eigene Unit schreiben, oder?
Scrollen:
Nutz doch das Ereignis TopLeftChange des Grids. Keine Ahnung, ob das wirklich so heißt, aber ich weiß, das es etwas in der Art gibt. Habe ich selbst in einer alten Anwendung für genau so einen Fall genutzt.
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Fr 15.12.06 13:01
Das mit den Feiertagen lasse ich so, der wo den Planer in einem anderen Bundesland nutzen will, muss die Feiertagsberechnung anpassen.
Schichteintrag und Abwesend:
Ja es stehen einige leere Zeilen darin. du darfst nur keine Zeile markieren bei der kein Name drin steht und dann in der Combobox eine Schicht auswählen. Wenn du eine Zelle markierst bei der auch ein Name in der ersten Spalte steht, erscheint kein Fehler. Werde diesen Bug aber noch beheben.
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
|
|
uko
      
Beiträge: 220
Erhaltene Danke: 1
Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
|
Verfasst: Fr 15.12.06 15:47
Hab mal einen kurzen Blick drauf geworfen:
(Entpackt und INI an lokales Verzeichnis angepaßt, so daß DB gefunden wird)
1) Masken schauen sehr schräg aus, wenn auf dem Rechner große Schriftarten aktiviert sind.
2) Die Combos für Schichteintrag und Abwesend liefern bei mir nur 'Listenindex überschreitet Maximum (0)'
3) Da anscheinend bei Start für den aktuellen Systembenutzer ein frischer Eintrag in der INI-gemacht wird (wenn es ihn nicht gibt), warum setzt Du das DB Verzeichnis dann nicht gleich richtig?
4) Masken haben keinen einheitlichen Hintergrund: z.B. 'Urlaub' grau aber 'Abteilung hinzufügen'türkis
5) Sinnvolle Namensgebung für die Units und Objekte! Wenn Du mal nicht mehr in der Firma arbeiten solltest, dann muß dein Nachfolger sich den Code vieleicht anschauen.
HTH,
Ulrich
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Fr 15.12.06 16:30
Hallo,
hab mir das Programm mal kurz angeschaut.
Dabei ist mir auch das langsame Zeichnen des zweiten Stringgrids aufgefallen.
In der OnDrawCell-Prozedur führst Du bei jedem Ereignis( ! eine Zelle wird gezeichnet) die Prozedur Ini_Schreiben aus.
Das heist z.B. bei jedem horizontalen Scrollen um eine Bildschirmbreite ca. 60*9= 540-mal TiniFile > Create, WriteInteger und Free ausgeführt.
Da ist soooooviel Platz zwischen den Grids, setz doch besser einen Splitter zwischen die Grids, dann kann man auch mit einer halbwegs normalen Auflösung damit arbeiten.
Im unteren Grid zeigt er in allen Zellen '0' an?
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Bronstein 
      
Beiträge: 578
Erhaltene Danke: 1
WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
|
Verfasst: Sa 24.02.07 11:01
Hallo, habe jetzt einige Bugs entfernt und zusätzliche Dinge eingefügt. Habe jetzt nicht die aktuellste Version, da ich diese im Geshäft habe. Bei dieser Version ist aber schon einiges neu. Wenn ich im Geschäft mal die Gelegenheit habe, werde ich auch diese Version Online stellen. Hier mal die vorab Version.
Falls euch igrendwelche Bugs auffallen oder ihr habt irgenwelche Verbesserungsvorschläge, dann postet dies bitte.
_________________ Es gibt keine dummen Fragen nur dumme Antworten!!!
Zuletzt bearbeitet von Bronstein am Mi 13.02.13 21:26, insgesamt 1-mal bearbeitet
|
|
cyberax
      
Beiträge: 247
Win XP Pro
Delphi 5 Enterprise
|
Verfasst: Di 27.02.07 22:33
Hallo,
also so einen Planer wollte ich auch mal programmieren, daher habe ich ihn mir mal (flüchtig) angesehen.
Muss dazu sagen, dass ich nur die EXE probiert habe und mit den Quellcode nicht angesehen habe.
Leider ist das mit dem Pfad der DB in der INI Datei immer noch so, dass der Benutzer das von Hand eingeben muss. Wenn die DB sowieso im selben Pfad ist, wie die EXE, dann verwende doch extractfilepath(paramstr(0)).
Viele Fenster (wie zum Beispiel Personen hinzufügen) werden zu kleine dargestellt (mit Scrollbar, was bedeutet, dass ich diese größer ziehen muss. (arbeite mit 1024*768).
Lass doch das Hauptfenster nur dann aktualisieren, wenn auch wirklich Änderungen vorgenommen wurden. So wird das ganze sehr ausgebremst.
Das Fenster Jahreswechsel ließ sich nicht schließen. ?!?
Verstehe ich das richtig, dass schon immer 382 Personen angelegt sind ?!?
Das mal fürs erste
Aber bei allen Fehlern - nicht die Freude am Projekt verlieren!!!
Gruß vodasu
|
|
Hobby-Programmierer
      
Beiträge: 238
Erhaltene Danke: 4
Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
|
Verfasst: Mi 28.02.07 08:21
Moin ...,
Uff,  mich verwundert das du bei dem Codestyle die Übersicht behältst. Du solltest dir angewöhnen, Code den du öfter benötigst in eigene Units, Prozeduren oder Functionen auszulagern. Ich würde zb. alles was mit Inis zu tun hat in eine eigene Unit unterbringen. Das verbessert die Übersichtlichkeit und Fehlersuche ungemein. Und bitte gib den Controls\Komponenten aussagekräftige Namen, man sucht sich echt den Wolf weil man laufend schauen muss was zb ComboBox1 ist
Vom Code her sind mir auf den ersten Blick nur Kleinigkeiten aufgefallen:
Delphi-Quelltext 1:
| FJahr:= StrToInt(FormatDateTime('yyyy',now)); |
kann durch
Delphi-Quelltext
ersetzt werden und das flackern des Grids sollte sich mit
Delphi-Quelltext 1:
| StringGrid.DoubleBuffered |
lösen lassen.
Was ich aber überhaupt net kapier, warum gehst du 2 unterschiedliche Wege beim lesen und schreiben der Ini-Datei?
Aber alles in allem, ein gutes Programm...
LG Mario
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 28.02.07 09:43
Hallo Bronstein! Bronstein hat folgendes geschrieben: | Hallo, habe jetzt einige Bugs entfernt und zusätzliche Dinge eingefügt. Habe jetzt nicht die aktuellste Version, da ich diese im Geshäft habe. Bei dieser Version ist aber schon einiges neu. Wenn ich im Geschäft mal die Gelegenheit habe, werde ich auch diese Version Online stellen. Hier mal die vorab Version. |
Würdest Du bitte immer den Anhang in Deinem ersten Posting aktualisieren? Siehe dazu auch die Regel. Dann wissen unsere User immer wo sie die aktuelle Version finden und müssen sich nicht erst durch einen langen Topic wühlen. Danke!
|
|