Schrift
[thread]4669[/thread]

weitere Funktionalität in Programm einbauen: wie anbieten?



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Crian
 2003-11-14 14:51
#44896 #44896
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Ich habe ein Perl-Tk-Programm, in dem auszugsweise Daten aus Dateien in HListen angezeigt werden.

Klickt man auf eine Datenzeile, so geht ein Fenster auf, in dem man den angeklickten Datensatz editieren kann.

Ich würde jetzt gerne eine elegante Möglichkeit bieten, neue Daten zu erzeugen.

Unter den beiden HLists befinden sich schon Buttons, mit denen man u.a. die beiden Dateien direkt als ganzes in einem Editor bearbeiten kann. Ich könnte nun einfach weitere Buttons einfügen, mit denen man einen einzelnen neuen Satz hinzufügen kann, ohne die ganze Datei zu bearbeiten.

Aber vielleicht gibt es ja noch schickere Methoden, etwa über Rechtsklick in den HList-Bereich ein Popup-Menü öffnen zu lassen, in dem man "neu" auswählen kann...

Oder gibt es noch weitere Ideen?

Was meint ihr, wie ich das lösen sollte?
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
esskar
 2003-11-14 17:42
#44897 #44897
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
mit rechts klick ist in Hlist etcpp. kann nur ein zustätzliches feature sein, weil sowas muss der user erstmal erraten, dass es so geht...

du könntest unter der hlist 2-d buttons machen...
okay, was versteh ich unter 2-d buttons... :)

es gibt drei [vier] buttons:
a) New
b) Edit
[x) View]
c) Delete

wenn man direkt auf einen der buttons klickt, gilt dies dann genau für einen eintrag...
wenn man auf den kleinen pfeil, auf dem button klickt, kein ein menu auf, in dem man die gleiche funktion auf die gesamte datei anwendet...

was hälst du davon?
Crian
 2003-11-17 12:58
#44898 #44898
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
kleiner Pfeil? Du meinst ein Button und ein kleiner Button mit einem Pfeil daneben pro Funktionalität?

Klingt schonmal interessant...
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
esskar
 2003-11-17 13:07
#44899 #44899
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Crian
 2003-11-17 13:46
#44900 #44900
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Ah, dacht ich mir... mal sehen... ich hab jetzt übergangsweise für jede Funktionalität einen extrabutton, damit sieht das Programm aber völlig überfrachtet aus.

Ich muss mich mal schlau machen, wie man so einen Dropdown-Button in Tk macht (hab mein Tk-Buch gerade nicht hier...).
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
coax
 2003-11-18 00:18
#44901 #44901
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Hi Crian,
kannst ja erstmal das hier nehmen, hab ich eben zusammengebaut, nur die Position des Menues sollte man etwas besser machen.

Hauptprogramm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use Tk;
use Tk::PopupButton;

my $mw = new MainWindow;

my $menu = [[ 'command' => 'Funktion1',
             -command  => sub { print "Funktion1\n"; }],
           [ 'command' => 'Funktion2',
             -command  => sub { print "Funktion2\n"; }]];

$mw->PopupButton(-text => 'weitere Funktionen...',
                -menu => $menu
                )->pack();

MainLoop();

Modul: Tk/ButtonPopup.pm:
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
package Tk::PopupButton;

use Tk::Frame;
use Tk::Button;
@ISA = qw/Tk::Frame/;

Construct Tk::Widget 'PopupButton';

sub Populate {
   my($w, $args) = @_;

   my $menu = delete $args->{-menu};

   my $m = $w->Menu(-tearoff => 0,
                    -menuitems => $menu);

   $w->SUPER::Populate($args);

   my $b = $w->Button(-relief => 'groove')->pack(-side => 'left');
   my $ba = $w->Button(-image => $w->Bitmap(-file => 'e:/perl/site/lib/Tk/cbxarrow.xbm'))->pack(-side => 'left', -fill => 'y');

   $ba->bind('<ButtonPress-1>' => [\&popup, $m]);

   $w->ConfigSpecs(DEFAULT => [$b]);
}

sub popup {
   my($w, $m) = @_;
   $m->Popup(-popover => "cursor",
             -popanchor => 's');
}

1;
,,Das perlt aber heute wieder...'' -- Dittsche
esskar
 2003-11-18 00:34
#44902 #44902
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
sieht gut aus!
Crian
 2003-11-19 11:50
#44903 #44903
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Hmm ... fehlt noch der 'e:/perl/site/lib/Tk/cbxarrow.xbm', aber schonmal vielen Dank :-)

Edit: *vordenkopfschlagichmussjanurdenpfadändern* ^^

Edit2: Ja, es funktioniert, ist allerdings etwas hakelig... (irgendwas mit dem Fokusverhalten vermutlich).\n\n

<!--EDIT|Crian|1069235600-->
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
eisbeer
 2003-11-19 15:00
#44904 #44904
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Bei mir hacklig, ausserdem würde ich nicht

my $b = $w->Button(-relief => 'groove')->pack(-side => 'left');

sondern

my $b = $w->Button()->pack(-side => 'left');

schreiben...
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
ptk
 2003-11-28 20:24
#44905 #44905
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Crian,19.Nov..2003, 10:50]Hmm ... fehlt noch der 'e:/perl/site/lib/Tk/cbxarrow.xbm', aber schonmal vielen Dank :-)

Edit: *vordenkopfschlagichmussjanurdenpfadändern* ^^

Edit2: Ja, es funktioniert, ist allerdings etwas hakelig... (irgendwas mit dem Fokusverhalten vermutlich).[/quote]
Und den Pfad sollte man nicht absolut halten, sondern lieber so
schreiben:

Code: (dl )
Tk->findINC("cbxarrow.xbm")
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2003-11-14 14:51.