Seite 1 von 1

gelöst: Schleife über Projektnamen

Verfasst: Mo, 13.01.2020 18:31
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

Re: Schleife über Projektnamen

Verfasst: Mo, 13.01.2020 21:31
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

Re: Schleife über Projektnamen

Verfasst: Mi, 15.01.2020 17:58
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

Re: Schleife über Projektnamen

Verfasst: Do, 16.01.2020 10:32
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.

Re: Schleife über Projektnamen

Verfasst: Fr, 17.01.2020 20:45
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

Re: Schleife über Projektnamen

Verfasst: So, 19.01.2020 12:36
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.