Schrift
[thread]5173[/thread]

Feldfarbe von BrowseEntry mit readonly



<< >> 5 Einträge, 1 Seite
Herr_Cisie
 2006-04-13 15:19
#45344 #45344
User since
2006-04-10
17 Artikel
BenutzerIn
[default_avatar]
Hi!

Schon wieder eine Frage, dieses Mal zu BrowseEntry:

Ich hab BrowseEntrys, die alle folgendermassen definiert sind:
Code: (dl )
1
2
3
4
$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?
Crian
 2006-04-13 17:59
#45345 #45345
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Vielleicht hilft -colorstate weiter?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Herr_Cisie
 2006-04-13 18:28
#45346 #45346
User since
2006-04-10
17 Artikel
BenutzerIn
[default_avatar]
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?
Matze
 2006-04-13 19:42
#45347 #45347
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
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:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
    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:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
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
ptk
 2006-04-13 22:46
#45348 #45348
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
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:

Code: (dl )
        $entry->configure( -state => $Tk::VERSION >= 804 ? 'readonly' : 'disabled' );

in Zeile 409 von BrowseEntry.pm
<< >> 5 Einträge, 1 Seite



View all threads created 2006-04-13 15:19.