Thread Mausrad mit Scrollbalken verbinden: wie? (9 answers)
Opened by pktm at 2005-01-14 00:24

pktm
 2005-01-17 22:11
#42767 #42767
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/Perl/bin/perl

use strict;
use warnings;
use Data::Dumper();
use Data::Serializer;
use Tk;
use DirHandle;
use DBI;
use DBD::MySQL;
use Tk::Dialog;
use Tk::DialogBox;
use Tk::Font;
use Tk::ToolBar;
use Tk::FileSelect;
use FindBin qw($Bin);
use FileHandle;
use UNIVERSAL qw(isa);


my $mw = MainWindow->new(
-width=>800,
-height=>600,
);

main::getScreen_ConfigDumpEdit($mw);

MainLoop;

sub getScreen_ConfigDumpEdit {
my $mw = shift;
$mw->packPropagate(0); # don't resize

# speichern ob eine Datei geöffnet wurde
my $isOpen = 0;
my $openFile = undef;

# create the text-widget
my $text = $mw->Scrolled('Text',
-wrap => 'none',
-borderwidth => 3,
-relief => 'groove',
-scrollbars => 'se',
-height => '20',
-width => 80,
);

# create ToolBar (open & save-dialog)
my $tb = $mw->ToolBar(qw/-movable 0 -side top/);
$tb->ToolButton(
-image => 'fileopen22',
-tip => 'back',
-command =>
sub{
my $wantedFile = main::getFileDialog("$Bin/config");
my $dataStructure = main::restoreData($wantedFile);
main::insertText($text,$dataStructure);
$isOpen = 1;
$openFile = $wantedFile;
},
);
$tb->ToolButton(
-image => 'filesave22',
-tip => 'back',
-command =>
sub{
if( $isOpen ){
main::storeConfig($openFile,$text->get("1.0", "end"));
$text->delete("1.0","end");
my $d = $mw->DialogBox(-title => "Gesichert", -buttons => ["OK"]);
$d->add("label", 'Ihre Änderungen wurden gesichert.');
$d->Show();
}else{
my $d = $mw->DialogBox(-title => "Keine Datei offen", -buttons => ["OK"]);
$d->add("label", 'Sie müssen zuerst eine Datei öffnen!');
$d->Show();
}
},
);

# alles zusammenpacken
$text->pack(); #-side=>'left', -anchor=>'n'

# if( $mw->width() < $screen->width ){ put scrollbars on $mw

} # /getScreen_ConfigDumpEdit

sub getFileDialog {
my $startDir = shift || $Bin;
$startDir = $Bin unless -e $startDir;
my $FSref = $mw->FileSelect(-directory => $startDir);
# print "FileDialog selected: ".$FSref->Show() . "\n";
return $FSref->Show();
} # /getFileDialog

sub getFilec {
my $file = shift or return 'keine Datei angegeben';
return "Datei $file existiert nicht" unless -e $file;
my @filec = (); # where to store the filecontent
my $fh = new FileHandle;
if ($fh->open("< $file")) {
@filec = $fh->getlines();
$fh->close;
}
return \@filec;
} # /getFilec

sub insertText {
my $text = shift or die 'Kein Textfeld übergeben';
my $data = shift or die 'kein Text übergeben';

# print "insertText\n";

# clear Text
$text->delete("1.0","end");

# insert2Text
$text->insert("end", Data::Dumper::Dumper($data));

} # /insert Text

sub restoreData {
my $file = shift or die 'xml2data: keine Datei übergeben!';
unless( -e $file or -e $Bin.$file ){
die "restoreData: Datei existiert nicht!";
}
my $obj = Data::Serializer->new();
return $obj->retrieve($file);
} # /restoreData

sub storeConfig {
my $file = shift or die 'storeConfig: Keine Datei übergeben!';
my $data = shift or die 'storeConfig: keine Daten übergeben';

my $obj = Data::Serializer->new();
my $fh = new FileHandle "> $file";
if (defined $fh) {
$obj->store($data,$fh);
$fh->close;
}
return 1;
}


Hoffe, der ist lauffähig.
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Mausrad mit Scrollbalken verbinden: wie?