Problem beim Aufruf eines Dialogs

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

Moderator: Moderatoren

Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Mihilist
****
Beiträge: 120
Registriert: Di, 25.04.2006 15:27
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Mihilist »

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.
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

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
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Mihilist
****
Beiträge: 120
Registriert: Di, 25.04.2006 15:27
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Mihilist »

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
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey,

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

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ejomi
***
Beiträge: 84
Registriert: Mi, 06.09.2006 15:20

Beitrag von ejomi »

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
Mihilist
****
Beiträge: 120
Registriert: Di, 25.04.2006 15:27
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Mihilist »

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
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

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
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Mihilist
****
Beiträge: 120
Registriert: Di, 25.04.2006 15:27
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Mihilist »

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.
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

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
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Mihilist
****
Beiträge: 120
Registriert: Di, 25.04.2006 15:27
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Mihilist »

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...
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Mihilist
****
Beiträge: 120
Registriert: Di, 25.04.2006 15:27
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von Mihilist »

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