[gelöst] Makro sucht "Aufrufer"
Moderator: Moderatoren
[gelöst] Makro sucht "Aufrufer"
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
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
Zuletzt geändert von oktobaer am So, 25.01.2009 21:56, insgesamt 1-mal geändert.
Servus
Claus
Claus
Re: Makro sucht "Aufrufer"
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.
Viel Erfolg.
Jürgen
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
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Makro sucht "Aufrufer"
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
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
Servus
Claus
Claus
Re: Makro sucht "Aufrufer"
Hi Oktobaer,
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
So ähnlich:oktobaer hat geschrieben:gibt es sowas wie "getfocus"?
Code: Alles auswählen
myControlfield.hasFocus
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
- Dateianhänge
-
- Focus_Textfield.ods
- (11.25 KiB) 82-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Makro sucht "Aufrufer"
Hallo Jürgen!
Es kommt etwas Licht in mein Dunkel!
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
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
Vielen Dank für die Lösung!!
Oktobaer
Servus
Claus
Claus
Re: Makro sucht "Aufrufer"
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
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.

Code: Alles auswählen
x = x + 1
Also nur eine reine Spielerei von mir.
Die vorletzte Zeile
Code: Alles auswählen
x = x + 1

Aber Du wirst den Code ja sowieso noch auf Deine Bedürfnisse anpassen.
Bis denne.
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: [gelöst] Makro sucht "Aufrufer"
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
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
Servus
Claus
Claus
Re: [gelöst] Makro sucht "Aufrufer"
Nabend Oktobaer,
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.
Bin doch nur ein kleiner Hobbyprogger.
Guts Nächtle.
Jürgen
Hat Dir noch keiner Dir Xray empfohlen?oktobaer hat geschrieben:Woher weißt Du, dass es "hasFocus" gibt?
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.
Vielleicht findet sich hier ja ein Spezialist, der Dir die Frage beantworten kann.oktobaer hat geschrieben:... und was "oDlg.Model.controlModels" exakt tut!
Bin doch nur ein kleiner Hobbyprogger.
Guts Nächtle.
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem