Hallo Kenner und Könner,
in einem Makro werden aus ein gelesenen Textzeilen Strings generiert die aber manchmal nicht korrekt zB zu lang sind.
zu einer automatische gesteuerten Anpassung ist mir noch nicht das richtig Konzept eingefallen.
I möchte jetzt folgendes erreichen, der String soll doppelt einzeilig angezeigt werden
und eine Zeile davon soll editierbar sein, so das ich den String händisch anpassen kann
und nach "ok" klick soll der geänderte String in die Variable des Ursprungsstrings übernommen werden.
Wie kann man das am besten realisieren?
und schon mal danke für's lesen
String während Laufzeit manuell ändern
Moderator: Moderatoren
String während Laufzeit manuell ändern
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: String während Laufzeit manuell ändern
Eigenen Dialog mit zwei Textfeldern erstellen.
Langen String auf die beiden Textfelder verteilen, ggf. ändern.
Bei Klick auf einen OK-Button im Dialog wird der String wieder zusammengesetzt.
Der neue String wird dann als Result der Dialogbox zurückgegeben.
Langen String auf die beiden Textfelder verteilen, ggf. ändern.
Bei Klick auf einen OK-Button im Dialog wird der String wieder zusammengesetzt.
Der neue String wird dann als Result der Dialogbox zurückgegeben.
OpenOffice v 4.0.1
Windwos 7 / 64bit
Windwos 7 / 64bit
Re: String während Laufzeit manuell ändern
Hi DocCyber,
na denn will ich mich mal mit Dialogen befassen
besten Dank für's erste
und ich leihe mir mal den Pink Panther Spruch
" ist nicht Ende meiner Frage, ich komm wieder alle Tage "
na denn will ich mich mal mit Dialogen befassen
besten Dank für's erste
und ich leihe mir mal den Pink Panther Spruch
" ist nicht Ende meiner Frage, ich komm wieder alle Tage "

LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: String während Laufzeit manuell ändern
Hallo Kenner und Könner,
Ich habe es ja geahnt, allein wird das nix
also so einen Dialog habe ich schon mal und auch die Felder darin aber der erste Button für Abbrechen macht mir schon Ärger.
Wäre schön wenn mir jemand auf die Sprünge hilft ggf auch für einen ok Button
Ich habe es ja geahnt, allein wird das nix
also so einen Dialog habe ich schon mal und auch die Felder darin aber der erste Button für Abbrechen macht mir schon Ärger.
Wäre schön wenn mir jemand auf die Sprünge hilft ggf auch für einen ok Button
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: String während Laufzeit manuell ändern
Hai clag,
bei den Buttons gibt es 3 Funktionen die schon fest vorgegeben sind:
- OK
- Abbrechen
- Hilfe
Zu finden in dem dementsprechenden Kontextmenü für den Button, und zwar bei:
- Art der Schaltfläche
Du willst jetzt also einen Abbrechen-Button erstellen der nix anderes macht als den Dialog zu beenden? Das ist zu umständlich. Nimm doch stattdessen die Einstellung Ok. Dazu musst Du aber in deiner Sub
als letzten Eintrag
stehen haben. Also nicht in eine extra Sub. Und dem Button brauchst Du auch kein Makro zuordnen.
Wenn Du jetzt aber neben dem OK noch ein Abbrechen haben willst, dann lass es so wie es ist.
Du müsstest doch langsam wissen das dies keine Fehlerbeschreibung ist. Auch hier in der Makro-Ecke ist es sehr wichtig Fehlermeldungen uns mitzuteilen. Und die dürfen durchaus etwas ausführlicher sein. Auch wenn dir jetzt mein Ton nicht gefällt, aber das muss so sein. Ohne eine genaue Fehlerbeschreibung, oder deren Wortlaut, kann es mitunter vorkommen das man sich wie ein Idiot einen Wolf nach dem möglichen Fehler sucht. Und je umfangreicher ein Code ist, umso stressiger wird dann die Suche.
Aber nun gut. Kommen wir zu dem Übeltäter:
Die sagt auch schon genau das aus was sache ist. Das nämlich die Objektvariable nicht belegt ist.
"Aber Halt Stop! Ich hab sie doch belegt!" Würdest Du jetzt dazwischen rufen.
Stimmt ja auch. Du hast sie belegt, die myDialog. Aber dummerweise gleich 2 mal. Und das ist dein Eigentor. Und warum?
Ganz einfach.
Weil zu anfang hast Du sie als Public deklariert, was vollkommen korrekt ist. Aber in der Sub hast Du sie noch mal deklariert. Und nun ist sie nicht mehr Öffentlich, sondern nur noch Lokal. Und das bedeutet, sie ist nur in dieser einen Sub gültig und sonst nirgends mehr. Also steht in der Sub cmd_Abbrechen keine gültige Variable mehr zur Verfügung, da sie ja nur in der anderen Sub ihre gültigkeit besitzt.
Und das beudeutet für dich als Fehlerbeseitigung: Lösche die deklaration in der Sub, so das sie ganz am Anfang Öffentlich steht.
Und dann ändere das hier
ganz einfach in das um
Sollte so reichen.
Viel Spaß noch in der Wundersamen Welt der Programmierung, Du Pink Panther
.
Gruß
balu
bei den Buttons gibt es 3 Funktionen die schon fest vorgegeben sind:
- OK
- Abbrechen
- Hilfe
Zu finden in dem dementsprechenden Kontextmenü für den Button, und zwar bei:
- Art der Schaltfläche
Du willst jetzt also einen Abbrechen-Button erstellen der nix anderes macht als den Dialog zu beenden? Das ist zu umständlich. Nimm doch stattdessen die Einstellung Ok. Dazu musst Du aber in deiner Sub
Code: Alles auswählen
TextField1
Code: Alles auswählen
myDialog.endExecute()
Wenn Du jetzt aber neben dem OK noch ein Abbrechen haben willst, dann lass es so wie es ist.
Wie lange bist Du hier schon aktiv?aber der erste Button für Abbrechen macht mir schon Ärger
Du müsstest doch langsam wissen das dies keine Fehlerbeschreibung ist. Auch hier in der Makro-Ecke ist es sehr wichtig Fehlermeldungen uns mitzuteilen. Und die dürfen durchaus etwas ausführlicher sein. Auch wenn dir jetzt mein Ton nicht gefällt, aber das muss so sein. Ohne eine genaue Fehlerbeschreibung, oder deren Wortlaut, kann es mitunter vorkommen das man sich wie ein Idiot einen Wolf nach dem möglichen Fehler sucht. Und je umfangreicher ein Code ist, umso stressiger wird dann die Suche.
Aber nun gut. Kommen wir zu dem Übeltäter:
Code: Alles auswählen
Objektvariable nicht belegt
"Aber Halt Stop! Ich hab sie doch belegt!" Würdest Du jetzt dazwischen rufen.
Stimmt ja auch. Du hast sie belegt, die myDialog. Aber dummerweise gleich 2 mal. Und das ist dein Eigentor. Und warum?
Ganz einfach.
Weil zu anfang hast Du sie als Public deklariert, was vollkommen korrekt ist. Aber in der Sub hast Du sie noch mal deklariert. Und nun ist sie nicht mehr Öffentlich, sondern nur noch Lokal. Und das bedeutet, sie ist nur in dieser einen Sub gültig und sonst nirgends mehr. Also steht in der Sub cmd_Abbrechen keine gültige Variable mehr zur Verfügung, da sie ja nur in der anderen Sub ihre gültigkeit besitzt.
Und das beudeutet für dich als Fehlerbeseitigung: Lösche die deklaration in der Sub, so das sie ganz am Anfang Öffentlich steht.
Und dann ändere das hier
Code: Alles auswählen
CreateUnoDialog( DialogLibraries.Standard.getByName("Dialog1") )
Code: Alles auswählen
CreateUnoDialog( DialogLibraries.Standard.Dialog1)
Viel Spaß noch in der Wundersamen Welt der Programmierung, Du Pink Panther

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
wehr rächtschraipfähler findet khan si behalden

Re: String während Laufzeit manuell ändern
Hallo Balu,
danke für die Erklärungen das mit der doppelten Deklaration hätte ich allein nie auf den Schirm gekriegt
oder die verschiedene Buttontypen wo bei mir da auffällt zwischen dem typ Abbrechen und OK kann ich keinen funktionalen Unterschied feststellen.
Es ist egal welchen Button ich anklicke es wird der String ausgegeben
danke für die Erklärungen das mit der doppelten Deklaration hätte ich allein nie auf den Schirm gekriegt
oder die verschiedene Buttontypen wo bei mir da auffällt zwischen dem typ Abbrechen und OK kann ich keinen funktionalen Unterschied feststellen.
Es ist egal welchen Button ich anklicke es wird der String ausgegeben
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox