20.4.1 Projekt 1 – Demonstrationsprogramm Clipboard Text

Die Komponenten TextArea und TextEdit als Editoren sowie die TextBox verfügen über ein Kontextmenü (Rückgängig, Wiederherstellen, Ausschneiden, Kopieren, Einfügen, Löschen, 'Alles Auswählen') mit dem der Austausch von Text über das Clipboard sicher gelingt – ohne die Klasse Clipboard einsetzen zu müssen.

Das vorgestellte Projekt demonstriert die Verwendung der Klasse Clipboard (gb.qt4) für Texte. Das eingefügte Kontextmenü für die TextArea1 verfügt über drei Einträge:

Bitte beachten Sie:

Sie können Text in der Textarea1 oder in der TextBox markieren und dann über deren Kontextmenüs den markierten Text kopieren oder ausschneiden oder Text – auch aus anderen Anwendungen – in die Textarea2 einfügen:

B0

Abbildung 20.4.1.1: Demonstrationsprogramm 'Clipboard Text'

Wenn Sie beispielsweise Text aus Webseiten oder aus OpenLibreWriter oder aus dem EMail-Client Thunderbird kopieren und einfügen, dann offenbart die Anzeige der Textformate eine überraschende Vielzahl von MIME-Typen.

Der Quelltext für das Demonstrationsprogramm wird vollständig angegeben:

Private sText As String
 
Public Sub Form_Open()  
  FMain.Center
  FMain.Resizable = False
 
  If Clipboard.Type <> Clipboard.None Then ' Clipboard nicht leer?
     FMain.Caption = "ClipBoard MIME-Type: " & Clipboard.Formats[0]
  Endif '  Clipboard.Type <> Clipboard.None ?
 
' Mustertext:
  sText = "Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming "
  sText &= "id quod mazim placeratfacer possim assum. Lorem ipsum dolor sit amet, consectetuer "
  sText &= "adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna "
  sText &= "aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation "
  sText &= "ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat."
  txaArea1.Text = sText
  txaArea1.Wrap = True
  txaArea2.Wrap = True  
End ' Form_Open
 
Public Sub btnShowFormats_Click()
  Dim sElement As String
 
  txaArea2.Clear
  For Each sElement In Clipboard.Formats
    txaArea2.Insert(sElement & gb.NewLine)
  Next ' sElement
 
End ' btnFormats_Click
 
Public Sub btnReset_Click()
  Clipboard.Clear
  txaArea2.Clear
  txaArea1.Text = sText
  txaArea1.SetFocus
  FMain.Caption = "ClipBoard"
End ' btnReset_Click()
 
Public Sub btnTextArea2Clear_Click()
   txaArea2.Clear
End ' btnTextArea2Clear_Click()
 
Public Sub btnClose_Click()
  FMain.Close
End ' btnClose_Click()
 
' Menüdeklaration ---------------------------------------------------------------------------------------
 
Public Sub txaArea1_Menu()
  Dim mnuContextTextArea1 As Menu
  Dim mnuMenuItem As Menu
 
' Es wird ein neues PopUp-Menü-Objekt für die Textarea1 erzeugt
  mnuContextTextArea1 = New Menu(FMain, False)
' 1. Eintrag im PopUp-Menü der Komponente TextArea1
  mnuMenuItem = New Menu(mnuContextTextArea1) As "mnuSelectAll"
  mnuMenuItem.Text = "Gesamten Text markieren."
  mnuMenuItem.Picture = Stock["select"]
' 2. Eintrag im PopUp-Menü
  mnuMenuItem = New Menu(mnuContextTextArea1) As "mnuSelectedCopy"
  mnuMenuItem.Text = "Selektierten Text in das Clipboard kopieren."
  mnuMenuItem.Picture = Stock["copy"]
' 3. Eintrag im PopUp-Menü
  mnuMenuItem = New Menu(mnuContextTextArea1) As "mnuSelectedCut"
  mnuMenuItem.Text = "Selektierten Text ausschneiden " & String.Chr(187) & " Clipboard."
  mnuMenuItem.Picture = Stock["cut"]
 
  mnuContextTextArea1.Popup ' PopUp-Menü für TextArea_1 zuweisen
 
End ' TextArea1_Menu
 
' Hier werden jetzt die 3 Aktionen programmiert, die ausgelöst werden,
' wenn der entsprechende PopUp-Menü-Punkt der TextArea1 ausgewählt wurde.
' PopUp-Menü-Punkt 1 - Komponente TextArea1
Public Sub mnuSelectAll_Click()
  txaArea1.SelectAll()
  txaArea2.Clear
End ' mnuSelectAll_Click
 
' PopUp-Menü-Punkt 2 - Komponente TextArea1
Public Sub mnuSelectedCopy_Click()
  If txaArea1.Selection.Text <> Null Then
     txaArea2.Clear
     Clipboard.Copy(txaArea1.Selection.Text) ' Alternative: TextArea1.Copy()
     FMain.Caption = "ClipBoard MIME-Type: " & Clipboard.Formats[0]
  Endif ' TextArea1.Selection.Text <> Null ?
End ' mnuSelectedCopy_Click
 
' PopUp-Menü-Punkt 3 - Komponente TextArea1
Public Sub mnuSelectedCut_Click()
  If txaArea1.Selection.Text <> Null Then
     txaArea2.Clear
     Clipboard.Copy(txaArea1.Selection.Text)
     FMain.Caption = "ClipBoard MIME-Type: " & Clipboard.Formats[0]
     txaArea1.Cut()
  Endif ' TextArea1.Selection.Text <> Null ?
End ' mnuSelectedCopy_Click
 
Public Sub txaArea2_Menu()
  Dim mnuContextTextArea2 As Menu
  Dim mnuP2T As Menu
 
  mnuContextTextArea2 = New Menu(FMain, False)
  mnuP2T = New Menu(mnuContextTextArea2) As "mnuPasteToTextArea2"
  mnuP2T.Text = "Text vom ClipBoard einfügen..."
  mnuP2T.Picture = Stock["paste"]
 
  If Clipboard.Type = Clipboard.Text Then 
     mnuContextTextArea2.Popup ' PopUp-Menü für TextArea_2 zuweisen
     FMain.Caption = "ClipBoard MIME-Type: " & Clipboard.Formats[0]
  Else
    mnuP2T.Enabled = False
    mnuContextTextArea2.Popup ' PopUp-Menü für TextArea_2 zuweisen
  Endif ' Clipboard.Type = Clipboard.Text
 
End ' TextArea2_Menu
 
Public Sub mnuPasteToTextArea2_Click()
  txaArea2.Clear ' Kann auch entfallen...
  txaArea2.Insert(Clipboard.Paste("text/plain"))
  txaArea2.SetFocus
End ' mnuPasteToTextArea2_Click

Download