Controll-feld, Index auslesen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Controll-feld, Index auslesen

Beitrag 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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Controll-feld, Index auslesen

Beitrag 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
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)
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Controll-feld, Index auslesen

Beitrag 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 :

Code: Alles auswählen

cmdnext.Model.BackgroundColor = RGB ( 250, 50, 50)
weiss zwar nicht was LONG bedeutet, aber dieses funktioniert ;)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Controll-feld, Index auslesen

Beitrag 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
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)
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Controll-feld, Index auslesen

Beitrag 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 :D

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.
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Controll-feld, Index auslesen

Beitrag 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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Controll-feld, Index auslesen

Beitrag von turtle47 »

Hi Andreas,

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
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
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Controll-feld, Index auslesen

Beitrag 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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Controll-feld, Index auslesen

Beitrag von turtle47 »

Hallo Andreas,

dann lies doch den Namen des Kontrollfeldes vorher aus:

Code: Alles auswählen

Ctrl_Name = MyCtrl.model.Name
und dann

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
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Controll-feld, Index auslesen

Beitrag von keksi1970 »

hi

stellt sich die Frage, wie belege ich die nicht belegte Objektvariable ?


Gruß Andreas
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Controll-feld, Index auslesen

Beitrag von turtle47 »

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
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Controll-feld, Index auslesen

Beitrag 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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Controll-feld, Index auslesen

Beitrag 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
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
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Controll-feld, Index auslesen

Beitrag 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

Code: Alles auswählen

Ctrl_Name = MyCtrl.model.Name
msgbox Ctrl_Name
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 ?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Controll-feld, Index auslesen

Beitrag 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.
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)
Antworten