[gelöst] MsgBox o.ä. selbst schließend

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: [gelöst] MsgBox o.ä. selbst schließend

Re: MsgBox o.ä. selbst schließend

von clag » Sa, 25.10.2025 14:02

für den Fall jemand möchte so etwas oder ähnliches, habe ich den Code noch ein bisschen aufgeräumt.
Das Makro dient dazu den aktuellen Zoom auf einen Wert einzustellen wo die "MicroSchritte" also Alt+ Pfeiltasten in Draw auf einen Wert eingestellt werden der zu 1 passt bzw ein passender Bruchteil ist , denn die krummen Zwischenwerte die Draw bei anderen Zoomwerten einstellt bringen das exakte einrasten durcheinander, nicht die Ansicht aber wenn man dann mit Alt+ Pfeiltasten Zeichnungselemente verschiebt, 0.7, 0.65 , 1.3 o.ä. machen in meinen Augen keinen Sinn.
Ich habe die beiden Zoom Makros auf Ctrl-Alt+Links und Ctrl-Alt+Rechts gelegt so kann ich schnell aus jeder Zoomstufe zur nächsten passenden Zoomstufe größer oder kleiner umstellen . Ich habe zwei Arten von Array verwendet zum Üben und die jeweilige MsgBox ist nur auskommentiert, kann man zum besseren Verständnis wieder aktivieren dann aber die "GrossAnzeige" auskommentieren. Der Dialog ist Bastelwerk kann man nichts zu hochladen, ganz simple ein Dialog mit einem LabelElement beides in gleicher HgFarbe und gut war es.

Code: Alles auswählen

Sub Zoom_enlarge

	Zoomy =  thiscomponent.currentcontroller.ZoomValue

' mit einem großen Array

	za = Array(Array(3000,  1763, 755,  587, 352, 278, 135, 66, 33,    16,     8),_
			Array(2382,  1411, 671,  535, 332, 265, 132, 66, 33,    16,     8),_
			Array(1764,  1059, 588,  482, 312, 252, 130, 66, 33,    16,     8),_
			Array("0.05", 0.1, 0.2, 0.25, 0.4, 0.5,   1,  2,  4,  8.25, 16.66))


	For i = UBound(za()(0)) To LBound(za()(0)) step -1
		if zoomy < za(1)(i) then 
			thiscomponent.currentcontroller.ZoomValue = za(1)(i)
			GrossAnzeige za(3)(i)
'			msgbox " aktueller Zoommittelwert auf " & za(1)(i) & "%" & chr$(10) &_
'					" eingestellt für : " & za(3)(i) & " mm Microsteps" & chr$(10) &_
'					" im Zoombereich von " & za(2)(i) & "% - " &  za(0)(i) & "%"
			exit sub 
		end if
	Next

' mit 4 einzelnen Arrays
'
'	zo = Array(3000,  1763, 755,  587, 352, 278, 135, 66, 33,    16,     8)
'	zm = Array(2382,  1411, 671,  535, 332, 265, 132, 66, 33,    16,     8)
'	zl = Array(1764,  1059, 588,  482, 312, 252, 130, 66, 33,    16,     8)
'	zx = Array("0.05", 0.1, 0.2, 0.25, 0.4, 0.5,   1,  2,  4,  8.25, 16.66)
'
'	For i = UBound(zo) To LBound(zo) step -1
'		if zoomy < zm (i) then 
'			thiscomponent.currentcontroller.ZoomValue = zm (i)
'			GrossAnzeige zx(i)
'			msgbox " aktueller Zoommittelwert auf " & zm(i) & "%" & chr$(10) &_
'					" eingestellt für : " & ZX(i) & " mm Microsteps" & chr$(10) &_
'					" im Zoombereich von " & zl(i) & "% - " &  zo(i) & "%"
'			exit sub 
'		end if
'	Next

End Sub



'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Sub Zoom_reduce

	Zoomy =  thiscomponent.currentcontroller.ZoomValue

	zo = Array(3000, 1763, 755,  587, 352, 278, 135, 66, 33, 16,       8)
	zm = Array(2382, 1411, 671,  535, 332, 265, 132, 66, 33, 16,       8)
	zl = Array(1764, 1059, 588,  482, 312, 252, 130, 66, 33, 16,       8)
	zx = Array(0.05,  0.1, 0.2, 0.25, 0.4, 0.5,   1,  2,  4, 8.25, 16.55) 


	For i = LBound(zo)+1 To UBound(zo)
	if i =10 then exit sub
		if zoomy > zo (i ) then 
			thiscomponent.currentcontroller.ZoomValue = zm(i )
 
'			msgbox " aktueller Zoommittelwert auf " & zm(i) & "%" & chr$(10) &_
'					" eingestellt für : " & ZX(i) & " mm Microsteps" & chr$(10) &_
'					" im Zoombereich von " & zl(i) & "% - " &  zo(i) & "%"
			GrossAnzeige zx(i)
			exit sub 
		end if
	Next

End Sub



'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Sub GrossAnzeige (anzeigewert)

	dialoglibraries.loadlibrary("Standard")
	oDlg = createUnoDialog(dialogLibraries.Standard.Dialog1)
	'	oDlg.GetControl("TextField1").text = anzeigewert & " mm Microsteps"
		oDlg.GetControl("Label1").text = anzeigewert & " mm"
		oDlg.setVisible(true)
        wait(1500)
End Sub



'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
die Zeile mit TextField1 kann eigentlich raus weil TextField mit einem blinkrenden Curser daherkam auch im "nur Lesen" Modus,
das war unschön darum nun Label1

Re: MsgBox o.ä. selbst schließend

von clag » Sa, 25.10.2025 11:34

Hallo Balu und alle anderen Leser,
nach etwa fummeln und nachlesen in verschiedenen Quellen habe ich es hinbekommen.
Der Hinweis von Balu war DER Türöffner nochmal Danke dafür. wenn man denn ersteinmal weiß wie der Zugriff auf den Dialog ist, ist es garnicht so wild.
capture_014_25102025_104902shrinkt2.jpg
capture_014_25102025_104902shrinkt2.jpg (145.7 KiB) 2156 mal betrachtet
so hatte ich mir das vorgestellt.

Re: MsgBox o.ä. selbst schließend

von clag » Fr, 24.10.2025 13:52

hallo Balu ersteinmal besten Dank
der verlinkte Beitrag liest sich so als wäre es das was ich suche
mal sehen ob ich das gebacken bekomm mein Basic wissen ist schon wieder ziemlich geüftet

aber noch eine Nachfrage zu meiem Problem kann man per Basic etwas in die Kopfzeile des Haupt Fensters etwas schreiben
also nach "MeineDatei OpenOffice Draw +...XXXX..." das wäre sogar noch besser weil der Wert dann immer sichtbar ist

Re: MsgBox o.ä. selbst schließend

von balu » Fr, 24.10.2025 13:03

Hallo clag.

Ja so sieht man sich wieder :-)
clag hat geschrieben: einfach eine unübersehbare Notiz zu einem Makro das vielfach eine Einstellung ctrl-alt-nach oben / nach unten ändert die sonst nicht offensichtlich ist.
Rate mal wieviele Fragezeichen sich grad vor mir auftun anhand dieses Satzes?

clag hat geschrieben: eine MesgBox o.ä. aufrufen mit sehr großem Text und selbst schließend nach X sekunden
Da kann dir geholfen werden.
Du arbeitest mit einem Makro, also nutze doch die Möglichkeiten einfach aus. Anstatt einer simplen und lächerlich kleinen MsgBox erstell dir doch selber einen eigenen Dialog.

NEIN! Nicht ein Dialog wie zwischen zwei Menschen, sondern ein Grafisches Fenster. Das kannst Du manigfaltig individuell gestalten: Textgröß, Hintergrundfarbe des Dialogs etc. etc.
Und anstatt die MsgBox aufzurufen, rufst Du den Dialog auf. Und das Thema "Zeit" dürfte auch kein Problem darstellen, denn die kannst Du selber einstellen.

Schau dir mal dieses Them an: nicht modale Dialoge


Viel Spaß beim testen ;-)



Gruß
Balu

[gelöst] MsgBox o.ä. selbst schließend

von clag » Mo, 20.10.2025 12:01

Hallo liebe Gemeinde, Kenner und Könner
folgendes würde ich gern realisieren :
aus einem ausgeführten Mkro heraus oder am Ende, eine MesgBox o.ä. aufrufen mit sehr großem Text und selbst schließend nach X sekunden , optimaler Weise in der der Mitte vom aktuellen Bild. einfach eine unübersehbare Notiz zu einem Makro das vielfach eine Einstellung ctrl-alt-nach oben / nach unten ändert die sonst nicht offensichtlich ist.
die normale MsgBox erfordert explizit Aufmerksamkeit was nach mehrfaclen ausführen des Makro nervt ;) oder auch gern eine andere Idee

Nach oben