Anleitung für Dialogerstellung gesucht

Mecki14

Mitglied
Registriert
15.03.06
Beiträge
2.835
Ort
Düsseldorf
Trophäen
einige {*} {!} * !
Ich habe mir inzwischen einige VB-Scripte zur Verwendung in FF geschrieben, u.a. das Script 'MFDL-Rahmen sortieren' (zu finden im Zubehörbereich). Wie das geht habe ich mit Anfänger-Kenntnissen von VisualBasic aus vorhandenen Scripten abgeguckt.

Jetzt möchte ich Dialoge erstellen und habe auch hier versucht, aus anderen Scripten zu lernen. Wenn ich mich noch eine Weile damit beschäftige, werde ich das sicher irgendwann auch begreifen. Aber vielleicht gibt es ja auch eine Anleitung dazu mit einem einfachen Beispiel oder es findet sich jemand, der bereit ist, eine solche Anleitung zu schreiben. Ich kann mir vorstellen, dass es dafür viele Interessenten gibt.

Wer kann helfen?
 
AW: Anleitung für Dialogerstellung

Hallo,

schade, das es hier keine Antwort gibt.
Ich versuche mich auch gerade an meinem ersten Script.
Ich möchte aus den selektierten Bildern in der Computeransicht eine KML-Datei erstellen.
Nur sollen die Bilder dort mit der URL meiner Webseite eingetragen werden.

Einen Dialog habe ich mir schon gebaut.
Die notwendigen Befehle sind ja auch vorhanden.

Nur eine Frage habe ich:
Wie schaffe ich es in VBScript einen Dialog geöffnet zu lassen, wenn der User einen Butten gedrückt hat?
Vor dem eigentlichen Export will ich z.B. prüfen, ob überhaupt Bilder selektiert sind. Das klappt auch, nur verschwindet der Dialog nach Ausgabe der Meldung via FF_MessageBox dann auch.
:-(

Kann mir da jemand helfen?
Gibt es irgendwo ein "Grundgerüst" eines modalen Dialogs für VBScript, welches man mit eigenen Steuerelementen und Funktionen füllen kann?

Grüße
Dirk
 
AW: Anleitung für Dialogerstellung

Hallo Dirk,

Du kannst schon beim Start des Skripts, bevor Du überhaupt den Dialog öffnen lässt überprüfen, ob ein Bild geladen ist und gegebenenfalls das Skript mit Fehlermeldung abbrechen.
Zum rest kann ich Dir nichts sagen, dabei kann Dir sicher W.P. weiterhelfen, der sich mit vbskript rect gut auskennt.

Schönen Gruß,

Martin
 
AW: Anleitung für Dialogerstellung

Nur eine Frage habe ich:
Wie schaffe ich es in VBScript einen Dialog geöffnet zu lassen, wenn der User einen Butten gedrückt hat?

Das lässt sich einfach mit einer Schleife lösen. Hier mal ein Demonstrationsbeispiel:
Code:
'FFSubmenu=Demo
'FFName=Befehlsschleife

'** Start Dialog Demo Befehlsschleife **
FF_AddDialog "Demo Befehlsschleife",105,73
FF_AddControl "Demo Befehlsschleife","Anzeige","EDIT",9,8,88,10
FF_AddControl "Demo Befehlsschleife","Taste A","BUTTON",14,22,33,11
FF_AddControl "Demo Befehlsschleife","Taste B","BUTTON",59,22,33,11
FF_AddControl "Demo Befehlsschleife","Ende","BUTTON",42,50,55,11
'** End Dialog Demo Befehlsschleife **

do
	Taste = FF_ShowDialog("Demo Befehlsschleife")		'Tastenbetätigung abfragen

	if Taste = "Ende" or Taste = "CANCEL" then	exit do	'CANCEL = x rechts oben

	if Taste = "Taste A" then
		FF_SetControl "Demo Befehlsschleife","Anzeige","Taste A wurde gedrückt"
	elseif Taste = "Taste B" then
		FF_SetControl "Demo Befehlsschleife","Anzeige","jetzt wurde Taste B gedrückt"
	end if
loop	

FF_CloseDialog("Demo Befehlsschleife")					'Dialog beenden

Ich habe inzwischen viel mit Dialogboxen experimentiert und auch einiges verstanden, aber leider immer noch nicht alles. Da es offensichtlich keine Anleitung gibt, überlege ich, ob ich mit meinem begrenztem Wissen selbst eine schreibe. Dazu suche ich Experten, die bereit wären, diese Beschreibung ggf. zu korrigieren, sie zu ergänzen oder einfach nur zu verbessern. Wer meldet sich?
 
AW: Anleitung für Dialogerstellung

Super!
Funktioniert wunderbar.

Grüße
Dirk
 
AW: Anleitung für Dialogerstellung

Hallo,

ein gängiges Dialoggerüst schaut etwa so aus:
Code:
[COLOR="green"]'Beispiel läßt sich beliebig ausbauen[/COLOR]
Option Explicit

Const WS_VSCROLL = &H200000	'Scrollbars
Const WS_HSCROLL = &H100000
Const WS_TABSTOP = &H10000	'TabStops
Const WS_BORDER = &H800000	'Border

[COLOR="green"]'Dim fso[/COLOR]

Main

[COLOR="green"]'Set fso = Nothing[/COLOR]

Sub Main
	[COLOR="green"]'Set fso = CreateObject("Scripting.FileSystemObject")[/COLOR]
	
	If DialogRun("Beispiel") = True Then
		DialogRun "Beispiel 1.x"
	Else
		Exit Sub
	End If
	MsgBox "Erfolgreich 2 Dialoge ausgeführt", vbInformation, "Beispieldialoge"
End Sub

Function DialogRun(Dlg)
	Dim sEvent

	If DialogCreate(Dlg) = False Then Exit Function
	
	Do
		sEvent = FF_ShowDialog(Dlg)
		Select Case sEvent
			Case "&Ok"
				[COLOR="green"]'Daten sichern für die weitergehenden Arbeiten
				'Evtl. in Arrays speichern und per BYREF zurückgeben etc.
				'Oder direkt alles gleich hier erledigen oder die Arbeit
				'einer Sub übergeben[/COLOR]
				MsgBox FF_GetControl(Dlg, "txtFeld")
				[COLOR="green"]'....
				'....
				'....[/COLOR]
				DialogRun = True
				Exit Do
			Case "CANCEL", "&Abbrechen"
[COLOR="green"]				'Eventuell noch Positionen sichern etc...
				'....[/COLOR]
				DialogRun = False
				Exit Do
		End Select
	Loop
	FF_CloseDialog Dlg
End Function

[COLOR="green"]'Eigene Prozedur, die einen Dialog erzeugt, 
'kann ein von FF-Dialog-Editor erzeugter Dialog sein.
'Da meist auch das Laden von Daten in die Controls
'nötig ist, am Besten auslagern[/COLOR]
Function DialogCreate(Dlg)
[COLOR="green"]	'FF-Dialog geringförmig umbauen: "Beispiel"->Dlg
	'Man hat dann den Vorteil, den Dialogtitel frei
	'zu bestimmen
	'** Start Dialog Beispiel **[/COLOR]
	FF_AddDialog Dlg,132,34
	FF_AddControl Dlg,"Te&xtfeld:","STATIC",2,3,33,11
	FF_AddControl Dlg,"txtFeld","SLEDIT",37,3,93,10
	FF_AddControl Dlg,"&Ok","BUTTON",49,20,40,11
	FF_AddControl Dlg,"&Abbrechen","BUTTON",90,20,40,11
	[COLOR="green"]'** End Dialog Beispiel **[/COLOR]
	
	[COLOR="green"]'Styles, die FF immer wieder verwirft, mit Hilfe von Konstanten setzen
	'FF_SetControlStyle Dlg, "txtFeld", WS_VSCROLL
	
	'Laden der Controls[/COLOR]
	FF_SetControl Dlg, "txtFeld", "Dies ist ein Beispiel"	[COLOR="green"]'Kann man auch mit einer Sub lösen, 
								'um die Übersicht besser zu behalten
								'Gerade für variable Listen rentiert
								'sich eine spezielle Laderoutine die
								'auch mit Arrays umgehen kann. Gerade
								'wenn Elemente gelöscht werden müssen
								'muss eine Liste gelöscht und komplett
								'neu bestückt werden[/COLOR]
	
	FF_ActivateControl Dlg, "&Ok"	[COLOR="green"]'Wichtig: Default auf ein Control setzen, sonst
					'gibt es Probleme mit der Tastatursteuerung[/COLOR]
	DialogCreate = True
End Function
Frei zur Verfügung und beliebig änderbar.
 
Zuletzt bearbeitet:
AW: Anleitung für Dialogerstellung

Nochmal danke Euch Beiden!

Genau solche Beispiele würden der Doku gut tun.
Damit würde die Zahl der Leute die Scripte nutzen/erstellen sicher steigen.
Wenn man erstmal einen Einstieg hat, ist vieles viel einfacher bzw. fällt es dann viel leichter mit den vorhandenen Funktionen "zu spielen".

DANKE!

Grüße
Dirk
 
AW: Anleitung für Dialogerstellung

Hallo,
ein gängiges Dialoggerüst schaut etwa so aus:

Muss es in der Function DialogRun am Anfang der do-loop-Schleife nicht statt
sEvent = FF_ShowEvent(Dlg) heißen sEvent = FF_ShowDialog(Dlg) ?
Ich finde den Befehl FF_ShowEvent nicht, oder ist das ein Versionsproblem?
Ich verwende Version 2.84 Build 123.
 
AW: Anleitung für Dialogerstellung

Hab's geändert, danke.
Ist mit der heißen Nadel gestrickt gewesen. Kommt manchmal vor, dass eine Speicherzelle die benachbarte mit beeinflusst, auch im Kopf ;D.
 
AW: Anleitung für Dialogerstellung

Hallo Jochen,
"OK" gibt es so nicht mehr. "&Ok" ist ein Button der per AltO angesprungen wird. Darum habe ich auch die Erzeugung desselben mit rein gelegt.
Der Event kann durchaus noch gebraucht werden. Z. B. wenn er von einer Combobox oder Listbox ausgeht. Mit sEvent kann er durchaus auch externen Subs weitergegeben werden. Ganze Control-Gruppen können so abgearbeitet werden. Daher vermeide ich so eine direkte Anweisung ganz gerne.
 
AW: Anleitung für Dialogerstellung

Code:
Do
    Select Case FF_ShowDialog(Dlg) <-
           Case "OK"
                ......
           Case "CANCEL"
                Exit Do
    End Select
Loop

EDIT: Ging nicht um "&". Kann Deiner Argumentation nicht folgen. Macht keinen Sinn, schlechten Stil zu pflegen, weil man es vielleicht ( und wie Du weisst, fast nie) mal brauchen könnte. So wenig wie möglich Variable und niemals Flags.
 
Zuletzt bearbeitet:
AW: Anleitung für Dialogerstellung

Sorry, wenn ich Dir widersprechen muss.
Flags habe ich keine angegeben. Wie Leute Ihre Debugarbeit angehen, überlasse ich Ihnen selbst.

sEvent brauchst Du ab dem Moment, wo Du viel mit Listboxen, Combofelder und Textfeldern arbeitest. So kannst Du schnell Code kopieren und an anderer Stelle einfügen ohne Ihn zu bearbeiten, oder Verarbeitungen aus großen Dialogen mit vielen Controls auslagern, um die Übersicht zu behalten. Für das Laufzeitverhalten marginal.
Das FF-Dialogsystem ist halt nun mal nicht ganz so komfortabel, wie die .NET-Fenster. Da muss man sich auch schon mal Listen in Arrays vorhalten, weil man nicht alle Einträge wieder auslesen kann etc... Normalerweise ein Unding.
Bei einem Mini-Beispiel mag es übertrieben scheinen, aber willst Du für Anfänger 5 Möglichkeiten aufzählen, wie sie einen Dialog gestalten können, oder versuchen Ihnen einen Generalschlüssel zu vermitteln, auf dem sie aufbauen können?
 
AW: Anleitung für Dialogerstellung

Sorry, wenn ich Dir widersprechen muss.
Flags habe ich keine angegeben. Wie Leute Ihre Debugarbeit angehen, überlasse ich Ihnen selbst.

sEvent brauchst Du ab dem Moment, wo Du viel mit Listboxen, Combofelder und Textfeldern arbeitest. So kannst Du schnell Code kopieren und an anderer Stelle einfügen ohne Ihn zu bearbeiten, oder Verarbeitungen aus großen Dialogen mit vielen Controls auslagern, um die Übersicht zu behalten. Für das Laufzeitverhalten marginal.
Das FF-Dialogsystem ist halt nun mal nicht ganz so komfortabel, wie die .NET-Fenster. Da muss man sich auch schon mal Listen in Arrays vorhalten, weil man nicht alle Einträge wieder auslesen kann etc... Normalerweise ein Unding.
Bei einem Mini-Beispiel mag es übertrieben scheinen, aber willst Du für Anfänger 5 Möglichkeiten aufzählen, wie sie einen Dialog gestalten können, oder versuchen Ihnen einen Generalschlüssel zu vermitteln, auf dem sie aufbauen können?
Scho recht. Wenn man nach dem Prinzip gefragt wird, ist es besser das Prinzip korrekt zu erklären. Seine Marotten kann sich dann jeder selber ausdenken.
 
AW: Anleitung für Dialogerstellung

Wie glücklich ich mich doch schätzen kann, dass Du im Prinzip keine Marotten hast.
 
AW: Anleitung für Dialogerstellung

Danke für die Info.
Jetzt weiß ich endlich wofür diese Angaben da sind.
Gibt es dazu in der Hilfe nähere Informationen?

Aufrufen kann ich es aber trotzdem.

Grüße
Dirk
 
AW: Anleitung für Dialogerstellung

Ich bekomme diese Fehlermeldung: Typen unverträglich: CDbl
Src: Laufzeitfehler in Microsoft VBScript
Line: 193Error:0 Scode:800a000d
result=(CDbl(stunden) + ..... usw.

Habt ihr auch diese Fehlermeldung?
 
AW: Anleitung für Dialogerstellung

Das kann damit zusammen hängen, dass die Koordinaten in deinen Bildern schon als Dezimalkoordinaten angegeben sind.
Bei mir muss ich das erst umrechnen.
Hänge doch mal ein Bild ran, dann prüfe ich das mal.

Grüße
Dirk
 
Zurück
Oben