temporäres Infofenster

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

Moderator: Moderatoren

Hansi
***
Beiträge: 56
Registriert: Mo, 04.04.2011 09:50

temporäres Infofenster

Beitrag von Hansi »

Hallo Leute,

es gibt Inputbox,die MSGBox. Gibt es auch eine Infobox? Ich brauche ein Box wo nur eine Meldung drin steht ohne Button.

So,wie zum zb. "Wird gespeichert...." und wenn der Vorgang beendet ist,verschwindet diese.

Gruß Hansi


Moderation,4: habe mir erlaubt Deinen Betreff zu ändern - "Dialogfenster" beinhaltet eine Interaktion mit dem Benutzer, und das möchtest Du ja nicht
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: temporäres Infofenster

Beitrag von komma4 »

Nein - ein solches Fenster gibt es IMHO bei OOo nicht.

Nehme statt dessen eine (Suchbegriff:) ProgressBar
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: temporäres Infofenster

Beitrag von balu »

Mahlzeit Hansi,

als fertige Lösung gibts so etwas nicht. Ich denk mir aber das man da vielleicht was machen kann. Schau mal hier, da hatte DPunch etwas ähnliches mal gemacht. Den Code versteh ich noch nicht so recht, aber da läuft eine voreingestellte Zeit (10 sek.) ab, und danach wird dann der eingeblendete Dialog geschlossen.

Gegenfrage.
Wofür brauchst Du das?
Vielleicht kann man da ja auch was anderes machen.


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
Hansi
***
Beiträge: 56
Registriert: Mo, 04.04.2011 09:50

Re: temporäres Infofenster

Beitrag von Hansi »

Hallo komma4 und balu,

also das mit "progressbar" gefällt mit gut,ich hab da auch schon ein paar Beispiele gesehen,aber ich versteh den Code nicht.

Bei meiner Windberechnung,(balu kennt diese ja schon) lagere ich die Daten aus.Sprich ich kann diese in einer extra Datei speichern.Nur, da das jetzt schon ca. 20000 Datenpunkte sind,dauert das etwas länger. und man sieht nicht,ob überhaupt gespeichert wird,oder wie lange es noch dauert.

Gruß Hansi
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: temporäres Infofenster

Beitrag von komma4 »

Hansi hat geschrieben:oder wie lange es noch dauert.
Den Zeitraum wirst Du auch kaum vorab einschätzen können ... aber Du hast die Anzahl Datensätze, vllt. kannst Du da was konstruieren.


Aus meiner Mottenkiste:

Code: Alles auswählen

Sub de48719
' 2011-06-04


' Beispiel Progressbar
oCurFrame = StarDesktop.CurrentFrame
oPB = _
 oCurFrame.createStatusIndicator()
 
 
maxWert = 100
 
oPB.Start( _
 "ich mache gerade was..." , maxWert )
 
wait 1000

for i = 1 to 10

   oPB.Value = 10 * i
   wait 1000 
   
Next i 

oPB.end()

End Sub

Kommst Du damit zurecht?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: temporäres Infofenster

Beitrag von balu »

Hallo Leute
komma4 hat geschrieben: aber Du hast die Anzahl Datensätze, vllt. kannst Du da was konstruieren.
No no! Geht doch nicht!
Begründung folgt gleich.

Hansi hat geschrieben: und man sieht nicht,ob überhaupt gespeichert wird,oder wie lange es noch dauert.
Ach darum gehts. Nun, da hab ich schlechte Nachrichten für dich.

Wenn Du jetzt meinst das Du z.B. durch eine Progressbar dir anzeigen lassen kannst wie weit der Speicherungsvorgang ist, dann kann ich nur aus eigener Erfahrung eins dazu sagen:
"Vergess es! Null Chance!"

Begründung.
Denn, so habe ich es zumnidest hier beobachten können, wenn OOo eine sehr große Calc-Datei speichert, dann schlägt die Prozessorlast (WinXP) bis zu 100% hoch und das so lange bis das die Datei fertig geschrieben ist. Und während diesem Vorgang ist OOo nicht dazu bereit irgendeinen anderen Befehl zu befolgen, geschweige denn eine Makroschleife abzuarbeiten. OOo kennt während dieser Zeit nur einen einzigen Befehl: "Speichern!", und diesen befolgt OOo Stur und Star und lässt sich durch nichts davon abbringen noch was anderes zu machen.

Ich stand auch schon vor diesem "Problem" und konnte nichts finden wie man eine Simultan-Aktion ausführt, Speichern und Makroausführung. Das gleiche Prozedere ist auch beim Öffnen/Laden einer Datei. Es kann nur das eine gemacht werden, jedoch aber nicht auch noch eine Makroschleife ausführen.

Selbst ein Versuch mit einer Animierten Grafik im Tabellenblatt hat nichts gebracht. Während des Speicherns friert dann auch diese Grafik ein.

Es wäre natürlich echt super-spitzen-klasse wenn es doch diese Möglichkeit gibt.


@Winfried
Wo soll mann denn in deinem Beispielcode den Speicherbefehl einbauen? Was natürlich nicht geht.
Vor der Schleife, oder in der Schleife?

Egal wo, es funktioniert nicht! Denn ein Makro wird ja Zeilenweise abgearbeitet (stimmt doch, oder?), und von daher spielt es fast keine Rolle wo der speichern Befehl steht. Vor der Schleife bringt nichts, da ja OOo dann nur damit beschäftigt ist zu speichern. Und wenn es dann damit fertig ist, kommt die Schleife dran. Jedoch ist dann die Schleife aber auch schon nutzlos, da ja alles erledigt ist.

Und wenn man den Befehl zum speichern in die Schleife einbaut, hagelt es Fehlermeldung da ja schon die Datei von OOo als "Blockiert" markiert ist.

Hab mich ja jetzt wohl nicht zu sehr als Besserwisser angehört, oder Winfried?
Denn wie gesagt, ich hatte mich selber schon mit diesem "Problem" befasst und keine Lösung finden können. Und diese Erfahrungswerte hab ich jetzt nur mal wieder gegeben.

Ich weiß jedoch nicht wie sich das verhalten könnte, wenn man anstatt eines Basic-Codes etwas vielleicht mit Java Basteln würde. Aber davon ha ich erst recht keine Ahnung.


Sorry Hansi das ich keine bessere Nachrichten für dich habe.


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
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: temporäres Infofenster

Beitrag von komma4 »

balu hat geschrieben:Hab mich ja jetzt wohl nicht zu sehr als Besserwisser angehört, oder Winfried?
Nö, absolut nicht. Du hast ja recht.

Also geht nur:
a) Dialog (selbst bauen, Bibliothek: Standard, Name: "BitteWarten") anzeigen
b) Speichern
c) Dialog schliessen


Code: Alles auswählen

GlobalScope.BasicLibraries.LoadLibrary( "Tools" )  
oDialog = LoadDialog( "Standard", "BitteWarten" )

oDialog.visible = TRUE
' hier die SPEICHERN-Routine
oDialog.endExecute()
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: temporäres Infofenster

Beitrag von komma4 »

balu hat geschrieben:Hab mich ja jetzt wohl nicht zu sehr als Besserwisser angehört, oder Winfried?
Nö, absolut nicht. Du hast ja recht.

Also geht nur:
a) Dialog (selbst bauen, Bibliothek: Standard, Name: "BitteWarten") anzeigen
b) Speichern
c) Dialog schliessen


Code: Alles auswählen

GlobalScope.BasicLibraries.LoadLibrary( "Tools" )  
oDialog = LoadDialog( "Standard", "BitteWarten" )

oDialog.visible = TRUE
' hier die SPEICHERN-Routine
oDialog.endExecute()
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: temporäres Infofenster

Beitrag von Stephan »

es gibt Inputbox,die MSGBox. Gibt es auch eine Infobox? Ich brauche ein Box wo nur eine Meldung drin steht ohne Button.

So,wie zum zb. "Wird gespeichert...." und wenn der Vorgang beendet ist,verschwindet diese.
Klar gibt es sowas, z.B. hat mottcxo (http://www.calc-info.de/makros.htm#mottco) einen entsprechenden Dialog:

info.gif
info.gif (2.74 KiB) 1287 mal betrachtet

Der Orginal-Code aus mottco ist:

Code: Alles auswählen

Sub erzeuge_warten()
warten_model = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
warten_model.setPropertyValue("Width",  150) '343
warten_model.setPropertyValue("Height", 20)
warten_model.SetPropertyValue("Title","Bitte etwas Geduld")

oMod_warten = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
With oMod_warten
	.setPropertyValue("Name","warten1")
	.setPropertyValue("PositionX",5) '192
	.setPropertyValue("PositionY",5) 
	.setPropertyValue("Width",140)
	.setPropertyValue("Height",13)
	.setPropertyValue("Label","Formatierung wird gelesen ...")
	'.setPropertyValue("Align",1)
	'nicht verfügbar in OOo 1.x
	'.setPropertyValue("VerticalAlign",1)
End With
warten_model.insertByName("warten1", oMod_warten)
warten_dialog = CreateUnoService("com.sun.star.awt.UnoControlDialog")
warten_dialog.setModel(warten_model)

oWin2 = CreateUnoService("com.sun.star.awt.Toolkit")
warten_dialog.createPeer(oWin2, null)
warten_dialog.setVisible(True)


End Sub



Gruß
Stephan
Antworten