26. Sep. 2007

neue Version 1.1

imageListboxen und die Zwischenablage

Kann man nicht den Inhalt der Listboxen in die Zwischenablage übernehmen?

Klar, kann man! Button anlegen und diese Methode einsetzen:

C_TEXT($clipText)
$clipText:=ListBox_2_Text ("lbObj_Semester";->lb_Semester)
If ($clipText#"")
  SET TEXT TO CLIPBOARD($clipText)
  BEEP
End if

Das sieht dann z.B. so aus: hier eine Pivot-Tabelle mit Teilnehmern und belegten Kursen. Diese Tabelle möchte ich an Dritte weitergeben. Für den Anwender ist das einfach, die Zeilen auswählen und kopieren.

image

Ich als Programmierer, baue diese Liste nach Bedarf zusammen. Nur die grau hinterlegten Spalten sind immer da. Es gibt unsichtbare Spalten, die sollen nicht exportiert werden. Nicht alle Spalten enthalten Text. Ergo: ich brauche was generisches. Mit GET LISTBOX ARRAYS beginnt die Aufgabe und ist generisch lösbar.

Objekt-InfoMeine generische Methode heißt ListBox_2_Text erwartet zwei Parameter: 1.) den Objektnamen der Listbox "lbObj_Semester" und 2.) den Pointer auf die Listbox-Variable ->lb_Semester. Die Methode ist eine Funktion und liefert den Text in $0 zurück.
Der zweite Parameter ist optional. Wird er nicht übergeben, wird jede Zeile kopiert.

NeuKleiner Finger, ganze Hand.

Ein 4D-Textfeld könne maximal 32.000 Zeichen aufnehmen, die Zwischenablage viel mehr. OK, OK! Es gibt jetzt eine ListBox_2_Text-Version 1.1. Diese unterstützt die Zwischenablage direkt. Übergeben Sie als 3. Parameter True, landen die Listbox-Zeilen in der Zwischenablage. Weil das Kopieren dann etwas länger dauern kann, erscheint bei mehr als 100 zu kopierenden Listeneinträgen eine Verlaufsanzeige. Die Aufrufzeile lautet dann:
$clipText:=ListBox_2_Text ("lbObj_Semester";->lb_Semester;True)
und der Rückgabewert ist leer, damit die Zwischenablage nicht wieder überschrieben wird.

Sie möchten den Sourcecode haben? Kein Problem! Überweisen Sie, was es Ihnen wert ist auf mein PayPal-Konto: info@mettre.de. Was ist denn üblich?

image