Dynamische Textfeld-Größenanpassung

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

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Dynamische Textfeld-Größenanpassung

Beitrag von balu »

Hallo Marcel,
Ich hoffe, der Code läuft jetzt
Yep.


Bei Laufzeit-Dialogen bin ich nun wahrlich noch kein besonderes Licht. Und ich weiß auch nicht woran das liegt, das der Dialog mit *Hintergrundbild* anfangs flackert.

Was mich jedoch verwundert ist, das deine UnoControlImageControlModel in meine Datei eingebaut ohne Probleme funktioniert. Mag vielleicht mit daran liegen das ich ja mit .execute arbeite.

Ohne ein *Hintergrundbild* dauert es ca. 0,5 Sekunden bis dein Dialog angezeigt wird.
Mit *Hintergrundbild* vergehen so ca. 15 Sekunden bis dein Dialog angezeigt wird. :shock:

Bei meiner Datei kann ich nicht mal die Zeit messen, egal ob mit oder ohne *Hintergrundbild*.

Deine UnoControlImageControlModel habe ich in meiner Datei im Modul "Elemente" eingebaut, ist ganz am ende zu finden. Dort auch den Pfad zu einer Grafik angeben, die ungefähr 800 x 600 groß sein kann.


Einen gut gemeinten Tipp meinerseits.
Wie oft hast Du UnoControlFixedTextModel in deinem Makro eingebaut?
12 mal!?
Meinst Du nicht das dies sehr unübersichtlich ist?
Schau dir mal meine Beispieldatei an, dann siehst Du z.B. das ich im Modul "Anfang" 4 mal ein Optionsfeld erstelle. Die zu ändernden Parameter für z.B. Farbe und Position weise ich bestimmten Variablen zu, und rufe dann mit den unterschiedlichen Variablen im Modul "Elemente" die dementsprechende Sub LzOptionButton auf.

Ich erstelle also einmal ein Element mit den gewünschten Eigenschaften, setze aber die Parameter nicht fest, sondern trage dort die Variablennamen ein. Das macht die ganze Sache doch etwas übersichtlicher.

Ich empfehle dir das so ähnlich zu machen. Du musst ja nicht gleich ein extra Modul dafür anlegen, aber pack deine Textfelder und was auch immer, in eine eigene Sub.



Gruß
balu
Dateianhänge
Test_Laufzeit-Dialog_for_Forum_n1.ods
(14.75 KiB) 237-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Dynamische Textfeld-Größenanpassung

Beitrag von F3K Total »

Moinsen,
warum weiß ich nicht, wenn ich diese Zeilen auskommentiere, klappts auch ohne Flackern:

Code: Alles auswählen

       'dlgRecipes.getControl("dlgImg").Model.Enabled = True
       'dlgRecipes.getControl("dlgImg").Model.EnableVisible = True
Gruß R
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Dynamische Textfeld-Größenanpassung

Beitrag von balu »

Moinsen R,
wenn ich diese Zeilen auskommentiere, klappts auch ohne Flackern
Tja dolle! Wenn ich das mache wird das *Hintergrundbild* überhaupt nicht angezeigt. Also irgendwie keine gute Idee. Wird es denn bei dir angezeigt, oder arbeitest Du ohne? Unter welchem Betriebssystem hast Du denn das getestet, Win7 oder Linux Mint, und welches Office?


Ich musste jetzt grad eben etwas feststellen, was mich zum extremen erstaunen brachte.
balu hat geschrieben: Mit *Hintergrundbild* vergehen so ca. 15 Sekunden bis dein Dialog angezeigt wird.
Diese Aussage trifft bei OOo 3.2.1 zu.
Bei AOO 4.0.1 sieht das aber schon gleich ganz anders aus. Denn da dauert es nur ca. 1 Sekunde. :shock:
Also hat sich in dieser Hinsicht zwischen den beiden Office-Versionen an Geschwindigkeit doch so einiges getan. Aber auch in dieser Version wird das *Hintergrundbild* durch das auskommentieren der genannten Zeilen nicht angezeigt, leider.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Dynamische Textfeld-Größenanpassung

Beitrag von F3K Total »

Hallo Balu,
habe den Code von Marcel genommen, einen eigenen Bildpfad an den zwei Stellen eingetragen, und das beschriebene Ergebnis erhalten.
Gruß R
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Dynamische Textfeld-Größenanpassung

Beitrag von balu »

Mahlzeit R,
einen eigenen Bildpfad an den zwei Stellen eingetragen
Jetzt wirds interessant!
Denn ich hatte mich ausschließlich auf das ImageControl konzentriert,

Code: Alles auswählen

oMod = dlgModel.createInstance("com.sun.star.awt.UnoControlImageControlModel")

       With oMod
[...]
'.setPropertyValue("ImageURL", convertToUrl("D:\myDocuments\Gesundheit\Ernährung
\Koch-, Back- & Cocktailrezepte\db-rezepte\layout.png") 'Grafik-URL
da ja das Image für den Dialog auskommentiert war,

Code: Alles auswählen

       'Initialisierung eines Dialoges
       dlgModel = createUnoService("com.sun.star.awt.UnoControlDialogModel")
       
       With dlgModel
[...]
    '      .setPropertyValue("ImageURL", convertToUrl("D:\myDocuments\Gesundheit\Ernährung\Koch-, Back- & Cocktailrezepte\db-rezepte\layout.png") 'Grafik-URL
und es ihm ja wohl auch nur um das UnoControlImageControlModel ging. Okay, dort war ja das Image auch auskommentiert, wegen dem zu ändernden Pfad der nicht bei jedem vorhanden ist, aber sein Anliegen (Problem) war für mich doch ziemlich eindeutig.
marcel_at_work hat geschrieben: ein Bild mittels grafischem Kontrollfeld (in der Größe des Dialogs) hinzugefügt habe, flackert der gesamte Dialog bis sämtliche Kontrollfelder darin geladen sind.
Eigentlich braucht man jetzt gar nicht das UnoControlImageControlModel, da dies ja dann *Doppelt-Gemoppelt* ist. Einnerseits wird ein Bild als Hintergrund im Dialog geladen und eingepasst, und dann noch zusätzlich als ImageControl seperat oben drauf. Eigentlich reicht es theoretish wenn man nur das Bild im Dialog lädt, extra dafür noch ein ImageControl zu erstellen und zu laden ist eigentlich überflüssig.

Theoretisch deshalb, weil das geladene Bild im Dialog automatisch per Default auf die Dialog-Seite 0 gesetzt wird, und dadurch bei aktivierung weiterer Dialog Seiten automatisch dort vorhanden ist. Es sei denn, man wählt für die weiteren Dialog-Seiten explizit ein anderes Bild aus und lädt dieses in die dementsprechende Dialog-Seite. Oder aber man erstellt dann ein ImageControl und lädt dort dann das Bild rein. Nur ich zumindest weiß nicht ganz genau ob Marcel einen Mehrseitigen-Dialog erstellen will, oder er nur nicht genau wusste wie man ein Hintergrundbild im Dialog einbindet, auch wenn er im Dialog die dementsprechende Stele auskommentiert hatte. Bin mir also über sein eigentliches Ziel nicht sicher, und hatte gestern das mit dem Bildpfad im Dialog wissentlich ausgeblendet da er ja vom "grafischem Kontrollfeld" sprach.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
marcel_at_work
****
Beiträge: 195
Registriert: Sa, 24.04.2010 15:51
Wohnort: Basel [CH]

Re: Dynamische Textfeld-Größenanpassung

Beitrag von marcel_at_work »

Hi Leute,

danke für die viele Müh'. :D

Also bei mir klappt das mit dem Dialog NICHT. :(

Das Bild, direkt IM Dialog, generiert ein rießengroßes Problem, weshalb ich es nur über ein Kontrollfeld realisieren kann:
In OpenOffice gibt es bis heute keinerlei Unterstützung für die Größe 'Pixel'. Es wird in der GUI ausschließlich mit einer OpenOffice-spezifischen Einheit gerechnet.
Wenn man z.B. ein Bild mit Pixelmaß 800x600 in einen Dialog hineinlädt, kann man intern nur noch über diese spezielle Einheit auf das Bild zugreifen. Man kann zwar mit einem Algorithmus versuchen, umzurechnen, doch es wird am Ende nur ein Annäherungswert für das Verhältnis herauskommen, da der Dialog selbst ja nur Integer-Werte kennt. Sprich: Das Bild IM Dialog wird immer ein wenig unscharf sein, da man den Dialog nicht genau auf die Pixelgröße einstellen kann.
In einem Bild-Kontrollfeld gibt es aber genau dafür eine tolle Skalierungseigenschaft - man kann die Skalierung einfach komplett ausschalten. Somit wird das Bild im Kontrollfeld stets 1:1, ausgehend von links oben, wiedergegeben. Es ist also immer scharfgestellt.

OpenOffice hat eben leider immer noch viele viele Macken.

Das Problem bleibt nun leider immer noch bestehen.

LG,

Marcel
[Win 10 Pro x64/Downgrade 7, AOO 4.1.6 und LO 6.3.0.4]
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Dynamische Textfeld-Größenanpassung

Beitrag von F3K Total »

Was denn nun, flackern oder unscharf? Du weißt auch nicht was du willst.
Kann nicht eines von Deinen Problemen nachvollziehen.
Gruß R
marcel_at_work
****
Beiträge: 195
Registriert: Sa, 24.04.2010 15:51
Wohnort: Basel [CH]

Re: Dynamische Textfeld-Größenanpassung

Beitrag von marcel_at_work »

Hi R,

genau wie du gerad sagtest - entweder das eine, oder das andere!

1) Ein Bildobjekt, zur Laufzeit direkt im Dialog-Hintergrund erstellt, ist stets ein klein wenig (ein µ) verzerrt dargestellt, sodass darauf befindliche Texte oder Bilder etwas unscharf erscheinen.

2) Ein Bildobjekt, zur Laufzeit in einem grafischen Kontrollfeld erzeugt (das Bild wird 1:1 wiedergegeben), lässt aber den gesamten Dialog, bei jedem Erzeugen eines weiteren Dialog-Kontrollelementes kurz aufflackern - zudem dauert es viele Sekunden!

Ich möchte als Hintergrund für die Rezeptdatenbank ein hochauflösendes Bild erstellen, weshalb es unbedingt auch 1:1 wiedergegeben werden sollte. Andererseits darf der Dialog aber auch keine 10 Sekunden, flackernd zum Aufbau brauchen.

Liebe Grüße,

Marcel
[Win 10 Pro x64/Downgrade 7, AOO 4.1.6 und LO 6.3.0.4]
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Dynamische Textfeld-Größenanpassung

Beitrag von F3K Total »

Hallo Marcel,
marcel_at_work hat geschrieben:1) Ein Bildobjekt, zur Laufzeit direkt im Dialog-Hintergrund erstellt, ist stets ein klein wenig (ein µ) verzerrt dargestellt, sodass darauf befindliche Texte oder Bilder etwas unscharf erscheinen.
Kann ich nicht nachvollziehen, was erwartest du, bei einer Bildschirmauflösung von etwa 96 dpi?
Wieviele TwipsperpixelX und TwipsperpixelY hat dein Bildschirm?
Wenn ich die Abmessungen vom Dialog ins gleiche Verhältnis setze, wie die eines Bildes, sehen die Bilder, ob in Gimp bei 100% oder im Dialog, am Bildschirm gleich aus.
marcel_at_work hat geschrieben:2) Ein Bildobjekt, zur Laufzeit in einem grafischen Kontrollfeld erzeugt (das Bild wird 1:1 wiedergegeben), lässt aber den gesamten Dialog, bei jedem Erzeugen eines weiteren Dialog-Kontrollelementes kurz aufflackern - zudem dauert es viele Sekunden!
Wie schon oben geschrieben, wenn ich die zwei Zeile auskommentiere habe ich kein flackern und es dauert keine Sekunde.
Hast Du den Hinweis überhaupt schon ausprobiert?
Ich habe übrigens "nur" einen 32-Bit Rechner mit 3GB RAM.
Es wäre gut, wenn Du mal deine Systemkonstellation offenbaren würdest.
Gruß R
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Dynamische Textfeld-Größenanpassung

Beitrag von balu »

Hallo Marcel,

ich bitte vielmals untertänigst um Entschuldigung, dass ich deinen Thread mit meinem Problem gekapert hatte. Aber dennoch langst mir jetzt, nach dem ich deine letzten Beiträge gelsen habe.

Dein Ursprüngliches Problem, welches hier der Betreff ist: "Dynamische Textfeld-Größenanpassung" scheint wohl gelöst zu sein. Oder etwa nicht?

Dein neues Problem: "Flackern", hattest Du durch deinen Beitrag von: Di, 29.10.2013 23:14 nicht deutlich genug geschildert. Denn erst jetzt rückst Du mit dem eigentlichen Problem heraus, was widerum einen ganz anderen Sachverhalt darstellt. Und ich qäul mir hier einen ab und schreib mir die Finger Wund um irgendwie voran zu kommen, um erst jetzt genaueres zu erfahren. Das hätte viiiiel früher kommen müssen!

Und deshalb sage ich jetzt: "Schluss mit Lustig! In diesem Thread bin ich gleich endgültig raus!"

Wenn Du weiterhin Hilfe zu dem momentanigen Problem brauchst, dann mach einen neuen Thread auf. Und dort schilderst Du dein Problem noch mal genau, mit den ganzen Punkten die Du hier erst jetzt gelifert hast. Und vergess nicht eine Beispieldatei, damit wir nicht schon wieder deinen Code kopieren müssen. Etwas arbeit musst Du schon selber leisten.

Ach ja! Beinahe vergessen.
Dein Betriebssystem?
Dein Office, inklusive genauer Versionsnummer?

Vielleicht sehen wir uns ja dort wieder. Denn das ganze kann auch für mich hilfreich sein.

Bin hier raus!



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
Constructus
*******
Beiträge: 1610
Registriert: Mo, 21.01.2008 18:08
Wohnort: 20 Jahre Brilon - 40 Jahre Essen- Steele

Re: Dynamische Textfeld-Größenanpassung

Beitrag von Constructus »

Hey hey Herr Nachbar,

bitte nicht so böse... Ich hab von eurem Thema keinen Plan, sehe aber, daß die Probleme behandlungbedürftig sind. Bitte doch einfach mal einen Moderator, den Thread an geeigneter Stelle zu trennen, den Abschnitt mit passender neuer Überschrift zu versehen und dann kannst Du weitermachen. Wär doch schade, wenn Du schmollst... :shock:

Und gib marcel_at_work doch die Chance, sich an eure Eigenheiten zu gewöhnen; ist ja wohl kein Frischling im Forum? 8)

Schönes langes Wochenende

Constructus
EDV ist wunderbar - o Wunder, wenn sie funktioniert! {°L*}

Freie Offices auf div. Linuxen + 3 VBoxen mit WIN2K
|| LibO + AOO, auf Linux und WIN2K; portable OO & Co. auf WIN
Genaue Typisierung unmöglich, alles ist "im Fluß"
marcel_at_work
****
Beiträge: 195
Registriert: Sa, 24.04.2010 15:51
Wohnort: Basel [CH]

Re: Dynamische Textfeld-Größenanpassung

Beitrag von marcel_at_work »

Hallihallöchen,

bitte nicht wundern, dass ich jetzt erst antworte. Mein Router hatte nach fünf Jahren den Geist aufgegeben und ich mußte auf den neuen eine Woche warten.

Danke nochmal an alle und SORRY, dass das hier so ein Durcheinander geworden ist - dies war nicht meine Absicht!

Das eigentliche Problem ist zwar noch nicht behoben, aber ich kann mit meinem derzeitigen Entwicklungsstand leben. Der beschriebenen "extrem langen" Ladezeit beim Öffnen meines Dialoges war ein Bild im .png-Format zugrundeliegend. Mit .jpg o.ä. ist der Vorgang jetzt ganz akzeptabel.
Zudem erzeuge ich jetzt sämtliche Felder erst einmal im Hintergrund und lasse sie erst kurz vor Ende des Aufbaus sichtbar werden - damit ist auch das beschrieben Flackern verschwunden.

Also vielen lieben Dank nochmal,

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