Seite 1 von 2
Controll-feld, Index auslesen
Verfasst: Fr, 29.02.2008 21:17
von keksi1970
Hi Leute,
Also ich habe mehrere "Eingabefelder" in meinem Dialog, und würde gerne bei einer Änderung in einer Variablen den Index dieses geänderten Feldes abspeichern.
(BSP : Änderung in MARKT3, marktindex = INdex des Feldes mit dem Namen "MARKT3"
Anschliessend mit Select Case die Indexe bewerten und Verschiedene Variablen zuordnen.
Case 150
Zeile = 15
Spalte = 4
Name = (Feldname)
usw
Ziel ist es, nur eine einzige Eingaberoutine zu erstellen, mit dem Index des geänderten Feldes als Hauptmerkmal
Gruss Andreas
Re: Controll-feld, Index auslesen
Verfasst: Fr, 29.02.2008 21:45
von komma4
...es wird Zeit, dass Du Dir das Prinzip der
Listener mal anschaust.
Die damit 'abgefangenen' Ereignisse ("KontrollElement-Inhalt geändert") können auf das auslösende
control zugreifen.
Steht auch ein Beispiel in
Andrews Makro-Dokument
Re: Controll-feld, Index auslesen
Verfasst: Fr, 29.02.2008 22:06
von keksi1970
hmmm, danke, aber du weisst ja, mein english ist nicht das Beste.
Als Alternative würde ich vorschlagen, wenn ich mir Teile der Seite anschauen soll, den direkten Link dahin Posten, weil ich mir sonst jedesmal das ganze Inhaltsverzeichnis durchlesen muss und bei jedem Satz überlege, ist es das was ich suche ? Und jedesmal verhaspel ich mich dabei und finde gar nichts :/
Und was sind Listener ? Zuhörer ?
btw :
Code: Alles auswählen
Model.State (Short): Zustand des Kontrollkästchens (0: Nein, 1: Ja, 2: Zwischenzustand).
Model.Tabstop (Boolean): ermöglicht die Ansteuerung des Steuerelements mit der Tabulatortaste.
Model.TextColor (Long): Textfarbe des Steuerelements.
Model.HelpText (String): Hilfetext, der angezeigt wird, wenn der Mauszeiger über dem Steuerelement verharrt.
Boolean ist klar, true and false
String auch
short auch (0, 1, 2) steht ja da
aber was bedeutet jetzt long ?? was wird da verlangt ?
Gruß Andreas
EDIT :
weiss zwar nicht was LONG bedeutet, aber dieses funktioniert

Re: Controll-feld, Index auslesen
Verfasst: Sa, 01.03.2008 17:05
von komma4
keksi1970 hat geschrieben:
Boolean ist klar, true and false
String auch
short auch (0, 1, 2) steht ja da
aber was bedeutet jetzt long ?? was wird da verlangt ?
Siehe F1 Online Hilfe, "Arbeiten mit Variablen"
Dein RGB-Beispiel funktioniert deshalb, weil RGB() wieder eine Funktion ist, die ein LONG zurückgibt (wieder: F1)
Zum
Listener (übersetze ich gerne mit "Lauscher") muss ich ein Beispiel aufbereiten: vielen Objekten kann so ein Teil verpasst werden. Erlauscht die Funktionalität, dass ein Ereignis ausgelöst wurde (Textbox-Inhalt geändert) dann wird eine Unterroutine angesteuert.
Habe gerade eine Schicht im Büro hinter mir ... erstmal Wochenende
Re: Controll-feld, Index auslesen
Verfasst: Sa, 01.03.2008 18:08
von keksi1970
komma4 hat geschrieben:keksi1970 hat geschrieben:
Habe gerade eine Schicht im Büro hinter mir ... erstmal Wochenende
genieß es, ich habe wieder Tausende von saublöden Fragen
Zum Thema, ich würde gerne mit verschiedenen Feldern in meinem Dialog (textfelder UND numeric-fields) dieselbe Routine ansprechen, um aber zu den variablen WErte hinzuzuaddieren muss ich natürlich das Feld kennen, welches die Routine ausgelöst hat.
aber den Rest erst morgen Abend wieder .
Gruß Andreas
btw : hast recht gehabt mit der Eingabe-routine, ich kann dieses glaube ich, nicht in einer Schleife lösen.
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 12:36
von keksi1970
so, habe mir jetzt Dutzende von Google Seiten angeguckt und weiss immer noch nix, ich glaube, ohne dein Beispiel bin ich völlig aufgeschmissen
Gruss
Andreas
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 13:15
von turtle47
Hi Andreas,
suchst Du sowas:
Code: Alles auswählen
MyCtrl= Uescheindlg.getControl("NumericField" & Marktcount)
Ctrl_Index = MyCtrl.model.TabIndex
msgbox Ctrl_Index
Jürgen
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 16:42
von keksi1970
hi Jürgen,
ich suche eher so etwas
Code: Alles auswählen
MyCtrl= Uescheindlg.getControl(KONTROLLFELD,welches dieses SUB ausgelöst hat)
MyText = MyCtrl.Model.Text
case select mytext
case markt
Spalte = 12
case stellplatz
Spalte = 14
usw
Gruß Andreas
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 17:05
von turtle47
Hallo Andreas,
dann lies doch den Namen des Kontrollfeldes vorher aus:
und dann
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 18:23
von keksi1970
hi
stellt sich die Frage, wie belege ich die nicht belegte Objektvariable ?
Gruß Andreas
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 18:33
von turtle47
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 18:42
von keksi1970
also irgendwie funktioniert etwas nicht.
Code: Alles auswählen
sub test
Dim Ctrl_Name as String
Ctrl_Name = MyCtrl.model.Name
msgbox ctrl_name
end sub
das versuche ich durch die änderung eines textfeldes innerhalb meines dialoges aufzurufen
bekomme aber nur die fehlermeldung, objektvariable nicht belegt
gruß andreas
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 18:53
von turtle47
Hallo Andreas,
Du musst dem Makro auch mitteilen wo sich das Objekt befindet:
Code: Alles auswählen
sub test
Dim Ctrl_Name as String
MyCtrl= Uescheindlg.getControl("Markt1")'Das fehlt bei Deinem Code
Ctrl_Name = MyCtrl.model.Name
msgbox Ctrl_Name
end sub
Hilft das weiter?
Jürgen
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 19:01
von keksi1970
hihi Jürgen,
ich will ja den namen weiterverarbeiten, und wenn ich ihn kenne, brauch ich ihn nicht auslesen

.
also nochmal :
ich habe 8 *8 Felder bunt gemischt, Textfelder und numeric-fields
und diese sollen alle mit derselben sub-routine funktionieren, nämlich
und zwar in Abhängigkeit davon, welches Objekt nun diese Routine ausgelöst hat, soll mir der Name des Objektes angezeigt werden
Gruß Andreas
Gibts nicht sowas wie getcontrol(ACTIVE_FIELD) oder so ?
Re: Controll-feld, Index auslesen
Verfasst: So, 02.03.2008 21:08
von komma4
Ich bin mit nach dem nochmaligen Durchlesen der Anfrage nicht mehr sicher was Dir passt.
Du möchtest einen Wert aus den Eingabefeldern eines Dialogs übernehmen, warum muss dass mit einer zentralen Routine geschehen?
Warum geht nicht so etwas:
Code: Alles auswählen
Sub getMarkt1()
call bearbeiteMarkt(1)
End Sub
Sub getMarkt2()
call bearbeiteMarkt(2)
End Sub
Sub bearbeiteMarkt( Nr as Integer )
print oDialog.getControl( "Markt" & Nr ).getText()
End Sub
Und: Du brauchst keine
Listener (augenblickliche Übernahme der Werte), wenn Du nach dem Drücken einer Schaltfläche oder beim Schliessen des Dialogs die Werte ausliest und bearbeitest.
Nochmal die Frage: warum muss direkt bei Änderung etwas ausgelöst werden?
Zu Ereignissen:
man kann hier einen
FocusListener einsetzen, der beim Verlassen des EIngabefeldes ausgelöst wird. Beispiel folgt.