User since
2006-04-10
17
Artikel
BenutzerIn
Hi!
Schon wieder eine Frage, dieses Mal zu BrowseEntry:
Ich hab BrowseEntrys, die alle folgendermassen definiert sind:
$frmDatR4->BrowseEntry(-width => 25,
-textvariable => \$uplRegeln,
-state => 'readonly',
-readonlybackground => "white")
Leider ist das Feld dann immer noch grau, und nicht weiß...
Mit "-background => "white"" erscheint ein dünner weißer Rand um Feld und 'Suchknopf', also auch nicht wirklich das was ich will ;-)
Hat jemand noch einen Tip?
User since
2006-04-10
17
Artikel
BenutzerIn
Hallo Crian,
vielen Dank für Deine Antwort!
Hab die Option gesehen, und sie konnte mit meinen Testeinträgen nix anfangen ("normal", "white", "on", "off")...
Hab gerade mal gegoogelt und nix brauchbares gefunden - ausser andere User, die sich auch wundern, für was es gut sein soll ;-)
>Greetings,
>
> I developed JBrowseEntry (see CPAN) from BrowseEntry. I too
>recall this option as not being very useful. I wasn't sure what it
>did, but left it in JBrowseEntry. I seem to recall it forcing the
>text box to gray when the resto of the background palette was some
>other color - probably a Motif legacy? Anyway, I found this in the
>comments From my JBrowseEntry code from the time I was working on it:
>
>#THIS APPEARS TO FORCE THE TEXT BACKGROUND TO GREY, IF THE PALETTE
>#IS SOMETHING ELSE BUT USER HAS NOT SPECIFIED A BACKGROUND.
>
>
>
>Hope this helps.
>
>Jim Turner
Kannst Du mir nen Tip geben, wie ich es einsetz, oder war das auch eher ein Schuß ins Blaue von Dir?
User since
2005-08-29
222
Artikel
BenutzerIn
Also, du musst auch noch die Funktion state() aufrufen.
Zuerst solltest du aber in BrowseEntry.pm folgende veränderungen vornehmen:
In der subroutine _set_edit_state:
if ($w->cget( '-colorstate' )) {
my $color;
if( $state eq 'normal' ) { # Editable
$color = '#ffffff';
} else { # Not Editable
$color = $w->cget( -background ) || 'lightgray';
}
# $entry->Subwidget( 'entry' )->configure( -background => $color );
$entry->configure( -background => $color );
}
Danach, der Aufruf in deimen Skript:
my @arr = qw(Hallo sie da !!!!);
$be = $mw -> BrowseEntry
(-background => "white",
-label => "Test:",
-command => "exit",
-state => "readonly",
-colorstate => "normal",
-choices => \@arr)->pack
(-pady => 10,
-padx => 10);
$be -> state ("normal");
So sollte es funktionieren.
MfG. Matze
Mit freundlichen Grüßen: Matze
User since
2003-11-28
3645
Artikel
ModeratorIn
Tk::BrowseEntry wurde in Tk4*-Zeiten entwickelt, als es noch keinen readonly-State für Tk::Entry-Widgets gab. Deshalb wird intern noch immer disabled verwendet. Und auf disabled hat -readonlybackground keinen Einfluss. Der beste Fix wäre also der hier:
$entry->configure( -state => $Tk::VERSION >= 804 ? 'readonly' : 'disabled' );
in Zeile 409 von BrowseEntry.pm