Controll-feld, Index auslesen
Moderator: Moderatoren
Controll-feld, Index auslesen
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
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
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Controll-feld, Index auslesen
...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
Die damit 'abgefangenen' Ereignisse ("KontrollElement-Inhalt geändert") können auf das auslösende control zugreifen.
Steht auch ein Beispiel in Andrews Makro-Dokument
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Controll-feld, Index auslesen
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 :
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 
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.
String auch
short auch (0, 1, 2) steht ja da
aber was bedeutet jetzt long ?? was wird da verlangt ?
Gruß Andreas
EDIT :
Code: Alles auswählen
cmdnext.Model.BackgroundColor = RGB ( 250, 50, 50)

- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Controll-feld, Index auslesen
Siehe F1 Online Hilfe, "Arbeiten mit Variablen"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 ?
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
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Controll-feld, Index auslesen
genieß es, ich habe wieder Tausende von saublöden Fragenkomma4 hat geschrieben:keksi1970 hat geschrieben: Habe gerade eine Schicht im Büro hinter mir ... erstmal Wochenende

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
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
Gruss
Andreas
Re: Controll-feld, Index auslesen
Hi Andreas,
suchst Du sowas:
Jürgen
suchst Du sowas:
Code: Alles auswählen
Dim Ctrl_Index as integer
Code: Alles auswählen
MyCtrl= Uescheindlg.getControl("NumericField" & Marktcount)
Ctrl_Index = MyCtrl.model.TabIndex
msgbox Ctrl_Index
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: Controll-feld, Index auslesen
hi Jürgen,
ich suche eher so etwas
Gruß Andreas
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
Re: Controll-feld, Index auslesen
Hallo Andreas,
dann lies doch den Namen des Kontrollfeldes vorher aus:
und dann
dann lies doch den Namen des Kontrollfeldes vorher aus:
Code: Alles auswählen
Ctrl_Name = MyCtrl.model.Name
Code: Alles auswählen
MyCtrl= Uescheindlg.getControl(Ctrl_Name)
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: Controll-feld, Index auslesen
hi
stellt sich die Frage, wie belege ich die nicht belegte Objektvariable ?
Gruß Andreas
stellt sich die Frage, wie belege ich die nicht belegte Objektvariable ?
Gruß Andreas
Re: Controll-feld, Index auslesen
Code: Alles auswählen
Dim Ctrl_Name as String
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: Controll-feld, Index auslesen
also irgendwie funktioniert etwas nicht.
das versuche ich durch die änderung eines textfeldes innerhalb meines dialoges aufzurufen
bekomme aber nur die fehlermeldung, objektvariable nicht belegt
gruß andreas
Code: Alles auswählen
sub test
Dim Ctrl_Name as String
Ctrl_Name = MyCtrl.model.Name
msgbox ctrl_name
end sub
bekomme aber nur die fehlermeldung, objektvariable nicht belegt
gruß andreas
Re: Controll-feld, Index auslesen
Hallo Andreas,
Du musst dem Makro auch mitteilen wo sich das Objekt befindet:
Hilft das weiter?
Jürgen
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
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: Controll-feld, Index auslesen
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 ?
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
Code: Alles auswählen
Ctrl_Name = MyCtrl.model.Name
msgbox Ctrl_Name
Gruß Andreas
Gibts nicht sowas wie getcontrol(ACTIVE_FIELD) oder so ?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Controll-feld, Index auslesen
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:
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.
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.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)