Autor Thema: Maske mit großer Tabelle  (Gelesen 2920 mal)

Offline Tom_S

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Maske mit großer Tabelle
« am: 20.01.12 - 09:40:54 »
Hallo,

ich habe eine Maske mit einer großen Tabelle. In jeder Zelle gibt es eine Schaltfläche, die im Prinzip immer das gleiche macht:
Sie erstellt ein Dokument mit einer anderen Maske und füllt ein paar Felder. Der Inhalt dieser Felder, welche gefüllt werden, ist abhängig davon, in welcher Zeile und Spalte die Schaltfläche geklickt wurde.

Nun habe ich natürlich wenig Lust, die ganzen Schaltflächen per Hand anzupassen und nur irgendwelche Nummern, die er in das neue Formular reinschreibt, zu ändern.

Deshalb meine Frage: Gibt es eine Möglichkeit, rauszufinden, in welcher Zeile/Spalte der Tabelle sich die Schaltfläche (oder auch Aktions-Hotspot) befindet? Dann könnte man das ein wenig besser und vor allem wartbarer lösen.

Ich hoffe, ich konnte mein Problem verständlich rüberbringen und hoffe natürlich auch, dass es dafür überhaupt eine Lösung gibt.

Liebe Grüße
Tom

Glombi

  • Gast
Re: Maske mit großer Tabelle
« Antwort #1 am: 20.01.12 - 09:57:33 »
@Formel oder Script?

Meine Idee wäre, neben den Button ein Feld mit der Zeilennummer zu erstellen, also Zeile1, Zeile2

Der Buttoncode setzt den Cursor dann nach rechts und ermittelt den Feldnamen. Anhand des Index weisst Du dann, in welcher Zeile der Button ist.
Das Feld kann man mit diversen Tricks "unsichtbar" machen. Allerdings darfst Du es nicht verbergen, sonst kann der Cursor da nicht rein  ;)


Man kann den Buttons in den Eigenschaften auch eine eindeutige ID verpassen. Ich weiß aber nicht, wie man das in @Formeln oder Script bekommt, wenn sich das ganze im Notes Client abspielt.

Andreas

Offline Tom_S

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Re: Maske mit großer Tabelle
« Antwort #2 am: 20.01.12 - 10:07:01 »
Hallo Andreas,

vielen Dank für deine Antwort.

Wenn möglich, würde ich das gerne mit Script lösen.

Die Umsetzung deiner Idee würde aber bedeuten, ich müsste nochmal so viele Felder erstellen, wie Buttons vorhanden sind. Unsichtbar könnte ich das Feld mit der Schriftfarbe weiß machen...aber dann würde man immer noch die "Umrandung" des Feldes sehen, oder welche Tricks meinst du?
Aber naja...die Idee gefällt mir eh nicht so, sorry. ;-)

Das mit der ID, da werde ich mich mal schlau machen, danke.

Liebe Grüße
Tom

Mitch

  • Gast
Re: Maske mit großer Tabelle
« Antwort #3 am: 20.01.12 - 10:52:41 »
Heyho,

du hast aber nicht den gesamten Code in jedem Button, oder? Denn dann müsstest du ja bei jeder kleinen Änderung alle Buttons anpassen.

Falls du das doch so hast: Erstelle dir eine Sub/Funktion in der Art von "Sub ButtonClick(row%, col%)". Da kommt der Code rein und über die Parameter werden eben die aktuelle Zeile und Spalte übergeben.

Dann musst du in den ganzen Buttons immer nur die eine Funktion aufrufen und die zwei Parameter anpassen. Grundsätzliche Änderungen am Skript machst du bequem und nur einmal in der Sub/Funktion.

Gruß,

Mitch

Offline Tom_S

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Re: Maske mit großer Tabelle
« Antwort #4 am: 20.01.12 - 10:58:36 »
Hallo,

ich habe schon eine extra Sub, wo ich die Werte (welche bei jedem Button anders sind bzw. von der Zeile und Spalte abhängig sind) an die Sub übergebe.

Wenn dann doch mal noch mehr Werte übergeben werden sollen, muss ich wieder jeden Button anpassen, was ich mir ersparen will.

Ich dachte ja, dass es vielleicht sowas wie "button.row" (mal ganz einfach gedacht ;)) gibt, dann würde sich das Problem lösen.

Ansonsten muss ich wohl damit leben.

Liebe Grüße
Tom

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Maske mit großer Tabelle
« Antwort #5 am: 20.01.12 - 15:22:56 »
Wenn die Werte von Zeile und Spalte abhängig sind, dann übergib doch einfach -wie Mitch geschrieben hat- diese beiden Werte...

Also so:

Im Button:

Call MeineSub( 1 , 1 )

und die Sub:

Code
Sub MeineSub( intZeile as Integer, intSpalte as Integer )
  Dim ws as New NotesUIWorkspace
  Dim uidoc as NotesUIDocument
  Dim doc as NotesDocument
  set uidoc = ws.CurrentDocument
  set doc = uidoc.Document
  select case intZeile
    case 1,2,3,4,5
      parameter1 = doc.GetItemValue( "WichtigesFeld" )(0)
      parameter2 = "xyz"
    case 7
      parameter1 = "nix"
      parameter2 = "abc"
      select case intSpalte
        case 1
          parameter3 = doc.GetItemValue( "AnderesWichtigesFeld" )(0)
        case 3
          parameter3 = ""
      end select
    end select
    ....hier arbeitest Du mit Deinen parametern
End Sub

Auf diese Weise ist der Code und die Logik komplett in der Sub, und Du musst die Buttons nie mehr anpassen...
Allerdings bin ich mir SICHER, dass es für das, was Du tun willst, eine bessere Methode gibt, als hunderte Buttons zu erstellen...
Aber das steht auf einem ganz anderen Blatt...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Tom_S

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Re: Maske mit großer Tabelle
« Antwort #6 am: 20.01.12 - 16:05:27 »
Hallo Torsten,

danke auch dir für deine Antwort. Ja, so habe ich das nun auch gemacht, dass die eigentliche Funktion ausgelagert ist und jeder Button mit seiner Zeile und Spalte die Funktion aufruft.

Naja, ich weiß nicht, ob es da auch eine bessere Lösung gibt.
Der Wunsch ist ja folgender:
In jeder Zeile soll ein Button sein, über dem man ein Dokument einer anderen Maske erstellt. Das Dokument soll dann (je nachdem welcher Button in welcher Zeile/Spalte geklickt wurde) schon bestimmte Felder vorbelegt bekommen.
Klar könnte man auch nur einen Button, bzw. dann halt ne Aktion erstellen, die weiter nach "Zeile" und "Spalte" abfragt, aber das wäre ja wieder mehr Aufwand für die Benutzer. ;)

Vielen Dank euch trotzdem!

Liebe Grüße
Tom

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz