Seite 1 von 1

[gelöst] Makro sucht "Aufrufer"

Verfasst: Mi, 21.01.2009 12:02
von oktobaer
Hallo!

Situation:
- In einem Dialaog gibt es u.a. zwei Textfelder (TF1 und TF2)
- jedes Textfeld ruft bei Änderung das selbe Makro (SUB Test) auf

Frage:
Wie kann das Makro wissen von welchem Textfeld der Aufruf kam um im entsprechenden Textfeld etwas veranlassen?

Vielleicht könnt Ihr mir helfen, denn ich weiß nicht mal wonach ich recherchieren soll ;-(

Vielen Dank!

Oktogrüße

Re: Makro sucht "Aufrufer"

Verfasst: Mi, 21.01.2009 14:53
von turtle47
Hi Oktobaer,

erstelle Dir für jedes Textfeld eine Hilfs_Sub welches Du von der jeweiligen Textbox aus ansprichst.
In der Hilfs_Sub wird die die Variable mitgegeben und das Stamm_Makro aufgerufen.

Code: Alles auswählen

Dim InfoTextfield as string
Sub Hilfs_Sub_1 'Wird von Textfeld1 angesprochen
	InfoTextfield = "Ich bin Textfeld1" ' Variable mitgeben
	Stamm_Makro 'Stamm_Makro aufrufen
End Sub

Sub Hilfs_Sub_2 'Wird von Textfeld2 angesprochen
	InfoTextfield = "Ich bin Textfeld2" ' Variable mitgeben
	Stamm_Makro ' Stamm_Makro aufrufen
End Sub

Sub Stamm_Makro
	msgbox InfoTextfield
	' .............. Dein weiterer Code
End Sub
Viel Erfolg.

Jürgen

Re: Makro sucht "Aufrufer"

Verfasst: Mi, 21.01.2009 15:56
von oktobaer
Hallo Jürgen!

Ja, so ähnlich habe ich es auch angedacht!
Wenn es jedoch mehr Felder werden wird das schnell unübersichtlich.

Dachte vielleicht könnte man irgendwie überprüfen welches Textfeld gerade aktiv ist->
gibt es sowas wie "getfocus"?

Danke für den Tipp!

Oktogrüße

Re: Makro sucht "Aufrufer"

Verfasst: Sa, 24.01.2009 16:03
von turtle47
Hi Oktobaer,
oktobaer hat geschrieben:gibt es sowas wie "getfocus"?
So ähnlich:

Code: Alles auswählen

myControlfield.hasFocus
Beigefügt mal eine Beispieldatei in der die Textfelder bei Fokuserhalt mit Text gefüllt werden.
Der Clou an der Sache ist, dass man noch nicht mal den Namen des Textfeldes kennen muss
und auch die Anzahl ist "beliebig". :lol:

Viel Spass damit.

Jürgen

Re: Makro sucht "Aufrufer"

Verfasst: So, 25.01.2009 17:23
von oktobaer
Hallo Jürgen!

Es kommt etwas Licht in mein Dunkel! ;-)

Code: Alles auswählen

Sub Auloeser_Kontrollfeld
	oFieldSet = oDlg.getControls
	For i = LBound(oDlg.Model.controlModels) to UBound(oDlg.Model.controlModels)
	FieldName = oFieldSet(i).Model.Name
	myControlfield = oDlg.getControl(FieldName)
	if myControlfield.hasFocus = True then
	myControlfield.Text = FieldName & "Erhaltener Focus = "  & x
	x = x + 1
	exit sub
	end if
	Next i
	x = x + 1
End Sub
Ich überlege noch was "LBound(oDlg.Model.controlModels)" bzw. UBound(oDlg.Model.controlModels)" bewirkt - aber vermutlich fragst Du damit ab wieviele Felder bzw. Boxen vorhanden sind. Anschließend geht das Makro der Reihe nach durch und prüft solange wer den Focus hat, bis der Spitzbube entdeckt ist! Klasse!

Vielen Dank für die Lösung!!

Oktobaer

Re: Makro sucht "Aufrufer"

Verfasst: So, 25.01.2009 18:15
von turtle47
Hallo Oktobaer,

na, dann muss ich ja meine Sonnenbrille aufsetzen. 8)

Genau so wie du das beschrieben hast läuft das Ganze ab. Hast Deine Hausaufgaben gut gemacht. :D

Code: Alles auswählen

x = x + 1
hatte ich mit eingebaut, um zu zeigen, das mal die Routine mehrmals aufrufen kann und dabei gezählt wird.
Also nur eine reine Spielerei von mir.

Die vorletzte Zeile

Code: Alles auswählen

x = x + 1
ist natürlich überflüssig und kann gelöscht werden. :(

Aber Du wirst den Code ja sowieso noch auf Deine Bedürfnisse anpassen.

Bis denne.

Jürgen

Re: [gelöst] Makro sucht "Aufrufer"

Verfasst: So, 25.01.2009 22:01
von oktobaer
Prima!

Eine Frage habe ich noch: Woher weißt Du, dass es "hasFocus" gibt?
Gibt es da eine Dokumentation wo ich sehen kann, dass es diese oder auch andere, vielleicht für mich in Zukunft nützliche, Eigenschaften gib?

... und was "oDlg.Model.controlModels" exakt tut!?


Danke!

OktoGrüße

Re: [gelöst] Makro sucht "Aufrufer"

Verfasst: So, 25.01.2009 23:11
von turtle47
Nabend Oktobaer,
oktobaer hat geschrieben:Woher weißt Du, dass es "hasFocus" gibt?
Hat Dir noch keiner Dir Xray empfohlen?
Ein echt tolles Tool zum untersuchen der Objekte Methoden und Eigenschaften. Dazu brauchst Du dann noch das SDK (Software Development Kit).
Im Moment funktioniert der Download leider nicht sollte aber bald wieder gehen.
oktobaer hat geschrieben:... und was "oDlg.Model.controlModels" exakt tut!
Vielleicht findet sich hier ja ein Spezialist, der Dir die Frage beantworten kann.
Bin doch nur ein kleiner Hobbyprogger.

Guts Nächtle.

Jürgen