12.1 Form

In den folgenden drei Kapiteln wird die Klasse Form (gb.qt4) mit den wichtigsten Eigenschaften, Methoden und Ereignissen sowie den verwendeten Konstanten ausführlich beschrieben.

Im Kapitel 12.2 folgen den Beschreibungen der Eigenschaften, der Methoden oder der Ereignisse vollständige Projekte und Beispiel-Quelltexte, in denen der Einsatz der Klasse Form gezeigt wird.

Im folgenden Beispiel werden die RSS-Feed-Daten im XML-Format (→ Kapitel 18.12.5 RSS-Reader) einer Webseite ausgelesen und es ergibt sich für einen Eintrag dieser gekürzte XML-Quelltext-Ausschnitt:

<item>
  <title>DFB-Elf auf EM-Kurs</title>
  <link>http://www.sportschau.de/fussball/nationalmannschaft/...bericht-deutschland...100.html</link>
  <description>Die deutsche Fußball-Nationalmannschaft hat sich in Glasgow mit einem 3:2 gegen Schottland durchgesetzt und 
  steht nun unmittelbar vor der EM-Qualifikation. Für die Schotten ... .</description>
</item>

In der Prozedur ParseNode(Node As XMLNode) werden aus allen Einträgen (<item>…</item>) jeweils die Daten für Titel und Beschreibung ausgefiltert und in einem neuen Formular (hFeed vom Typ FeedItem) dargestellt. Diese zur Laufzeit erzeugten Formulare werden in einen 'ListContainer' im Hauptprogramm eingefügt:

Public Sub ParseNode(Node As XmlNode)
  Dim xmlNode, xmlAttribute As XmlNode
  Dim hFeed As FeedItem
 
  For Each xmlNode In Node.Children
    If xmlNode.Name = "item" Then
       hFeed = New FeedItem(ListContainer.Count + 1, ListContainer)
       For Each xmlAttribute In xmlNode.Children
         Select Case xmlAttribute.Name
           Case "title"
             hFeed.FeedTitle = xmlAttribute.Value
           Case "description"
             hFeed.Description = xmlAttribute.Value
           Case "link"
             hFeed.Link = xmlAttribute.Value
         End Select
       Next ' Each xmlAttribute
    Else
       If xmlNode.Children.Count > 0 Then ParseNode(xmlNode) ' Rekursiver Aufruf!
    Endif ' xmlNode.Name = "item" ?
  Next ' Each xmlNode
 
End ' ParseNode(...)

Über den ausgefilterten Link wird zusätzlich in einer WebView die korrespondierende Webseite geladen und dargestellt, wenn man auf ein eingefügtes Formular im ListContainer klickt.

Download