vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 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
Eine Sub-Procedur für 2 Formen 
Autor: amigo
Datum: 24.04.16 23:01

Hi - ich verwende 2 Formen die jeweils die gleiche Textbox anzeigen ( diese werden auf 2 versch.Screens angezeigt). Jetzt möchte ich die beiden textboxen mit nur einer Procedur beschicken. Da es aber eine vielzahl von Anweisungen gibt, möchte ich die Form als Variable definieren. Wie kann ich den Form-Namen übergeben ?. Ich find hier einfach nix. vielen Dank.
( Ach ja - VB6 - hab' ich vergessen )

Beitrag wurde zuletzt am 24.04.16 um 23:03:27 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Sub-Procedur für 2 Formen 
Autor: Franki
Datum: 25.04.16 01:38

Hallo,

deine Beschreibung ist etwas durcheinander.

Du kannst ein Steuerelement (Textbox) jederzeit individuell ansprechen, indem du den Formularnamen voran sellst.

' In Form1
Private Sub Command1_Click()
    Form1.Text1.Text = "blabla"
    Form2.Text1.Text = "blabla"
    Form2.Visible = True
End Sub
Mir Schleifen wie z.B. For Each kannst du sowohl Formulare als auch Steuerelemente durchlaufen und anhand Kriterien bestimmen, ob eine Befehle zutreffend sein sollen oder nicht.

Was genau meinst du mit "gleicher Textbox"?
Hat die nur den gleichen Namen oder die gleiche Datenquelle (Datenbank oder sonstige Abhängigkeit)? Wenn eine Bindung besteht, dann wird das wenn in einem Modul programmiert automatisch aktualisiert.

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

Re: Eine Sub-Procedur für 2 Formen 
Autor: amigo
Datum: 25.04.16 16:31

Hallo Frank, sorry - ich merke schon, daß ich einfach "besser fragen" muss. Ich bin neu hier und das werde ich noch lernen. also...
ich habe 2 formulare, die ich auf untersch.monitoren anzeigen will. der Inhalt ist derselbe. also z.b. eine textbox mit einem haufen zeug. die sub-procedur, die ich aufrufe, soll sich aber nicht darum kümmern müssen, um welches formular es sich handelt. Also denke ich, daß ich den formular-namen irgendwie übergeben muss. Es gibt keine Datenbank oder sonstige Datenquelle mit Bindung.
Danke schon mal im voraus für Deine "Mühe, darüber nachzudenken."
Gruß
amigo
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Sub-Procedur für 2 Formen 
Autor: Manfred X
Datum: 25.04.16 17:07

Hallo!

Greife nicht direkt auf Controls zu, sondern richte geeignete Properties
auf den Formularen ein.

Beispiel: Code für Form1
'Variable für Controls auf Form1
Dim WithEvents tbo As VB.TextBox
Dim WithEvents btn As VB.CommandButton
 
'Variable für weitere Formularinstanz
Private subform As Form1
 
 
Private Sub btn_Click()
   'Erstellung einer neuen Instanz 
   Set subform = New Form1
 
   subform.Show 'Controls werden erstellt
 
   'Übergabe des Inhalts der Texteigenschaft
   subform.TBO_Text = Me.TBO_Text
End Sub
 
Private Sub Form_Load()
 
   'Instanzen der Controls erstellen und einrichten
   Set tbo = Me.Controls.Add("VB.TextBox", "tbo1")
   tbo.Visible = True
   Set btn = Me.Controls.Add("VB.CommandButton", "btn1")
   btn.Top = 600: btn.Caption = "SubForm"
   btn.Visible = True
End Sub
 
'Eigenschaft für Setzen und Abfragen eines Textes
Public Property Let TBO_Text(ByVal str As String)
    tbo.Text = str
End Property
 
Public Property Get TBO_Text() As String
    TBO_Text = tbo.Text
End Property
 
 
'Beispiel für eine Ereignisverarbeitung
Public Sub tbo_change()
    Me.Caption = tbo.Text
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Sub-Procedur für 2 Formen 
Autor: ModeratorDieter (Moderator)
Datum: 26.04.16 07:16

Ich denk, du meinst das so (immer in der Annahme, dass die Formulare in Bezug auf die Control-Manipulationen identisch sind).

In einem Modul:
Public ChangeFormular(ByRef oForm As Form)
  oForm.Text1.Text = "Neuer Text 1"
  oForm.Text2.Text = "Neuer Text 2"
End Sub
Aufruf:
ChangeFormular Form1
ChangeFormular Form2

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Event-Koordinierung mehrerer Formular-Instanzen 
Autor: Manfred X
Datum: 26.04.16 10:46

'Variable für Controls auf Form1
Dim WithEvents tbo As VB.TextBox
Dim WithEvents btn As VB.CommandButton
 
 
'Variable für weitere Formularinstanz
Private subform As New Form1
Public IsSubForm As Boolean 'Kennung für untergeordnete Form-Instanz
 
 
Private Sub btn_Click()
   'Subform erstellen/anzeigen
   subform.Show
 
   'Übergabe des Inhalts der Texteigenschaft
   subform.TBO_Text = Me.TBO_Text
End Sub
 
 
Public Sub InitForm()
   'Instanzen der Controls erstellen und einrichten
   Set tbo = Me.Controls.Add("VB.TextBox", "tbo1")
   tbo.Visible = True
   Set btn = Me.Controls.Add("VB.CommandButton", "btn1")
   btn.Top = 600: btn.Caption = "SubForm"
   btn.Visible = True
End Sub
 
 
Private Sub Form_Load()
     InitForm
     subform.IsSubForm = True 'Kennung unterg. Instanz
End Sub
 
 
 
'Eigenschaft für Setzen und Abfragen eines Textes
Public Property Let TBO_Text(ByVal str As String)
    If Not tbo Is Nothing Then
       tbo.Text = str
    End If
End Property
 
Public Property Get TBO_Text() As String
    If Not tbo Is Nothing Then
       TBO_Text = tbo.Text
    End If
End Property
 
 
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  'Benutzer-Entladung untergeordneter Formulare verhindern
  If UnloadMode = vbFormControlMenu Then
     Cancel = IsSubForm
     If Cancel Then Me.Hide
  End If
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    'Untergeordnete Formular-Instanzen schließen
    If Not subform Is Nothing Then Unload subform
End Sub
 
 
Public Sub tbo_change()
   'Weitergabe des aktuellen Textes an unterg. Form
   subform.TBO_Text = Me.TBO_Text
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Sub-Procedur für 2 Formen 
Autor: amigo
Datum: 26.04.16 15:28

Thanx an Alle - @Manfred X, das muss ich ich erst mal verdauen. @Dieter, das wars - genial einfach, aber wo hätte ich denn das nachlesen können?
Ich hab mir jetzt auch die CD bestellt und denke, daß ich hier noch öfter auftauchen werden. Nochmal - Danke
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Sub-Procedur für 2 Formen 
Autor: Manfred X
Datum: 27.04.16 06:24

Hallo!

Die "genial einfache" Variante ist nicht empfehlenswert.

Formulare (allgemein: Klassen) stellen jeweils eine bestimmte Funktionalität
zur Verfügung und müssen zu deren Sicherstellung u.a. ihre Controls
(allgemein: untergeordnete Klasseninstanzen) sowie die verwalteten Daten
überwachen.

Zugriffe "von aussen" sind deshalb über öffentliche Eigenschaften
oder Methoden [u]des Formulars zu gestalten.

Im Einzelfall erledigen solchen Properties etwa folgende Aufgaben:
- Gültigkeitsprüfung der übergebenen Daten
- Validierung/Konsistenzbeurteilung der Daten (Abgleich mit
anderen Einstellungen/Daten, die das Formular aktuell verwaltet)
- Ereignis-Management (z.B. Sperren der Code-Ausführung von
Ereignishandlern der Controls oder Auslösung öffentlicher Ereignisse
des Formulars)
- Daten-Management (z.B. Weiterleitung von übergebenen validen Daten an
untergeordnete Klasseninstanzen)
- Anpassung der Controls-Eigenschaften gemäß der übergebenen Daten
bzw. Anforderungen (z.B. Size/Enabled/Backcolor)
- u.a.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Sub-Procedur für 2 Formen 
Autor: Franki
Datum: 28.04.16 02:33

Hallo Manfred X
Zitat:


Die "genial einfache" Variante ist nicht
empfehlenswert.


Was du schreibst ist alles richtig, aber Gültigkeitsüberprüfung, Validierung usw. brauchen ja bei reiner Anzeige nicht doppelt im Programmcode gemacht zu werden wenn es sich nur um die reine Übergabe von Inhalt für eine Textbox handelt. Das muss einmal gemacht werden, wenn alles OK, dann übergeben ansonsten halt nicht.

Wir wissen ja nicht was der Zweck der Übergabe von einem an das andere Formular ist beim Fragesteller.

Aus der Praxis kenne ich aber Fälle wo ich das durchaus auch so mache. (z.B. Statusmeldungen in einem Produktionsbetrieb auf einen 61 Zoll Monitor der an der Wand hängt und den Mitarbeitern Informationen zeigt.) Dieses Formular auf dem zweiten Monitor kann niemand bedienen, da gibt es keine Schaltflächen die angeklickt werden können usw. Alles nur rein informativ.

Und dieses zweite Formular ist auch nicht identisch mit dem aufrufenden Formular, es zeigt nur die Sachen an die übergeben werden, rein informativ halt.

Ind diesem Fall wäre es völlig unnötig für jedes der beiden Formulare eine Validierung usw. durchzuführen. Eine 1 zu 1 Übergabe des Inhaltes reicht völlig aus.

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

Re: Eine Sub-Procedur für 2 Formen 
Autor: Manfred X
Datum: 28.04.16 09:14

Hallo!

Mir ging es darum, deutlich zu machen, wie das Zusammenwirken
von Instanzen verschiedener Klassen zu organisieren ist.
Daten-Validierung ist dabei nur ein Aspekt von vielen.

Das skizzierte Vorgehen gilt uneingeschränkt auch in Fällen,
die keine Daten-Validierung erforderlich machen.
Übergeordnete Ziele sind ....
- Strukturierung des Codes (Wartung, Weiterentwicklung)
- Wiederverwendbarkeit der Klassen
- Nachvollziehbarkeit der Aufrufwege zur Laufzeit
- Multithreading: Koordinierung der Zugriffe
- Kontrolle der Ereignis-Auslösung (z.B. Vermeidung von Ereignisketten)

Bei den von Dir geschilderten Bedingungen:
Das (untergeordnete) Formular für die Anzeige auf dem Großmonitor
enthielte entsprechende öffentliche Formular-Eigenschaften für die
Zuweisung der Daten (die intern an die Controls weitergeleitet werden).
Beim Erstellen dieser Instanz oder beim Eintreten von Daten-Änderungen
(Ereignisse im Basisformular) würde das "Basisformular" seine Daten an
diese Eigenschaften des untergeordneten Anzeige-Formulars übergeben.

Auch ein "passives", "informatives" Anzeige-Formular muß evt. auf die
gegebenen Daten reagieren (z.B. Anpassung von Controls-Eigenschaften,
Unterbrechung der Layoutlogik während der Zuweisungen, Resizing-Verarbeitung).

Beitrag wurde zuletzt am 28.04.16 um 09:17:05 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Sub-Procedur für 2 Formen 
Autor: Franki
Datum: 29.04.16 01:02

Hallo Manfred X
Zitat:


Bei den von Dir geschilderten Bedingungen:

Beim Erstellen dieser Instanz oder beim Eintreten von
Daten-Änderungen
(Ereignisse im Basisformular) würde das
Basisformular seine Daten an
diese Eigenschaften des untergeordneten Anzeige-Formulars
übergeben.


Genau so ist es und soll es sein....

Zitat:


Auch ein passives, informatives
Anzeige-Formular muß evt. auf die
gegebenen Daten reagieren (z.B. Anpassung von
Controls-Eigenschaften,
Unterbrechung der Layoutlogik während der Zuweisungen,
Resizing-Verarbeitung).


Wenn dem so ist dann ja. Aber wenn das passive Formular auf dem Monitor in den anzuzeigenden Teilen nur eine 1:1 Spiegelung ist, dann kann man die anderen Eigenschaften natürlich auf gleiche Weise zuweisen. Also ob sich z.B. eine Textfarbe in ROT GRÜN ändert usw. als informatives Highlight auf dem Großmonitor muss natürlich dann aus dem Basisformurlar auch zugeweiesen werden.

Das passive Formular muss eigentlich nicht eigenständig reagieren können wenn es einen rein Informativen Charakter hat. Größenänderung ist auch nicht das Thema, da es sich immer um eine Vollbilddarstellung auf dem Kontrollmonitor handelt.

Aber wie auch immer, wir wissen immer noch nicht was der OP für eine Absicht hat zwei Formulara zu verwenden, und ob deine Einwände evtl. zum tragen kommen oder nicht.

Ich habe auch einigen Anwendungen erstellt die einen POS betreffen, da ist es auch so, dass auf dem POS Display was der Kunde sieht keine unvorhergesehen Dinge auftauchena bzw. eine Interaktivität seitens dieses Formulars was dort angezeigt wird erforderlich ist.

Gruß
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