Verständnisfrage zu verschachtelten Formularen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

agrupe
****
Beiträge: 108
Registriert: Do, 08.12.2005 17:23

Verständnisfrage zu verschachtelten Formularen

Beitrag von agrupe »

Hi,

ich habe eine Tabelle in einem Subformular und will daraus Werte auslesen.
Mein Weg klappt zwar, scheint mir aber höchst kompliziert und bricht auch sofort zusammen, wenn man etwas an der Struktur des Formulars ändert. Hoffentlich weiß jemand was besseres:

1) thisComponent zuweisen
2) Formular auf der obersten Ebene selektieren
3) daraus das untergeordnete Formular ansprechen
4) darin die Tabelle selektieren
5) daraus die gewünschte Spalte wählen
6) daraus den aktuellen Wert entnehmen

Warum geht nicht:

1) s.o.
2) gleich das Unterformular, besser noch die Tabelle ansprechen

Hier mein Code:

Dim oForm as Object 'darin wird das Formular gespeichert
Dim oSubForm as Object 'für das Subformular
Dim oDoc as Object 'das eigentliche Dokument
Dim oTabelle as Object 'Artikelauswahltabelle
Dim oElement as Object 'Tabellenspaltenwert
Dim nPreis as Double 'Preis aus Tabelle

oDoc=thisComponent

oForm=oDoc.DrawPage.Forms("Bestellnr")
oSubForm=oForm.getByName ("Bestellungen")

oTabelle=oSubForm.getByName("Artikelauswahl")
oElement = oTabelle.getByName("Preis")
nPreis = oElement.GetCurrentValue()

msgbox "Aktueller Preis: " & nPreis

Bin für jeden Tipp dankbar!

Andreas
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Andreas,

nun ja, das ist halt nun mal der Objektbaum. Den brauchst du schon, um an ein so "tief" verschachteltes Objekt zu kommen. Du kannst das natürlich auch in einer Zeile zusammenfassen - das Prinzip bleibt aber das gleiche ;-)

Code: Alles auswählen

nPreis = thisComponent.DrawPage.Forms("Bestellnr").getByName ("Bestellungen").getByName("Artikelauswahl").getByName("Preis").GetCurrentValue()
Aber ob das übersichtlicher ist???

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
agrupe
****
Beiträge: 108
Registriert: Do, 08.12.2005 17:23

Beitrag von agrupe »

Na, das kann ich in 2 Monaten gar nicht mehr verstehen ;-)

Ich hätte mir gewünscht, dass man jedes Objekt direkt ansprechen kann. Schließlich hat jedes einen eindeutigen Namen. Denn wenn ich die Baumstruktur ändere bleibt doch die Funktionalität der Felder gleich. Und mit dem Abbilden der Struktur im Basic-Code erzeuge ich natürlich feste Strukturen, die dann ggf. nicht mehr mit der "Realität" übereinstimmen.

Merci für den Einzeiler
:lol:

Andreas
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Andreas,
Ich hätte mir gewünscht, dass man jedes Objekt direkt ansprechen kann.
Na ja, kannst du ja. Nur: Der Name eines Objektes ist eben nur eindeutig über den gesammten Verzeichnisbaum.
Das ist immer so. Denk mal an den Herrn "Müller". Ist ein eindeutiger Name ;-). Um Ihn zu identifizieren, brauchst du einfach den kompletten Namen (Verezichnisbaum - also z.B. der Artur Müller aus Hintertupfingen in der Blumenstrasse 5....
Und so ist da mit den Objekten eben auch.
Dein Kontrollelement heisst "Preis", so kann aber auch ein anderes Kontrollelement auf einem anderen Formular heissen, oder zum Beispiel eine Calctabelle oder eine Grafik. Dieser Name ist somit nicht eindeutig.
Und mit dem Abbilden der Struktur im Basic-Code erzeuge ich natürlich feste Strukturen, die dann ggf. nicht mehr mit der "Realität" übereinstimmen.
Na ja, Festlegungen muss man schon treffen. Andererseits kannst du natürlich auch flexible Strukturen abbilden: Alle Objekte sind auch über Indices erreichbar, dann musst du halt Schleifen zur Suche über alle Indizes programmieren - und somit dein Objekt eindeutig identifizieren. Technisch ist das möglich - ja manchmal sogar notwendig, der Namenszugriff ist aber immer einfacher.

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten