Schrift
[thread]10126[/thread]

Probleme mit Positionierung von Feldern (Seite 2)



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
ptk
 2007-08-28 22:41
#98796 #98796
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich glaube, wenn man registriert ist, kann man mehr einstellen.
Antworten mit Zitat
worstcase
 2007-08-29 22:06
#98857 #98857
User since
2007-08-29
6 Artikel
BenutzerIn
[default_avatar]
Hallo,

hier nochmals mein Code.
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
#!/usr/bin/perl -w
use Tk;
use strict;
use warnings;
use Tk::Pane;
use Tk::Dialog;
#use TK::Font;
use IPC::SysV qw(IPC_PRIVATE IPC_RMID S_IRWXU);



# Globalvariablen #
my $top;
my $labeltext = "Guten Morgen";
my ($max_width,$max_height);
my $topscrollbar;
my $status = 'Status AUS';
my $id=0;
my $AnzahlVar;
my $mpi;
my $mpiadr;
my $mpitext = 'MPI-Adresse';
my @format;
my @istwert;
my @mem;
my $textblink=0;
my $idafter;
my $status_Button;
#-------------------------------------------------------------------------------------------------------#

$top = new MainWindow;

$top->geometry("630x300+100+20");

$top->protocol('WM_DELETE_WINDOW', \&ExitApplication);

$top->title ("Variableneditor");

my $menframe = $top->Frame()->pack(-side => "top", -fill => "y", -expand => 0,);

$top->resizable(0,0);


my $bezframe =$top->Frame(-borderwidth => 5)-> pack(-fill=> 'both', -anchor => 'nw');


my $frame = $top->Scrolled('Pane', -scrollbars => 'oe');
$frame->Frame();
$frame->pack(-side => 'top', -fill=> 'both', -expand => '1', -anchor => 'nw');


my $toplevel = $top->toplevel; # get $TOP's Toplevel widget reference
my $menubar = $toplevel->Menu(-type => 'menubar');
$toplevel->configure(-menu => $menubar);

my $f = $menubar->Cascade(qw/-label ~Datei -tearoff 0 -menuitems/ =>
[
[Button => 'oeffnen ...', -command => [\&oeffnen, 'oeffnen'],-image => $toplevel->Getimage("openfile"),-compound=> "left"],
# [Button => 'neu', -command => [\&neu, 'neu'], -image => $toplevel->Getimage("file"), -compound=> "left"],
# [Button => 'speichern', -command => [\&menus_error2, 'speichern']],
# [Button => 'speichern als ...',-command => [\&menus_error2, 'speichern als..']],
[Separator => ''],
# [Button => 'Setup ...', -command => [\&menus_error2, 'Setup']],
# [Button => 'Drucker ...', -command => [\&menus_error2, 'Drucker']],
[Separator => ''],
[Button => 'beenden', -command => [\&ExitApplication,'beenden']],
]
);

MainLoop;

# ---------------------------------------------------------------------------------------------------------------------------------------------------#

sub oeffnen {

my $filename;
my $filetypes = [ ['template-Datei', ['template*'] ] ];
my @name;
my @nummer;
my $i=0;
my $x=0;
my $zeile=2;
my @fileinhalt;
my $uName;
my $uNummer;
my $uMem;
my $uFormat;
my $uIstwert;

my @formatart = ('DEZIMAL','REAL', 'HEX', 'BIN', 'ASCII');
my @memart = ('DWORD','DINTEGER','WORD','INTEGER','BYTE');
my $bgcolor = 0;


if ($status_Button == undef)
{
$status_Button = $menframe-> Button (-textvariable => \$status ,-command => [\&status_ein_aus])-> pack(-side => 'left');

$mpiadr = $menframe->Label(-textvariable => \$mpitext,-width=> 30,
-font => $top->Font(-family => 'Verdana',-size => 16, -weight => 'bold', -underline => 0),
)-> pack(-side => 'left');
}

$filename = $toplevel->getOpenFile(-defaultextension => '',-filetypes => $filetypes,-title => 'oeffnen template-dateien...');

$_ = $filename;

/_(\d{1,3})$/;

$mpi = $1;

open(DATEI, '<', $filename) or die "Datei kann nicht geoeffnet werden: $!\n";


@fileinhalt = <DATEI>;

foreach (@fileinhalt)
{
chomp;

if ($bgcolor eq 'white')
{
$bgcolor = 'lightgray';
}
else
{
$bgcolor = 'white';
}

$name[$i] = $frame->Label( -text => $_,
-relief => 'sunken',
-width => '12',
-bg => $bgcolor,
-borderwidth => '1',
-anchor => 'e',
-padx => '2',
-pady => '2',
-font => $top->Font(-family => 'Verdana',-size => 12, -weight => 'bold'),
)->grid(-row=>$zeile, -column=>0, -padx => '2',);


$nummer[$i] = $frame->Label(-text => $i,
-relief => 'sunken',
-width => '5',
-bg => $bgcolor,
-borderwidth => '1',
-padx => '2',
-pady => '2',
-font => $top->Font(-family => 'Verdana',-size => 12, -weight => 'bold'),
)->grid(-row=>$zeile, -column=>1, -padx => '2');

$mem[$i] = $frame->BrowseEntry(-relief => 'sunken',
-command => [\&tausche_mem,$i],
-width => '10',
-bg => $bgcolor,
-font => $top->Font(-family => 'Verdana',-size => 14,),
)->grid(-row=>$zeile, -column=>2, -padx => '2');

$format[$i] = $frame->BrowseEntry(-relief => 'sunken',
-command => [\&tausche_format,$i],
-width => '9',
-bg => $bgcolor,
-font => $top->Font(-family => 'Verdana',-size => 14,),
)->grid(-row=>$zeile, -column=>3, -padx => '2');



foreach (@memart) {$mem[$i]->insert('end', $_,);}

$mem[$i]->{MY_VAR} = $memart[0]; # 1 Zeile vorwählen
$mem[$i]->configure(-variable => \$mem[$i]->{MY_VAR});

foreach (@formatart) {$format[$i]->insert('end', $_,);}

$format[$i]->{MY_VAR} = $formatart[0]; # 1 Zeile vorwählen
$format[$i]->configure(-variable => \$format[$i]->{MY_VAR});


$istwert[$i] = $frame->Label(-text => '....',
-relief => 'ridge',
-borderwidth => '1',
-width=> 20,
-bg => $bgcolor,
-anchor => 'w',
-padx => '2',
-pady => '2',
-font => $top->Font(-family => 'Verdana',-size => 12, -weight => 'bold'),
)->grid(-row=>$zeile, -column=>4, -padx => '2');

$zeile++;
$i++;
}


# Anzahl der Veriablen/Zeilen abspeichern
$AnzahlVar = $i;

$uName = $bezframe->Label(-text => 'Name', -width=> 4,
-font => $top->Font(-family => 'Verdana',-size => 14, -weight => 'bold',-underline => 1),
)->grid(-row=>1, -column=>0);

$uNummer = $bezframe->Label(-text => 'Nr', -width=> 5,
-font => $top->Font(-family => 'Verdana',-size => 14, -weight => 'bold',-underline => 1),
)->grid(-row=>1, -column=>1);

$uMem = $bezframe->Label(-text => 'Speicher', -width=> 10, -anchor => 'w',
-font => $top->Font(-family => 'Verdana',-size => 14, -weight => 'bold',-underline => 1),
)->grid(-row=>1, -column=>2);

$uFormat = $bezframe->Label(-text => 'Format', -width=> 9, -anchor => 'w',
-font => $top->Font(-family => 'Verdana',-size => 14, -weight => 'bold',-underline => 1),
)->grid(-row=>1, -column=>3);

$uIstwert = $bezframe->Label(-text => 'Istwert', -width=> 20, -anchor => 'w',
-font => $top->Font(-family => 'Verdana',-size => 14, -weight => 'bold',-underline => 1),
)->grid(-row=>1, -column=>4);

$mpitext= 'MPI-Adresse: '.$mpi;
$mpiadr-> update;

}


Ich hoffe der Sourcecode ist etwas leserlicher.

Danke
worstcase
Antworten mit Zitat
ptk
 2007-08-30 02:44
#98867 #98867
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Kannst du vielleicht noch eine Beispiel-template*-Datei bereitstellen?
Antworten mit Zitat
worstcase
 2007-08-30 10:38
#98874 #98874
User since
2007-08-29
6 Artikel
BenutzerIn
[default_avatar]
Morgen,

ptk+2007-08-30 00:44:34--
Kannst du vielleicht noch eine Beispiel-template*-Datei bereitstellen?


Es ist nur eine Textdatei z.B. "template_mpi_10"
in der pro Zeile ein Name steht.

Messwert_1
Temperatur
Otto
Hans
usw

Danke
worstcase
Antworten mit Zitat
ptk
 2007-08-31 00:37
#98902 #98902
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Eine Möglichkeit wäre, die Header-Labels weder mit grid or pack zu platzieren, sondern place zu verwenden,
welches bei jedem Resize (erzeugt ein <Configure>-Event) neu berechnet wird. Also die grid(...)-Aufrufe bei
den Header-Labels ersatzlos entfernen und nach der Erzeugung derselben die folgenden Zeilen einfügen:
Code: (dl )
1
2
3
4
5
6
7
8
$bezframe->GeometryRequest($top->width, $uName->reqheight); # Platz für Frame reservieren
$top->bind('<Configure>' => sub {
$uName->place(-x => $name[0]->rootx - $top->rootx, -y => 0);
$uNummer->place(-x => $nummer[0]->rootx - $top->rootx, -y => 0);
$uMem->place(-x => $mem[0]->rootx - $top->rootx, -y => 0);
$uFormat->place(-x => $format[0]->rootx - $top->rootx, -y => 0);
$uIstwert->place(-x => $istwert[0]->rootx - $top->rootx, -y => 0);
});

Du könntest auch versuchen, den Inhalt des Panes oben rechts zu verankern. Ich bin mir nicht sicher, wie das geht, eventuell mit der -sticky-Option. Siehe manpage.

Oder du verwendest Widgets, die eine scrollbare Tabelle+Header schon so anzeigen können. Tk::Table, Tk::HList und CPAN:Tk::TableMatrix sollten dazu in der Lage sein.
Antworten mit Zitat
worstcase
 2007-08-31 10:31
#98910 #98910
User since
2007-08-29
6 Artikel
BenutzerIn
[default_avatar]
Hallo und danke für die Antwort,

ich habe weder das eine noch das andere benutzt.
Was kannst du empfehlen.
Ich habe mir mal Tk::Table angesehen und das sieht am einfachsten aus, oder ??

Bitte um Vorschläge bzw. Erfahrungen.

Danke
worstcase
Antworten mit Zitat
ptk
 2007-09-01 04:00
#98955 #98955
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Tk::Table sieht einfach aus, funktioniert aber nur gut, wenn man relativ wenig Zellen hat (vielleicht maximal 10x10 oder 20x20). Wenn es mehr wird, ist es zu langsam.

Tk::HList ist umständlicher zu handhaben, besonders, wenn man etwas anderes als nur Text in die Zellen packen will.

Tk::TableMatrix habe ich kaum benutzt. Das ist das Modul, das einem echten Spreadsheet a la Excel am nächsten kommt.
Antworten mit Zitat
worstcase
 2007-09-01 12:51
#98962 #98962
User since
2007-08-29
6 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich etwas "Table" code in mein Projekt eingefügt, jedoch sehe ich kein widget

Hier der Code
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
my $number = 5;
my $row;
my $col;

my $table = $menframe->Table(-rows => $number,
-columns => $number,
-scrollbars => 'anchor',
-fixedrows => $number,
-fixedcolumns => $number,
-takefocus => 1);

my $widget = $table->Button(-text => 'Quit',-command => sub{exit 0});
my $old = $table->put(1,1,$widget);
$old = $table->put(1,2,"Text1"); # simple Label
$widget = $table->get(1,1);

$table->see($widget);

$widget = $table->Button(-text => 'Quit',-command => sub{exit 0});
$old = $table->put(2,1,$widget);
$old = $table->put(2,2,"Text2"); # simple Label
$widget = $table->get(2,1);

$table->see($widget);


my $cols = $table->totalColumns;
my $rows = $table->totalRows;

$table->see(1,1);


Wo liegt hier der Fehler ?

Danke
worstcase
Antworten mit Zitat
ptk
 2007-09-01 14:50
#98963 #98963
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Und ich sehe kein pack() oder grid() vom Table.
Antworten mit Zitat
worstcase
 2007-09-01 14:55
#98964 #98964
User since
2007-08-29
6 Artikel
BenutzerIn
[default_avatar]
Oh,

peinlichkeit lass nach.

Danke
worstcase
Antworten mit Zitat
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2007-08-18 20:29.