User since
2006-01-27
2
Artikel
BenutzerIn
Hallo,
habe schon das ganze Forum durchforstet, bin aber auf keine Lösung gestoßen. Folgendes Problem habe ich (ich arbeite mit Perl/Tk unter Win2000):
Ich habe ein MainWindow und einige zugehörige Toplevel erzeugt. Nun möchte ich, dass die Toplevel NICHT auf dem ganzen Bildschirm frei verschiebbar sind, sondern lediglich im MainWindow. Die Toplevel sollen also in irgendeiner Weise ins MainWindow eingebettet werden. Habe schon verschiedene Ansätze probiert, u.a. mit der -container- und -use-Option, klappt aber nicht. Ist dies überhaupt möglich, und wenn, wie?
Danke im Voraus!
Gruß
Thorsten
User since
2003-08-04
14371
Artikel
ModeratorIn
Schau Dir mal
Tk::MDI an. Das sollte Dir eigentlich helfen (MDI steht fuer Multiple Document Interface)...
User since
2006-01-27
2
Artikel
BenutzerIn
Habe MDI gerade ausführlich getestet, das ist genau das, was ich wollte! Danke vielmals!
Thorsten
User since
2003-08-04
14371
Artikel
ModeratorIn
Kannst Du vielleicht ein kleines Skript posten, was grundsaetzlich den Einsatz von den MDI zeigt?? Die Frage nach den MDI ist naemlich schon ein paarmal aufgetaucht...
Sicher... hier ist ein kleines Beispiel mit zwei Unterfenstern.
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
use Tk;
use Tk::MDI; # implement MDI module
use strict;
my $MW = MainWindow->new;
$MW->configure(-title => "Testfenster");
#
# build menubar
#
my $menubar = $MW->Menu;
my $menu_file = $menubar->cascade(-label => "~File", -tearoff => 0);
my $menu_edit = $menubar->cascade(-label => "~Edit", -tearoff => 0);
my $menu_help = $menubar->cascade(-label => "~Help", -tearoff => 0);
$menu_file->command(-label => 'Exit',
-command => sub { $MW->destroy() } );
$menu_edit->command(-label => 'does nothing');
$menu_help->command(-label => 'does nothing');
$MW->configure(-menu => $menubar);
#
# convert MainWindow into MDI window
# "window" menu entry will be cascaded into existing menu structure
#
my $MDI = $MW->MDI(-style => 'win32',
-background => 'white');
#
# create two child windows
# child windows can be treated as "normal" widgets
#
my $child1 = $MDI->add(-titletext => 'child window');
my $child2 = $MDI->add(-titletext => 'child window');
$child1->Button(-text => "does nothing")->pack;
my $listbox = $child2->Listbox(-width => 200, -height => 100)->pack;
$listbox->insert(1,'entry 1');
MainLoop;
Grüße
Thorsten