Dialoge "X-en"

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: Dialoge "X-en"

Re: Dialoge "X-en"

von keksi1970 » So, 23.08.2009 12:56

OK

hab den "Fehler" daran gefunden.

Wenn der Dialog noch nicht fertig ist sollte man ihn nicht deaktivieren, da man sonst nicht aus dem "Testmodus" rauskommt.

Also erst fertig stellen, dann deaktivieren.

LG
Andreas

Re: Dialoge "X-en"

von keksi1970 » Do, 20.08.2009 12:18

Na, mir ging es eigentlich nur um das "X".

wenn Menschen ein "X" sehen, klicken sie drauf (erfahrungswerte)

Ausserdem kann ich nun vorschreiben, ob der Dialog beendet werden darf (fehlende Aktionen oder Bereitstellung von Informationen für andere, ebenso alle Verbindungen zur Datenbank schliessen usw.)

Die Informationen werden entweder durch einen Speicherbutton, oder beim verlassen einer Seite direkt in die Datenbank eingepflegt.

Bei deiner Variante ist der Dialog zuende, und genau das will ich ja nicht :D

LG
Andreas

Re: Dialoge "X-en"

von eBayer » Do, 20.08.2009 12:05

Hallo,
wenn Du NUR die im Dialog getätigten Eingaben oder die Variablen retten willst, ist das doch ganz einfach.
ich habe Dir mal eine funktionsreduzierte Funktion, aus der ich den Dialog aufrufe, hier hereinkopiert.
Schau Dir das mal an - ich hoffe, es hilft.
Jedenfalls kann Dir das X beim schließen ziemlich egal sein, weil Du bei Beendigung des Dialogs immer an der gleichen Stelle landest.
Gruß eBayer

Function DialogPLZ()
Dim oListbox As Object
Dim i As Integer, iResult As Integer
Dim aPLZ

DialogLibraries.LoadLibrary("Library1")

oDialog = CreateUnoDialog(DialogLibraries.Library1.DialogPLZ)
oDialog.setTitle("Auswahl Postleitzahl und Ort")
oListBox = oDialog.GetControl("LB_PLZ")

aPLZ = LadePLZ
for i=0 to ubound(aPLZ(),1)
oListbox.addItem(trim(aPLZ(0,i)) + " " + trim(aPLZ(1,i)),i) ' PLZ und Ort
next i
iResult = oDialog.execute()
' hier ist der Dialog beendet, aber alle Variablen und DialogControls sind noch vorhanden
' über iResult frage ich zusätzlich ab, wie der Dialog beendet wurde
' hier kannst Du alle Variablen und alle Inhalte von Controls z.B. in eine Textdatei sichern, um sie beim nächsten Aufruf des Dialogs wieder zu füllen
oDialog.dispose() ' jetzt wird der Dialog endgültig zerstört
End Function

Re: Dialoge "X-en" ///Gelöst ???

von keksi1970 » Do, 20.08.2009 11:31

So, hab da mal was getestet.

also bevor ich mir die Sache mit dem Listener antue, hab ich einfach mal in den Dialogeigenschaften den Dialog deaktiviert.

Stellt sich die Frage, ob das irgendwelche anderen Nachteile bringt.

Hat da jemand Infos ?

Re: Dialoge "X-en"

von keksi1970 » Mo, 22.06.2009 14:05

so was hab ich gesucht, ich werde es mal im laufe der Woche testen.
Danke

LG
Andreas

Re: Dialoge "X-en"

von hawkhunter2002 » Mo, 22.06.2009 09:30

Also wenn ich das richtig verstehe 8) willst du deine eigene Funktion beim drücken auf's "X".
Das ist natürlich möglich wenn du den Dialog programmierst, wie folgender Code zeigt.

Code: Alles auswählen

REM  *****  BASIC  *****

global EinstellungenDialog as object
global oWinListener 
global oCB1Listener
global oCB2Listener
dim oEvent1
dim oEvent2
dim oNix

Sub Dialog_Anzeigen
	EinstellungenDialogMod = createUnoService("com.sun.star.awt.UnoControlDialogModel")
	with EinstellungenDialogMod
		.setPropertyValue("BackgroundColor", (RGB(255,255,255)))
		.setPropertyValue("Height", 180)
		.setPropertyValue("Width", 70)
		.setPropertyValue("Title", "Einstellungen")
		.setPropertyValue("HelpText", "Bitte die gewünschten Einstellungen machen")
		
	end with
	
	EinstellungenDialog = createUnoService("com.sun.star.awt.UnoControlDialog")
        '****Der Listener für's X
	oWinListener = createUnoListener("bas2_", "com.sun.star.awt.XTopWindowListener")
	EinstellungenDialog.addTopWindowListener(oWinListener)
	EinstellungenDialog.setModel(EinstellungenDialogMod)
	oCB1Listener = createUnoListener("oCb1_", "com.sun.star.awt.XActionListener")
	oCB2Listener = createUnoListener("oCb2_", "com.sun.star.awt.XActionListener")
	REM die Checkbox
		oCheckbox1 = EinstellungenDialogMod.createInstance("com.sun.star.awt.UnoControlCheckBoxModel")
		with oCheckbox1
			.setPropertyValue("Label", "Checkbox_eins")
			.setPropertyValue("PositionX", 10)
			.setPropertyValue("PositionY", 10)
			.setPropertyValue("Height", 15)
			.setPropertyValue("Width", 140)
			.setPropertyValue("State", 0)
		end with
		EinstellungenDialogMod.insertByName("Checkbox1", oCheckbox1)
		oCheckbox1Control = EinstellungenDialog.getControl("Checkbox1")
		oCheckbox1Control.addActionListener(oCB1Listener)
	
	'Die zweite Checkbox
	
		oCheckbox2 = EinstellungenDialogMod.createInstance("com.sun.star.awt.UnoControlCheckBoxModel")
		with oCheckbox2
			.setPropertyValue("Label", "Checkbox_zwei")
			.setPropertyValue("PositionX", 10)
			.setPropertyValue("PositionY", 30)
			.setPropertyValue("Height", 15)
			.setPropertyValue("Width", 140)
		end with
		EinstellungenDialogMod.insertByName("Checkbox2", oCheckbox2)
		oCheckbox2Control = EinstellungenDialog.getControl("Checkbox2")
		oCheckbox2Control.addActionListener(oCB2Listener)	
	
	EinstellungenDialog.setPosSize(20, 270, 40, 40, 3)	
	EinstellungenDialog.setvisible(true)
	
End Sub


'************Die Aktion des Listeners fürs X
sub bas2_windowClosing()

	'Entfernen der Listener 
	EinstellungenDialog.removeTopWindowListener(oWinListener)
	EinstellungenDialog.getControl("Checkbox1").removeActionListener(oCB1Listener)
	EinstellungenDialog.getControl("Checkbox2").removeActionListener(oCB2Listener)
	'Schliesen des Dialogs
	EinstellungenDialog.dispose
end sub




'*********checkbox1 wird geändert***********
sub oCb1_actionPerformed(oEvent1)
	if EinstellungenDialog.getControl("Checkbox1").State Then
		msgbox "Checkbox1 ist aktiv"
	else
		msgbox "Checkbox1 ist inaktiv"
	end if		

end sub


'*********checkbox2 wird geändert***********
sub oCb2_actionPerformed(oEvent2)
	if EinstellungenDialog.getControl("Checkbox2").State Then
		msgbox "Checkbox2 ist aktiv"
	else
		msgbox "Checkbox2 ist inaktiv"
	end if		

end sub




'****Fenster wird aktiviert*******
sub bas2_windowActivated
	oVSize = EinstellungenDialog.getPosSize
	EinstellungenDialog.setPosSize(oVSize.X, oVSize.Y, oVSize.Width * 3, oVSize.Height  , 12)
	
end sub


'****Fenster wird deaktiviert*******
sub bas2_windowDeActivated
	oVSize = EinstellungenDialog.getPosSize
	EinstellungenDialog.setPosSize(oVSize.X, oVSize.Y, oVSize.Width * (1/3), oVSize.Height  , 12)
end sub
Die Methode den Dialog über Dialog.setvisible(true) anzuzeigen bietet die Möglichkeit, neben dem geöffneten Dialog weiter am Dokument zu arbeiten.
Die "normale" Methode wäre Dialog.execute() zum Anzeigen und Dialog.endexecute() zum Beenden.

Re: Dialoge "X-en"

von keksi1970 » Do, 18.06.2009 17:25

:D

war mir fast klar, leider kenne ich die "Action" nicht, die ein Klick auf das X auslöst :P

vielleicht so 2-3 kleine Tipps ?
bitte mit Erklärung, was ich da dann eigentlich mache :)

obwohl mir reichen würde, bei einem klick auf das X ein entsprechendes Makro auszuführen (Löschen des bis dahin eingegebenen Datensatzes)

LG Andreas

Re: Dialoge "X-en"

von komma4 » Do, 18.06.2009 17:18

Da wirst Du wohl einen ActionListener für den Dialog brauchen (ungetestet!)

Re: Dialoge "X-en"

von keksi1970 » Do, 18.06.2009 17:15

OK,

also anders,

wie kann ich das Schliessen eines Dialogs per "X" abfangen, die bis dahin geänderten variablen speichern, und den Dialog nach neustart wieder füllen ?

LG
Andreas

Re: Dialoge "X-en"

von komma4 » Do, 18.06.2009 16:56

nur, indem Du die hinterlegte Betriebssystemfunktion änderst.

Also: gar nicht.

Dialoge "X-en"

von keksi1970 » Do, 18.06.2009 16:44

Hi,

wie kann man das Schliessen eines Dialogs per"X" verhindern ?

LG
Andreas

Nach oben