Kontrollelemente löschen - wo jetzt überall?

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

Moderator: Moderatoren

Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Kontrollelemente löschen - wo jetzt überall?

Beitrag von Maggus »

Also eigentlich will ich einfach nur eine Checkbox löschen, aber das ist anscheinend gar nicht so einfach.

Zunächst erstmal: wo kann denn überhaupt überall eine Checkbox sein? In einem Formular, in einer Drawpage (gibts da auch ne deutsche Bezeichnung?), in einem Dialog, ... und sonst noch wo? Weitere Frage: Wie kriege ich dann heraus, welche Beispiele im Netz und im Forum auf welchen Fall zutreffen?

Und schließlich zu meinem speziellen Problem: Also wenn ich eine Checkbox einfüge, dann mache ich das etwa mit

Code: Alles auswählen

 ...
aControl = oDoc.CreateInstance ("com.sun.star.form.component.CheckBox")
...
 aShape = aDoc.CreateInstance ("com.sun.star.drawing.ControlShape")
...
aber wie krieg ich die wieder gelöscht? Den Tipp in diesem Thread habe ich ausprobiert, jedoch sagt mir Xray es gibt gar kein thisComponent.Drawpage sondern nur thisComponent.Drawpages. Damit komme ich aber auch nicht zum Ziel und kann daher meine Checkbox nicht aus der Drawpage löschen, sondern nur aus dem Formular.

Andere Frage: muss ein Kontrollelement denn in beidem angelegt werden? Welchen Sinn hat das überhaupt?

Grüße,
Maggus (:o)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Kontrollelemente löschen - wo jetzt überall?

Beitrag von DPunch »

Aloha
Maggus hat geschrieben:jedoch sagt mir Xray es gibt gar kein thisComponent.Drawpage sondern nur thisComponent.Drawpages.
Dann befindest Du Dich vermutlich in einem Calc-Dokument.
Dort hat jedes Sheet seine eigene Drawpage.
Damit komme ich aber auch nicht zum Ziel und kann daher meine Checkbox nicht aus der Drawpage löschen, sondern nur aus dem Formular.
Die CheckBox muss sich in der gleichen Drawpage wie Dein Formular befinden, wenn Du also Zugriff auf das Model im Formular gekriegt hast, dann kannst Du von der gleichen Drawpage auch die Darstellung der CheckBox löschen.
Andere Frage: muss ein Kontrollelement denn in beidem angelegt werden? Welchen Sinn hat das überhaupt?
http://wiki.services.openoffice.org/wik ... w_Paradigm

Beim einen handelt es sich um das Model, beim anderen um den View des Steuerelements.

Andere Frage: Warum willst Du eine CheckBox per Makro löschen?
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Kontrollelemente löschen - wo jetzt überall?

Beitrag von Maggus »

Hi DPunch,
DPunch hat geschrieben:Warum willst Du eine CheckBox per Makro löschen?
Also, ich habe in Excel eine Checkliste mit VBA gebastelt, wo man Aufgaben hinzufügen und auch löschen kann. Jede Aufgabe hat eine Zeile mit einer Checkbox. Nun bin ich dabei das ganze nach Basic umzuschreiben. Die zwei angehängten Dateien machen das sicher am deutlichsten.
Dann befindest Du Dich vermutlich in einem Calc-Dokument.
Sorry, ja, hätt ich erwähnen sollen...
Dort hat jedes Sheet seine eigene Drawpage.
Ahaaaa... das macht Sinn. Aber wie komme ich an die gewünschte Drawpage? Du hast geschrieben:
Die CheckBox muss sich in der gleichen Drawpage wie Dein Formular befinden, wenn Du also Zugriff auf das Model im Formular gekriegt hast, dann kannst Du von der gleichen Drawpage auch die Darstellung der CheckBox löschen.
Aber genau da hakt es. Aus dem Formular krieg ich das Model ja gelöscht, nur wird es dann immer noch angezeigt. Erst wenn man die Datei schließt und wieder öffnet ist es auch aus der View weg.
Beim einen handelt es sich um das Model, beim anderen um den View des Steuerelements.
Also ist die Drawpage einfach nur eine View. OK. Dein link war übrigens auch sehr aufschlussreich, danke.
Meine_Checkliste.xls
Voll funktionsfähige Excel Checkliste
(45 KiB) 35-mal heruntergeladen
Meine_Checkliste_V1.0a.ods
Entwurf
(18.12 KiB) 45-mal heruntergeladen
Gruß,
Maggus (:o)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Kontrollelemente löschen - wo jetzt überall?

Beitrag von DPunch »

Aloha

Ich hab Dir mal in die Beispieldatei einen Beispielcode für das Entfernen von Controls eingefügt (Sub DeleteControl)

Vielleicht macht das die Vorgehensweise etwas deutlicher.

Mit sowas würde ich prinzipiell aber vorsichtig sein - OOo scheint es nicht sonderlich zu mögen, wenn man an den DrawPages rumdoktort, das kann schon hin und wieder mal zu 'nem Absturz führen.
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Kontrollelemente löschen - wo jetzt überall?

Beitrag von Maggus »

DPunch hat geschrieben:...das kann schon hin und wieder mal zu 'nem Absturz führen.
Achso? hmm... Ist aber doch prinzipiell nichts gegen einzuwenden, oder? Oder wüsstest du eine stabilere Lösung?
Danke erstmal für das Beispiel, werde es ausgiebig testen. Verstehe auf den ersten Blick nicht, warum man plötzlich .remove sagen kann, die unterschiedlichen Herangehensweisen verwirren mich ein wenig... Aber zumindest weiß ich jetzt wie es gehen müsste. :)

Gruß,
Maggus (:o)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Kontrollelemente löschen - wo jetzt überall?

Beitrag von DPunch »

Aloha
Maggus hat geschrieben:Achso? hmm... Ist aber doch prinzipiell nichts gegen einzuwenden, oder? Oder wüsstest du eine stabilere Lösung?
Nein, nicht wirklich - ich kann die Abstürze auch nicht reproduzieren, mir ist im Laufe der Zeit einfach nur aufgefallen, dass OO gerne abstürzt bei solchen Dingen... oder vielleicht sind es auch nur "ganz normale" Abstürze, OO läuft bei mir insgesamt alles andere als stabil. Naja, Du wirst es ja sehen, ob Probleme auftreten oder nicht ;)
Verstehe auf den ersten Blick nicht, warum man plötzlich .remove sagen kann, die unterschiedlichen Herangehensweisen verwirren mich ein wenig
Inwiefern unterschiedliche Herangehensweisen?
Du musst zum einen das Model des Steuerelements aus dem Formular löschen, zum anderen die "Zeichnung" des Steuerelements aus der DrawPage.
Die Herangehensweise bleibt dabei in aller Regel die gleiche.

Und was genau überrascht Dich am ".remove" ?
Jede DrawPage hat das Interface XShapes, welches die Methode "remove" zur Verfügung stellt.
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Kontrollelemente löschen - wo jetzt überall?

Beitrag von Maggus »

DPunch hat geschrieben: Und was genau überrascht Dich am ".remove" ?
Naja, mal muss man erst das Element / Objekt identifizieren und kann es dann mit .remove löschen und mal muss man sowas machen wie: removeByName(ControlName)

Aber mit deiner Vorlage hat das jetzt geklappt und läuft bislang absturzfrei :)

Vielen Dank also!
Maggus (:o)
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Kontrollelemente löschen - wo jetzt überall?

Beitrag von Maggus »

Hi Leute,

nach langem habe ich mal wieder an meiner Checkliste gebastelt und endlich fertiggestellt. Daher stelle ich sie hiermit zur Verfügung.
Gerne nehme ich Verbesserungsvorschläge entgegen, insbesondere was die Performance angeht.

Gruß,
Dateianhänge
Meine_Checkliste_V1.2.ods
(24.59 KiB) 79-mal heruntergeladen
Maggus (:o)
Antworten