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.
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.