vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Run-time error 401 
Autor: crosstravel
Datum: 31.12.19 07:45

Hallo Zusammen,

im Dispositionsteil meiner Applikation ist es erforderlich, dass der Benutzer von einer Form in eine andere von von dort in eine dritte und von dieser vielleicht zurückspringen muss (Dispo Auftrag -> Dispo Fahrzeug -> Dispo Fahrer <- zrück zu Dispo Auftrag ...). Um hier die betroffenen Forms steuern zu können, habe ich den Tipp von Dieter (Ist ein Formular geladen?) eingesetzt. Leider ist es so, dass hier im Gebrauch ein Fehler auftritt. Ich frage mich, ob ich einen Fehler mache? Der Runtime-Error tritt immer auf, wenn die Form bereits geladen ist. Es sind 2 unterschiedliche Meldungen; jenachdem die Form modal oder nicht modal aufgerufen wird:

frmTerminplaner.show
Can't show non-modal form when modal form is displayed

frmTerminplaner.show vbmodal
Form already displayed; can't show modally


Die Meldungen sind mir schon klar; ich weiss jedoch nicht, wie ich diesen begegnen soll. Vielleicht hat jemand eine Idee.

Vielen Dank und einen guten Rutsch ins 2020
Rainer

Private Sub btnFahrzeug_Click()
    If IsFormLoaded("frmTerminplaner") Then
       frmTerminplaner.Show
    Else
       Load frmTerminplaner
       frmTerminplaner.Show vbModal
    End If
End Sub


Beitrag wurde zuletzt am 31.12.19 um 07:47:37 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: effeff
Datum: 31.12.19 13:43

Wenn die Form bereits geladen ist, sollte es doch reichen, sie zu aktivieren.

Ich habe hier kein VB6 mehr, aber irgendwas ala

If IsFormLoaded("frmTerminplaner") Then
frmTerminplaner.Activate
Else...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: crosstravel
Datum: 31.12.19 13:47

Ich probiere das mal aus; klingt auf jeden Fall logisch.

Gruss
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: Souffleurlos
Datum: 31.12.19 16:29

Hallo crossltravel,

du hast alles was du brauchst. Das VB Objekt ist dein Freund! Es verwaltet selbst VB.FORMS das mit ForEach durchlaufen werden kann und teilt dabei auch mit, welches das gerade aktivierte Form ist.

-> Beispiel: VB.Forms.Count gibt die Anzahl aller Forms zurück
-> Beispiel: VB.Forms(1).Caption den Titel der 1. Form

usw.

was braucht man den sonst mehr? VB-Objekt wird mit jedem VB-Projekt mit ins Boot genommen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: crosstravel
Datum: 01.01.20 07:22

Hallo effeff,

zunächst wünsche ich Dir ein gutes und erfolgreiches 2020. Ich habe damit begonnen, Deinen Vorschlag zu testen. Leider funktioniert auch das Activate nich; hier gibt es übrigens keinen Activate - aber ein ActivateControl.

Herzliche Grüsse
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: Wobi
Datum: 06.01.20 03:21

Hallo Rainer,
wenn du vor- und zurückspringen möchtest in den Formularen solltes du modal vermeiden, das ist dafür eigentlich nicht geeignet. Die ganze Logik die du vorher schon hast musst du dann bei einem weiteren Aufruf der Form wieder durchlaufen um diesen Fehler zu vermeiden.

Warum überhaupt brauchst du eine Form mal normal und mal modal?
Wenn die Formulare zusammenhängend für den Bereich Dispo sind würde ich da mit einem Formular arbeiten welches verschiedene Bereiche hat wo du die Teile Auftrag/Fahrer/Fahrzeug usw. behandelt. Das könntest du über z.B. Tabs im Formular machen oder über vor/zurück Buttons oder was auch immer. Das wäre dann ein zusammenhängender Bereich wo alles übersichtlich eingegeben werden kann. Die Plausibilitätsprüfung ist dann auch einfacher als das über mehrere Formulare zu verteilen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: crosstravel
Datum: 06.01.20 08:16

Hallo Frank,

danke für Dein Feedback. Schade, dass die Disposition bei uns über drei einzelne Forms und nicht z.B. über Tabs gelöst wurde. Ich denke, hier fällt in nächster Zeit etwas Redesign-Arbeit an.

In der Applikation werden alle Forms, bei welchen der Benutzer eine Eingabe machen muss, mit xxx.show vbModal aufgerufen. Ich war der Meinung, dass das erforderlich ist?! Ich muss mich nun mal kundig machen, um den Unterschied von Modal und Nicht-Modal zu verstehen. Vielleicht kast ja Du eine kurze knackige Erklärung.

Einen guten Wochenstart und vielen Dank
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: effeff
Datum: 07.01.20 17:04

Eine Form, die vbModal als Eigenschaft hat, ist immer das oberste Fenster Deiner Anwendung. Wenn Du mehrere Formen hast, die Du vbModal, also als oberstes Fenster, anzeigen lassen willst, klappt das natürlich nicht. Das ist wie beim Highlander: Es kann nur einen geben!

Benutze Deine Forms also normal, wenn Du mehrere hast und zwischen denen hin und her switchen willst.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: Wobi
Datum: 08.01.20 00:06

Hallo Rainer,
effeff hat das ja schon sehr gut erklärt.
Es kann natürlich mehrere Formulare in einer Anwendung geben die modal aufgerufen werden, aber nicht gleichzeitig. Ein modal aufgerufenes Form "blockiert" sozusagen den Rest der Anwendung so dass der User in diesem und nur in diesem Formular arbeiten kann bzw. soll.

Erst wenn die Arbeit in diesem Formular erledigt ist muss es geschlossen/entladen werden und danach kann z.B. aus dem Hauptformular ein anderes Formular modal aufgerufen werden. Der Aufruf modal soll verhindern, dass der User zwischendurch woanders hin geht. Deswegen verhindert man auch meistens, dass das modal aufgerufene Formular minimiert werden kann, der User sieht es dann nicht mehr, kann aber nichts anderes in der Anwendung machen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: crosstravel
Datum: 08.01.20 13:57

Hallo Frank und effeff,

danke für die Erkläuterungen. Wenn ich also verhinden möchte, dass der Benutzer während der Arbeit und und her springt (also erst seine Task beendet) setze ich modal. Wenn er die Möglichkeit haben soll, zwischen verschiednen Forms zu switchen (z.B. Auskunftsmasken) verzichte ich auf modal.

Jetzt ist ein Licht aufgegangen ..............


Vielen Dank und Gruss
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Run-time error 401 
Autor: Wobi
Datum: 10.01.20 00:10

Hallo Rainer,
ja richtig soweit. Es kommt aber immer auf die Anwendung an, ob modale Formulare sinnvoll sind oder nicht.
Für einige wenige Pflichtangaben die der User weiß sind sie es, aber wie du schon sagst, wenn der User dazu noch Auskünfte braucht aus anderen Teilen deiner Anwendung ist das mit modal nicht komfortabel für den User.

Da gibt es andere Wege (z.B. mit Variablen) die man nutzen kann um Pflichtangaben in einem Vorgang zu erfüllen, bzw. den Vorgang speichern zu können. Dazu kann man aber keine generellen Tipps geben, das kommt immer auf die Anforderungen der Anwendung an wie man das am sinnvollsten regelt.

Gruß und viel Erfolg

Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel