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:
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".
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.
Genau so wie du das beschrieben hast läuft das Ganze ab. Hast Deine Hausaufgaben gut gemacht.
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
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