Thread Aber wie soll man da anfangen? (7 answers)
Opened by Gast at 2004-08-28 01:21

Strat
 2004-08-28 22:43
#42596 #42596
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe gerade eine geschrieben (~7000 Zeilen), und da habe ich den Code in mehrere Module aufgeteilt:
x) abrechnung.pl -> Hauptprogramm, macht eigentlich kaum was
x) Abr/Config.pm -> Konfiguration
x) Abr/Data.pm -> Kommunikation mit der Datenbank (in meinem Fall SQLite)
x) Abr/Navigation.pm -> ich habe eine relativ komplizierte Navigation, so eine Art erweitertes und schoeneres Tk::Notebook, und den Code habe ich hier hereingepackt
x) Abr/Forms.pm -> Hier werden die ganzen Frames und sonstige Widgets erzeugt (mit Ausnahme der Navigation)
x) Abr/Callbacks.pm -> Wenn irgendwo ein Callback auftritt (z.B. -command), dann steht der Code dazu dort.

Abr/Export.pm -> Da eine der Hauptkomponenten ein Export aus der Datenbank ist (mit vielen Konvertierungen), habe ich es in ein eigenes Modul gepackt.

x) ... und noch ein paar weitere

Nebenbei: es ist bei eigenen Modulen besser, einen Hauptnamensraum (hier Abr) zu waehlen, der nicht von irgendwelchen CPAN-Modulen verwendet werden. Und dann das Verzeichnis ./Abr, in dem die Module liegen, dann mit
Code (perl): (dl )
1
2
use FindBin;
use lib "$FindBin::Bin";


Da viele Widgets irgendwie immer dasselbe Aussehen haben sollen, habe ich dafuer eigene Subroutinen geschrieben, die da Standardwerte setzen, z.B.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
sub Label {
my ($parent, $text, %options) = @_;
$parent->Label(-text => $text, -background => &Abr::Config::BACKGROUND,
-padx => 2, -pady => 2, %options);
} # Label
# ------------------------------------------------------------
sub LabelTied {
my ($parent, $textvar, %options) = @_;
$parent->Label(-textvariable => $textvar, -background => &Abr::Config::BACKGROUND,
-padx => 2, -pady => 0, %options);
} # LabelTied


Und wenn in bestimmte Entry's nur bestimmte Werte in einer gewissen Maximallaenge eingegeben werden duerfen, kann ich dir mein Modul Tk::EntryCheck ans Herz legen, das nur gewisse Zeichen zulaesst... (dieses Modul ist im Rahmen dieses Projektes entstanden)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Aber wie soll man da anfangen?