Problem beim Aufruf eines Dialogs

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Problem beim Aufruf eines Dialogs

von Mihilist » Mi, 27.09.2006 13:08

Nach execute() kommt auch nur End Sub... :)

Code: Alles auswählen

Sub zeige_Detail
   dlg_frmMain = ThisComponent.Drawpage.Forms.getByName("frmMain")
   dlg_frmHist = dlg_frmMain.getByName("frmPF").getByName("frmHist")

   if dlg_frmHist.isBeforeFirst OR dlg_frmHist.isAfterLast then
      zeige_Neu
   else
      'Laden:
      DialogLibraries.loadLibrary("Standard")
      dialog = CreateUnoDialog(DialogLibraries.Standard.NeuerVorgang)

      'Vorbereitungen:
      fuelle_liste
      dialog.getControl("lstArt").selectItem(dlg_frmHist.getString(4), True)

      dialog.getControl("txtHistory").Text = dlg_frmHist.getString(5)
      dialog.getControl("txtProblem").Text = dlg_frmHist.getString(6)
      dialog.getControl("txtMuster").Text = dlg_frmHist.getString(7)
      dialog.getControl("txtVorgehen").Text = dlg_frmHist.getString(8)
      dialog.getControl("txtBemerkung").Text = dlg_frmHist.getString(9)

      dialog.getControl("chkErledigt").State = dlg_frmHist.getString(10)
      dialog.getControl("chkEDV").State = dlg_frmHist.getString(11)
      dialog.getControl("chkDringend").State = dlg_frmHist.getString(12)

      dialog.getControl("btnOK").Enable = True
      'Und ab dafür!
      dialog.Execute
   end if
End Sub

Sub fuelle_liste
   Dim ds As Object

   dialog.getControl("lstArt").removeItems(0, dialog.getControl("lstArt").getItemcount)
   ds = dlg_frmMain.ActiveConnection.createStatement.executeQuery("SELECT Art FROM VorgangArt")
   While ds.Next
      dialog.getControl("lstArt").addItem(ds.getString(1), dialog.getControl("lstArt").getItemcount)
   WEnd
End Sub

Sub beende_Dia_Abbruch
   dialog.EndExecute
End Sub
Zudem tritt das Problem ja bei allen Dialogen auf, nicht nur bei einem...

von Toxitom » Do, 21.09.2006 20:22

Hey Mihilist,

also, die 2.0.0 hate definitiv teilweise Schwierigkeiten im Code, aber an so etwas errinnere ich mich nicht. Hier würde ich - wie Michael - auf einen Programmierfehler tippen. Lässt sich natürlich schwierig ohne Code sagen, und wenn es bei der 2.01 und später nicht mehr auftritt, schieb es auf die 2.0 :-)
Im Ürigen bewirken dieine Codefragmente ja nur das Schliessen des Dialoges, das Makro wird dann immer nach der Zeile oDlg.execute() fortgesetzt. Denn dort pausierte das Makro! Also, entscheident ist immer, was danach steht.

Gruss
Thomas

von Mihilist » Do, 21.09.2006 16:56

Da hast du natürlich recht. Aber das .execute() hat keine Schleife. Ich hab ja auch erstmal an meinen Fähigkeiten gezweifelt, aber: Bei mehreren Dialogen auf einmal...? :lol:

Darum dachte ich, dass vielleicht OOo 2.0 da irgendwelche bekannten Probleme hat...

von ykcim » Do, 21.09.2006 16:43

Mal ehrlich ... :oops:

Eine Schleife entsteht nicht unbedingt am Ende des Dialoges sondern auch am Anfang. Der Aufruf des Dialoges könnte noch mal kommen.

Sinngemäß so:

(Global) weiter=true
while weiter=true
dia.execute
wend

Solange weiter nicht auf false gesetzt kann die endexecute() Funktion machen was sie will.
Also besagt die Richtigkeit von

Code: Alles auswählen

Sub dia_abb
    dia.endExecute
End Sub
nicht unbedingt was über den Aufruf des Dialoges aus.


Ist ja auch nur ein Tipp gewesen. Weil halt manchmal nicht das Programm....


mfg
Michael

von Mihilist » Do, 21.09.2006 16:24

Klingt sogar sehr nach Endlosschleife.

Aber mal ehrlich: Wo kann der Programmierfehler bei

Code: Alles auswählen

Sub dia_abb
    dia.endExecute
End Sub
liegen...?

Das tritt auf dem anderen Rechner bei mehreren Dialogen auf, bei mir und noch einem anderen Rechner garnicht.

von ykcim » Do, 21.09.2006 16:19

Könnte es ein Programmierfehler sein? Die Tatsache das er wieder schön in der Mitte steht, klingt nach einem erneuten Aufruf des Dialoges.
Wäre nicht die erste Endlos-Schleife .....

mfg
Michael

von Mihilist » Do, 21.09.2006 16:16

Grüazi.

Ich wurde eben noch auf ein anderes Problem mit Dialogen hingewiesen: Mein Chef hat nun auch ein wenig das fast fertige Formular getestet und hatte das Problem, dass er Dialoge nicht schließen konnte... Sowohl der (an sich überflüssiger) "Abbruch"-Button (der nur ein .endExecute() ausführt), als auch der "Ausführen"-Button (der mehr Code ausführt, aber auch mit .endExecute() beendet), als auch das Kreuz oben rechts haben alle zum gleichen Ergebnis geführt:
Der Dialog wird zwar geschlossen, aber sofort wieder angezeigt (schön zentriert, wenn man ihn vorher verschoben hat). Ist natürlich kein Zustand: Mit geöffnetem Dialog kann man nichts mehr am Dokument arbeiten, auch nicht am Base-Container. Als einzige Möglichkeit blieb uns nun, OOo abzuwürgen und neu zu starten...

Kann das an Version 2.0 liegen? Mit 2.0.2 und 2.0.3 hat's das Problem jedenfalls nicht...

Beste Grüße

Thomas

von ejomi » Do, 21.09.2006 14:05

Hallo Jungs!

Habe Eure Diskussion mit Interesse gelesen und kann nur bestätigen: OO spinnt recht oft, solange ein Programm in Entwicklung ist. Ich habe den Eindruck, daß OO z.B. beim Löschen, Verschieben oder Umbennen von Prozeduren den internen Quellcode nicht richtig defragmentiert - könnte das sein?

Wenn ich z.B. in der "Makro-Verwaltung" Dialoge oder ganze Bibliotheken per drag & drop verschiebe, kommt es vor, daß das gesamte Programm samt Formular- und Dialog-Anhang spurlos verschwindet!

Ich habe mir so geholfen:

1. Wenn mein Programm-Ablauf Funktions-klar und eigene Fehler praktisch ausgeschlossen sind, kopiere ich den ganzen Salat modulweise als reinen Text ins Notepad und speichere die Code-Schnipsel als .txt einzeln ab.

2. Dann öfne ich ein junfräuliches Writer-Dokument parallel zur Datenbank und markiere alle Steuerelemente meines Formulars und kopiere diese per Zwischenablage in das Writer-Dokument und speichere es als .odt Datei.

3. Dann öffne ich eine neue, jungfräuliche Datenbank, öffne ein neues Formular in der Entwurfs-Ansicht und kopiere die Steuerelemente aus meinem Writer-Dokument zurück. (Achtung: in List- und Comboboxen werden die SQL-Anweisungen nicht mitkopiert - die müssen von Hand nachgetragen werden!)

4. Dann baue ich unter diesem frischen Formular alle Strukturen und Modul-Verzeichnisse sauber entspechend dem Ursprungs-Programm nach und kopiere nun stückweise meine Code-Schnipsel per Notepad in diese Verzeichnisse. Ganz zum Schluß baue ich dann noch die Dialog-Fenster.

Nach dieser grausigen Aktion laufen dann meine Programme tatsächlich völlig fehlerfrei! Funny, isn it?

Gruß: ejomi

von Toxitom » Di, 19.09.2006 17:54

Hey,

ja, ich nutze Win XP SP2, habe aktuell OOo 2.0.3 drauf.

Gruss
Thomas

von Mihilist » Di, 19.09.2006 17:41

Hi

Joar, finde ich an sich auch unwahrscheinlich. Aber es ist eine Gemeinsamkeit, und unwahrscheinlich heißt nicht viel :D

Ich hoffe wir finden die Ursache mal, denn die ständigen Probleme mit den Dias gehen mir auf den Geist. Ich brauch an einigen Stellen Dias...

Grüße
Thomas

von ykcim » Di, 19.09.2006 17:35

Hi,

glaube ich nicht. Ich arbeite mit XP und habe auch nicht solche Probleme.
Und ich mache viel mit Dialogen.

Aber es muß eine Ursache geben!

mfg
Michael

von Mihilist » Di, 19.09.2006 17:29

Hi!

Ich hab in 30min Feierabend und noch einiges zu tun... Übermorgen schau ich mal, ob was schlimmes drinne steht, und mail dir die Base-Datei.

Nutzt du WinXP? Mir fiel nämlich auf, dass der turtle auch WinXP benutzt. Vielleicht liegt's ja daran...? *kopfkratz*

Ansonsten probier ich übermorgen nochmal, ob sich der Fehler immer noch wiederhol und schick dir dann was.

von Toxitom » Di, 19.09.2006 17:16

Hey Mihilist,
@Thomas: Hast du mal bei dir versucht wie beschrieben Controls zu löschen, speichern, neustarten?
Ja. eigentlich jeden Tag. Hab aber gerade noch mal eine eigene Datei erzeugrt, einen Dialog, 40 Controls drauf, gespeichert.. Geschlossen, wieder geöffnet, ein paar Controls gelöscht, Makros laufen gehabt, geschlossen, wieder geöffnet, weiter Controld gelöscht, geschlossen, wieder geöffnet ....

Alles ohne Probleme, Controls sind weg, alles wie erwartet und wie es sein soll :-)

Sorry, ich kann das nicht nachvollziehen.

Gruss
Thomas

von Mihilist » Di, 19.09.2006 13:14

Na da bin ich ja froh, dass ich nicht der einzige bin...

@Thomas: Hast du mal bei dir versucht wie beschrieben Controls zu löschen, speichern, neustarten? Anscheinend liegt es ja doch nicht an meiner Datei...

Hab übrigens OOo 2.0.2 und WinXP Prof mit SP2

von turtle47 » Mo, 18.09.2006 19:52

Hallo Mihilist,

kann mich Deinen Erfahrungen nur anschließen.

Habe heute auch wieder mit Dialog und Makros gearbeitet,
anschließend gespeichert und die Anwendung geschlossen.

Nach öffnen der Datei war ein Teil der Makros verschwunden. :twisted:
Hatte auch Controls drin, die ich definitiv gelöscht habe und jetzt sind die wieder da.

Ist mir letzte Woche auch schon mal passiert.
Dachte ich hätte nicht gespeichert. Diesmal weis ich aber ganz genau, dass ich es gemacht habe.

Ausserdem fragt ja die Anwendung ja auch bei schließen ob man Speichern, Verwerfen oder Abbrechen möchte.


Jürgen

Nach oben