VB 5/6-Tipp 0295: Verwendung von MDI-Formularen
von Daniel Noll
Beschreibung
Dieser Tip demonstriert ein paar grundlegende Eigenschaft und Methoden im Umgang mit MDI-Fenstern
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '--------------- Anfang Projektdatei MDI.vbp --------------- ' Die Komponente 'Microsoft Common Dialog Control 6.0 (SP3) (COMDLG32.OCX)' wird benötigt. '-------- Anfang Formular "frmMDI" alias frmMDI.frm -------- ' Steuerelement: Textfeld "txtText" Option Explicit Private Sub Form_Resize() txtText.Move 50, 50, Me.Width - 200, Me.Height - 500 End Sub '--------- Ende Formular "frmMDI" alias frmMDI.frm --------- '----- Anfang Formular "MDIHaupt1" alias MDIHaupt1.frm ----- ' Steuerelement: Standarddialog-Steuerelement "DLG1" ' Steuerelement: Menü "mnudatei" ' Steuerelement: Menü "mnuload" auf mnudatei ' Steuerelement: Menü "mnusave" auf mnudatei ' Steuerelement: Menü "mnuline1" auf mnudatei ' Steuerelement: Menü "mnuEnde" auf mnudatei ' Steuerelement: Menü "mnuBearbeiten" ' Steuerelement: Menü "mnuBack" auf mnuBearbeiten ' Steuerelement: Menü "mnuline2" auf mnuBearbeiten ' Steuerelement: Menü "mnucopy" auf mnuBearbeiten ' Steuerelement: Menü "mnucut" auf mnuBearbeiten ' Steuerelement: Menü "mnupaste" auf mnuBearbeiten ' Steuerelement: Menü "mnuwindows" ' Steuerelement: Menü "mnu1" auf mnuwindows ' Steuerelement: Menü "mnu2" auf mnuwindows ' Steuerelement: Menü "mnu3" auf mnuwindows Option Explicit Private Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hwnd As Long, ByVal wMsg _ As Long, ByVal wParam As Long, lParam As Any) _ As Long Const WM_COPY = &H301 Const WM_UNDO = &H304 Const WM_CUT = &H300 Const WM_PASTE = &H302 Private Sub mnu1_Click() MDIHaupt1.Arrange vbCascade End Sub Private Sub mnu2_Click() MDIHaupt1.Arrange vbTileHorizontal End Sub Private Sub mnu3_Click() MDIHaupt1.Arrange vbTileVertical End Sub Private Sub mnuBack_Click() Call SendMessage(Me.ActiveForm.txtText.hwnd, WM_UNDO, 0&, 1) End Sub Private Sub mnucopy_Click() Call SendMessage(Me.ActiveForm.txtText.hwnd, WM_COPY, 0&, 0) End Sub Private Sub mnucut_Click() Call SendMessage(Me.ActiveForm.txtText.hwnd, WM_CUT, 0&, 1) End Sub Private Sub mnuEnde_Click() Unload Me End Sub Private Sub mnuload_Click() Dim temp As String On Error Goto error_load With DLG1 .Filter = "Textdateien (*.txt)|*.txt" & _ "|Alle Dateien (*.*)|*.*" .CancelError = True .ShowOpen Set frmMDI = New frmMDI Open .filename For Input As #1 Do Until EOF(1) Line Input #1, temp frmMDI.txtText.Text = _ frmMDI.txtText.Text & temp & vbCrLf Loop Close #1 frmMDI.Caption = .filename frmMDI.Show End With error_load: End Sub Private Sub mnupaste_Click() Call SendMessage(Me.ActiveForm.txtText.hwnd, WM_PASTE, 0&, 1) End Sub Private Sub mnusave_Click() On Error Goto error_save With DLG1 .Filter = "Textdatei (*.txt)|*.txt" .CancelError = True .ShowSave Open .filename For Output As #1 Print #1, Me.ActiveForm.txtText.Text Close #1 End With error_save: End Sub '------ Ende Formular "MDIHaupt1" alias MDIHaupt1.frm ------ '---------------- Ende Projektdatei MDI.vbp ----------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Gobo am 11.06.2003 um 23:59
Sehr schönes Sample zu einem guten Tipp.
Wer allerdings nicht das Beispiel-Zip runterlädt und nur den Anweisungen im Text folgt, sollte folgende zwei Zusätze beachten:
1.) Die Eigenschaft "MDIChild" der Form "frmMDI" sollte auf "True" gesetzt werden, sonst öffnet sich bloss ein ganz normales Fenster ausserhalb der MDI, keines darin.
2.) Das Menü "mnuwindows" sollte die Eigenschaft "WindowList" angehakt bekommen, damit unter den drei Punkten für Überlappend, Nebeneinander und Untereinander auch eine Liste aller vorhandenen Fenster im MDI erzeugt wird.
Aber ein grosses Dankeschön für diesen Tipp, er hat mich in meinem Projekt enorm weitergebracht! :)