gelöst: Schleife über Projektnamen

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 587
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

gelöst: Schleife über Projektnamen

Beitrag von erikafuchs »

Die Frage wird in meinem letzten Posting wahrscheinlich nicht gefunden, also noch mal ohne das Zentrierungsproblem:
muss man alle Felder im Dialog einzeln ändern oder kann man eine Schleife mit z.B. oCtrl & n ansprechen. (Ja, so geht es nicht, vielleicht anders?)

Code: Alles auswählen

oDialog=createUnoDialog(DialogLibraries.Rechentrainer.RechnenDialog)
		oCtrl1=oDialog.getControl("Aufgabe").model
		oCtrl2=oDialog.getControl("Aufgabe1").model
		oCtrl3=oDialog.getControl("gleich").model
		oCtrl4=oDialog.getControl("Eingabe").model
		oCtrl5=oDialog.getControl("Einheit").model
		for n=1 to 5
			oCtrl & n.FontHeight=17
		next
Pit
Zuletzt geändert von erikafuchs am So, 19.01.2020 13:22, insgesamt 1-mal geändert.

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

Re: Schleife über Projektnamen

Beitrag von Toxitom »

Hei Pit,

nein, Variabelnnamen kannst Du nicht mit "&" zusammensetzen;) Insofern funktioniert Deine Schleife so nicht.

Baue andersherum: entweder du deklinierst die Namen der Controlelemente (also z.B. Aufgabe1-AufgabenN), dann kannst Du die Namen der Controllelemente in einer Schleife verarbeiten:

Code: Alles auswählen

with oDialog
  for n = 1 to 5
    .getControl("Aufgabe" & n).model.FontHeight = 17
  next
end with
oder Du schreibst Dir die Namen der Controllelemente in einen Array und verarbeitest den dann:

Code: Alles auswählen

aListe = array("Aufgabe", Aufgabe1", "gleich", "Eingabe", "Einheit")
with oDialog
  for n = 0 to ubound(aliste)
    .getControl(aListe(n)).model.FontHeight = 17
  next
end with
VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

marcel_at_work
****
Beiträge: 195
Registriert: Sa, 24.04.2010 15:51
Wohnort: Basel [CH]

Re: Schleife über Projektnamen

Beitrag von marcel_at_work »

Hallo Pit,

wie Tom schon schrieb, kenne auch ich keine Möglichkeit, Objektbezeichner so zusammenzusetzen, aber es ist in deinem Fall auch nicht nötig, die jeweiligen Objekte einzeln anzusprechen und aufzulisten.

Wenn du nämlich sowieso alle angezeigten Text-Elemente auf deinem Dialog vergrößern musst, kannst du dies ja auch über den jeweiligen Element-Typ realisieren...

Code: Alles auswählen

	Dim n As Integer

	For n = 0 To uBound(oDialog.Model.ElementNames())
		Select Case oDialog.getControl(oDialog.Model.ElementNames(n)).ImplementationName
		Case "stardiv.Toolkit.UnoListBoxControl" 'alle Listbox-Elemente
			'tue irgendetwas...
		Case "stardiv.Toolkit.UnoEditControl" 'alle Text-Elemente
			'tue irgendetwas...
		End Select
	Next
... gerade nicht getestet, aber sollte funktionieren.

Viele Grüße,

Marcel
[Win 10 Pro x64/Downgrade 7, AOO 4.1.6 und LO 6.3.0.4]

erikafuchs
******
Beiträge: 587
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Schleife über Projektnamen

Beitrag von erikafuchs »

Lieber Marcel, lieber Tom,
vielen Dank für eure Hilfe. Ich habe etwas rumprobiert und ändere jetzt doch die Elemente einzeln und nicht alle. Wenn ich alle ändere, muss ich nicht nur Größen sondern auch Positionen ändern, da wird der Dialog zu groß. Das mit dem Array ziehe ich noch in Erwägung, ich habe halt verschiedene Dialoge, das wird schnell unübersichtlich. Die Namen der Elemnt möchte ich nicht ändern, da tauchen sonst Fehler auf, wenn ich die Namen nicht alle im Code finde und ändere.

marcel_at_work
****
Beiträge: 195
Registriert: Sa, 24.04.2010 15:51
Wohnort: Basel [CH]

Re: Schleife über Projektnamen

Beitrag von marcel_at_work »

Hallo Pit,
Die Namen der Elemnt möchte ich nicht ändern, da tauchen sonst Fehler auf, wenn ich die Namen nicht alle im Code finde und ändere.
Die Funktion "Suchen & Ersetzen" erledigt solche Sachen mit einem Mausklick. Dies könnte man sogar mittels Funktion automatisieren. 8)

Liebe Grüße und ein schönes Wochenende,

Marcel
[Win 10 Pro x64/Downgrade 7, AOO 4.1.6 und LO 6.3.0.4]

erikafuchs
******
Beiträge: 587
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Schleife über Projektnamen

Beitrag von erikafuchs »

Hallo Marcel,
ja, schon klar. Ich hätte besser schreiben sollen: Die Namen der Dialogfelder sind so gewählt, dass ich ihnen Inhalte zuordnen kann, die möchte ich ungerne z.B. durchnummerieren.

Antworten