Dialogelemente variabel ansprechen

Diskutieren Sie hier alle Fragen der Programmierung mit Corel Ventura Script
Antworten
VLevis
Beiträge: 2
Registriert: Do 14. Dez 2006, 16:09
Wohnort: Wien

Dialogelemente variabel ansprechen

Beitrag von VLevis » Do 14. Dez 2006, 16:42

Möchte Schreibarbeit sparen und das häufig gebrauchte Programmieren mit Corel Script etwas flexibler machen und suche eine Möglichkeit, Dialogelemente variabel anzusprechen.

Zur Veranschaulichung ein simples Beispiel. Es geht um um das "Befüllen" der Textfelder 1 und 2 in der Schleife im Event 0, was so natürlich nicht funktioniert. Gibt's dafür eine Syntax oder einen anderen Trick?

GLOBAL DF$(99, 9) ' Inhalt der 9 Datenfelder je Datenbankzeile

' DIALOG MENÜ
BEGIN DIALOG OBJECT M 187, 157, " [TITEL] (c) LL", SUB SubM
CANCELBUTTON 58, 125, 48, 14, .Abbrechen1
OKBUTTON 113, 125, 48, 14, .OK1
STATUS .Status1
TEXTBOX 35, 21, 50, 13, .Textfeld1
TEXTBOX 36, 44, 50, 13, .Textfeld2
' ETC. .... .Textfeld9
END DIALOG

RVM = DIALOG(M)

SUB SubM(BYVAL ControlID%, BYVAL Event%)
REM if Event<>0 then message Event & " : " & ControlID

' EVENT 0
IF Event = 0 THEN
gosub Datenbank_lesen
' Ersten Datensatz darstellen
for i = 1 to 9
M.Textfeld(i).settext DF(1, i)
next i
END IF

' ......

END SUB

Bin für jeden Tip dankbar,
Levis

wernerperplies
Beiträge: 189
Registriert: Di 14. Dez 2004, 08:01
Kontaktdaten:

Re: Dialogelemente variabel ansprechen

Beitrag von wernerperplies » Do 14. Dez 2006, 17:30

VLevis hat geschrieben:Möchte Schreibarbeit sparen und das häufig gebrauchte Programmieren mit Corel Script etwas flexibler machen und suche eine Möglichkeit, Dialogelemente variabel anzusprechen.

Zur Veranschaulichung ein simples Beispiel. Es geht um um das "Befüllen" der Textfelder 1 und 2 in der Schleife im Event 0, was so natürlich nicht funktioniert. Gibt's dafür eine Syntax oder einen anderen Trick?

GLOBAL DF$(99, 9) ' Inhalt der 9 Datenfelder je Datenbankzeile

' DIALOG MENÜ
BEGIN DIALOG OBJECT M 187, 157, " [TITEL] (c) LL", SUB SubM
CANCELBUTTON 58, 125, 48, 14, .Abbrechen1
OKBUTTON 113, 125, 48, 14, .OK1
STATUS .Status1
TEXTBOX 35, 21, 50, 13, .Textfeld1
TEXTBOX 36, 44, 50, 13, .Textfeld2
' ETC. .... .Textfeld9
END DIALOG

RVM = DIALOG(M)

SUB SubM(BYVAL ControlID%, BYVAL Event%)
REM if Event<>0 then message Event & " : " & ControlID

' EVENT 0
IF Event = 0 THEN
gosub Datenbank_lesen
' Ersten Datensatz darstellen
for i = 1 to 9
M.Textfeld(i).settext DF(1, i)
next i
END IF

' ......

END SUB

Bin für jeden Tip dankbar,
Levis
Hallo Levis,

zuerst einmal vorweg:

Ich denke Corel Ventura Script ist für solch einen Job denkbar ungeeignet. Ich würde hier eine andere Sprache benutzen, eine DLL erzeugen und diese con Corel Script aufrufen.

Wenn ich die Aufgabenstellung richtig verstehe, möchtest Du eine Reihe von Datensätzen der Reihe nach anzeigen und bearbeiten.

Ich denke das ist mit Corel Ventura Script nicht möglich, da ich keine Möglichkeit sehe, eine Textbox variabler Größe zu erzeugen, da Corel Ventura Script meines Wissens keine Windowserzeugung mit Funktionen vorsieht.

Du müsstest also immer die Textboxen fest definieren.

Außerdem erlaubt Corel Script auch die Verwendung von Arrayelementen in den Textbox-Statements nicht, d. h.
TEXTBOX 36, 44, 50, 13, .aField(I) führt zu einem Syntaxfehler.

Damit verbietet sich auch das Laden diese Inhalte über

for i = 1 to 9
M.aFields(I).settext DF(1, i)
next i

Während so etwas natürlich problemlos funktioniert:

for i = 1 to 9
aFields(I) = "Werner" + STR(I)
next i

Wenn ich nichts übersehen habe, gibt es nur die obengenannte Möglichkeit, eine andere Programmiersprache zu benutzen, oder alternativ die gewünschte Funktialität über Aufrufe von Funktionen des Windows-Applikationsinterfaces (API-Funktionen) zu erreichen.

Leider weiß ich im Moment keine bessere Antwort.
Einen schönen Tag wünscht

Werner Perplies

MultiSaveAsPro:
https://www.weepee.de/corel_scripts/mul ... tupger.exe

VLevis
Beiträge: 2
Registriert: Do 14. Dez 2006, 16:09
Wohnort: Wien

Beitrag von VLevis » Do 14. Dez 2006, 18:08

Hallo, Werner!

Herzlichen Dank für die prompte Antwort.

Was ganz spezielle Datenbankapplikationen betrifft, hast Du natürlich recht, daß es nahe liegt, sich anderer Mittel als Corel Script zu bedienen.
Ich schreibe meine Scripts aber hauptsächlich, um ganz normale Vorgänge in Ventura zu steuern oder Einstellungen abhängig von Einträgen im Dialog vorzunehmen, aber auch da kommt es natürlich vor, daß gewisse Werte und Eingabemöglichkeiten von einer einzigen Variablen abhängig gemacht werden können/sollten, und nichts wäre angenehmer, als könnte man z.B. solche simplen Anforderungen so gestalten.

x = 6
for i = 1 to x
M.Checkbox(i).setvalue 0
M.Checkbox(i).enable false
next i
for i = x + 1 to 9
M.Checkbox(i).enable true
next i

Aber ich muß mich wohl damit abfinden, daß das außerhalb der Möglichkeiten von Corel Script liegt.

Nochmals Dank und Gruß aus Wien,
Levis

Antworten