kurze Aktualisierung aus aktuellem Anlass. 8) Ob sich das nun für ganze Projekte, DLLs usw. verwenden läßt ? Keine Ahnung. Um das herauszufinden hilft wohl nur Rechtsklick und nachsehen, wo und wann im Kontextmenü "der Objektablage hinzufügen" auftaucht. Oder einen ganz anderen Ansatz suchen. Alternativ heißt es tief graben, um was darüber zu finden, aber sehr tief.
jetzt noch neues konkretes (kurzes) Beispiel, wie ich es gemacht habe, Rest siehe Anfang :
Nach einem Jahr ist eine Auffrischung auch angebracht. Ganz normal anfangen neues Projekt -> Form ist da. In dieser Form habe ich die Tastatur zuererst mal "behandelt". Also OnKeyPress/OnKeyDown. Z.B. auch mit Esc Form schließen. Dann ab in die Objektablage damit, z.B. unter dem Namen KeyForm.
Weiter, die nächste Form soll ein Datum erhalten und die Nr. der Workstation oben rechts in Form-Ecke. Also neu -> andere. KeyForm gesucht und
unbedingt die Radiogroup unten auf
inherited setzen !! Ich pappe 2 Labels drauf, ändere im
OI die Farben, daß es schöner aussieht, natürlich die Namen usw. Im Formshow werden dann gleich noch die Koordinaten der zwei Labels in Abhängigkeit der Formgröße gesetzt (zur Laufzeit), also so :
Delphi-Quellcode:
lblDatum.Left := width - (16 * (lblDatum.Font.Size));
lblStationNr.Left := lblDatum.Left;
Wieder ab ins Repository unter KeyFormLabel oder so. Ab jetzt gehts Schlag auf Schlag, nächste Form davon ableiten. Diese hat die gewünschten Tastaturreaktionen und das Datum und die StationNr stehen immer an der gleichen Stelle, egal wie groß die Form wird.
Gut machen wir mal komplette Lagerverwaltung mit einer Din A 4 Seite Source.
Zwischenzeitlich sind noch mehr Forms als Vorfahr da. Es ist dafür gesorgt, daß es folgende gibt : zusätzlich zu der zuletzt erwähnten hat die Form eine CheckBox "alphabetisch sortieren" eine GroupBox mit "von Nr." und "bis Nr." eine für Ausgabe "Bildschirm", "Drucker". usw. Für die Lagerverwaltung wäre noch das zu gebrauchen : eine Checkbox "Bestände = 0 nicht anzeigen". Das
und nur das wird von Hand auf die Form draufgelegt, alles andere ist schon da ! Auch die nichtvisuellen Sachen, wie die Tastaturevents.
Gut, irgendwann vorher hat einer der Vorfahren noch ein Stringgrid zur Anzeige verpaßt gekriegt. Mitsamt eigenem OnDrawCell usw. Dieses hat aber nun keine Ahnung von den Daten, die angezeigt werden sollen, aber bereits dort wurde eine Procedure (als virtual) im
protected Abschnitt eingeführt, die bleibt aber da noch leer !! Nennen wir sie "ErmittleDaten" Das ist alles was in der Lagerverwaltung gemacht werden muß : ein
SQL-Statement anhand der gemachten Einstellungen (Checkbox angeklickt oder nicht ? usw.) zusammenzubauen. Per
override erstzt man dann die vorher leere Prozedur. Eventuell muß noch die Spaltenanzahl des Grids angepaßt werden oder sonstiger Kleinkram.
Ok, das wars. Jetzt brauchen wir noch eine Artikelliste. Wir nehmen denselben Vorfahr wie den von der Lagerverwaltung. Bestand = 0 interessiert da nicht, aber wir wollen entweder Verkaufs oder Einkaufspreis. Also muß andere Groupbox her. Zusätzlich soll das Datum oben in der Ecke aber unbedingt grün werden, weil das schöner ist.
Tja, die Datumfarbe ändern wir schnell im
OI. Die Prozedur ErmittleDaten wird an andere Tabelle angepaßt und fertig.
Edit : fast vergessen 8)
Man muß immer daran denken, die Forms mit "dem Projekt hinzufügen" wirklich dem Projekt mitzuteilen, daß die Form gebraucht wird ! Einfaches Erweitern der Uses Liste genügt normalerweise nicht. Dann tauchen Fehlermeldungen auf wie : "Vorfahr von FormXY nicht gefunden". Da Delphi das allerdings dann auch in die
DPR reinschreibt, und eventuell die Reihenfolge der sichtbaren Forms dadurch geändert wird ist es
IMHO ratsam, grundsätzlich alle Forms außer der Hauptform und den Datenmodulen erst zur Laufzeit zu erzeugen.
Trotzdem müssen sie erst dem Projekt hinzugefügt werden, um sie dann wieder mit Projekt -> Options auf nicht automatisch erzeugen zu setzen. Delphi macht da noch was mehr, als nur die Uses Liste zu ändern. In diesem Zusammenhang noch das :
Zitat von
Borland:
...D2005 stores the repository information in an
XML file
....\Borland\
BDS\3.0\Objrepos\BorlandStudioReposit ory.xml
Older versions use the delphi32.dro file in the Delphi BIN directory for
this purpose. It is a text file...
Ich hatte bei Borland nachgefragt, was denn bei D2005 mit dem Repository sei. Wegen fast keinerlei Äußerungen über die Geschichte (zumindest in keinem deutschen Forum war was zu finden, außer dem von mir selber
), hatte ich das dumpfe Gefühl, daß wenn es schon keiner benutzt die das einstampfen.
Da sie sich aber offensichtlich die Mühe gemacht haben, das Ganze sogar in eine
XML Struktur zu stecken, gehe ich eher vom Gegenteil aus.