| MDI-Formular, Instanzen, Statusleiste, Symbolleiste, Menüleiste, Set |
| |
| |
| Prozeduren im Modul | |
| Public bildzähler As Long, F As Form | Deklarationsteil für Bildzähler und Formular (Instanz). |
| |
| Public Sub laden() | Prozedur "Laden eines Bildes". |
| Dim Dateiname$ | |
| mdiHaupt1.dlgDateiOpen.ShowOpen | Auswahldialogfeld anzeigen. |
| Dateiname = mdiHaupt1.dlgDateiOpen.FileName | Ausgewählten Dateinamen abspeichern. |
| If Dateiname = "" Then Exit Sub | |
| If bildzähler > 0 Then | Beim ersten Formular kein weiteres Formular laden, |
| Set F = New frmBild | ansonsten neue Instanz des Formulars erzeugen. |
| Else | |
| Set F = frmBild | |
| End If | |
| F.imgBild.Picture = LoadPicture(Dateiname) | Bild laden. |
| F.Caption = Dateiname | Dateiname laden. |
| F.Show | Formular (Instanz) mit Bild anzeigen. |
| bildzähler = bildzähler + 1 | Variable "Bildzähler" um eins erhöhen. |
| Call statusAnzeigen | |
| End Sub | |
| |
| Public Sub statusAnzeigen() | Prozedur "Anzahl der Bilder in Statusleiste anzeigen". |
| If bildzähler = 1 Then | |
| mdiHaupt1.staStatusleiste.Panels("Anzahl").Text = bildzähler & " Bild geladen" |
| Else | |
| mdiHaupt1.staStatusleiste.Panels("Anzahl").Text = bildzähler & " Bilder geladen" |
| End If | |
| End Sub | |
| Prozedur "Bild entladen". |
| Public Sub query_unload(Cancel As Integer, UnloadMode As Integer) |
| Dim antwort% | |
| antwort = MsgBox(Prompt:="Soll das Bild entfernt werden?", Title:="Frage", Buttons:=vbYesNo + vbQuestion) |
| If antwort = vbYes Then | |
| Unload frmBild | |
| bildzähler = bildzähler - 1 | Bildzähler runterzählen. |
| Call statusAnzeigen | |
| Else | |
| Cancel = True | |
| End If | |
| End Sub | |
| |
| Prozeduren im MDI-Formular | |
| Hinweis: das MDI-Formular als Startformular zuweisen! (Kontextmenü: Formulare: Eigenschaften von Projekt...) |
| Private öffnen As Long | |
| |
| Private Sub MDIForm_Load() | |
| bildzähler = 0 | |
| Call statusAnzeigen | |
| End Sub | |
| |
| Private Sub mnuLaden_Click() | |
| Call laden | |
| End Sub | Zum Erstellen der Symbolleiste siehe Monadjemi |
| S. 252 ff, 257 unten. |
| Private Sub symSymbolleiste_ButtonClick(ByVal Button As MSComctlLib.Button) |
| Select Case Button.Key | Symbolleiste: Welcher Button wird angeklickt? |
| Case "Öffnen" | |
| mnuLaden_Click | |
| Case "Schließen" | |
| If bildzähler > 0 Then Unload Me.ActiveForm | |
| Case "Verkleinern" | |
| mnuKleiner_Click | |
| Case "Wiederherstellen" | |
| mnuWiederherstellen_Click | |
| Case "Kopieren" | |
| If bildzähler > 0 Then | |
| mdiHaupt1.ActiveForm.picHilfsbild.Picture = mdiHaupt1.ActiveForm.imgBild.Picture |
| Clipboard.SetData mdiHaupt1.ActiveForm.picHilfsbild.Image, vbCFDIB |
| End If | |
| Case "MsPaint" | |
| mnuMsPaint_Click | |
| Case "CloseAll" | |
| mnuCloseAll_Click | |
| End Select | |
| End Sub | |
| |
| Private Sub mnuBearbeiten_Click() | |
| If mdiHaupt1.ActiveForm Is Nothing Then | Menüeintrag nur anbieten, wenn es ein aktives Formular |
| mnuEinfügen.Enabled = False | gibt, denn sonst gibt es ja auch kein Bild zum Kopieren. |
| Else | |
| mnuEinfügen.Enabled = True | |
| End If | |
| End Sub | |
| Diese Prozedur kopiert den Inhalt der ImageBox in |
| Private Sub mnuEinfügen_Click() | die Zwischenablage. |
| mdiHaupt1.ActiveForm.picHilfsbild.Picture = _ | Der Umweg über die PictureBox ist notwendig, da über |
| mdiHaupt1.ActiveForm.imgBild.Picture | dessen Image-Eigenschaft das Ico-Format in das |
| Clipboard.SetData _ | Bitmap-Format umgewandelt wird, das die |
| mdiHaupt1.ActiveForm.picHilfsbild.Image, vbCFDIB | Zwischenablage interpretieren kann. |
| End Sub | |
| |
| Private Sub mnuCloseAll_Click() | |
| For Each F In Forms | Alle geladenen Bilder können auf ein mal geschlossen |
| If TypeOf F Is frmBild Then | werden. |
| Unload F | |
| End If | |
| Next | |
| End Sub | |
| |
| Private Sub mnuKleiner_Click() | |
| For Each F In Forms | Alle geladenen Bilder können auf ein mal verkleinert werden. |
| If TypeOf F Is frmBild Then | |
| F.WindowState = vbMinimized | |
| End If | |
| Next | |
| End Sub | |
| |
| Private Sub mnuWiederherstellen_Click() | Alle geladenen Bilder können auf ein mal wieder |
| For Each F In Forms | vergrößert werden. |
| If TypeOf F Is frmBild Then | |
| F.WindowState = vbNormal | |
| End If | |
| Next | |
| End Sub | |
| |
| Private Sub MDIForm_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) |
| If Button = vbRightButton Then | Wurde die rechte Maustaste gedrückt? |
| Me.PopupMenu mnuBilder | PopUp-Menü "Bilder" öffnet sich. |
| End If | |
| End Sub | |
| |
| Private Sub mnuNeben_Click() | |
| mdiHaupt1.Arrange vbTileVertical | |
| End Sub | |
| |
| Private Sub mnuUeber_Click() | |
| mdiHaupt1.Arrange vbCascade | |
| End Sub | |
| |
| Private Sub mnuUnter_Click() | |
| mdiHaupt1.Arrange vbTileHorizontal | |
| End Sub | |
| |
| Private Sub mnuSymbole_Click() | |
| mdiHaupt1.Arrange vbArrangeIcons | |
| End Sub | |
| |
| Private Sub mnuMsPaint_Click() | |
| öffnen = Shell("mspaint.exe", 1) | Öffnen des Programmes Paint. |
| End Sub | |
| |
| Private Sub mnuEnde_Click() | |
| End | |
| End Sub | |
| |
| Prozeduren im Kind-Formular | |
| Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) |
| Call query_unload(Cancel, UnloadMode) | |
| End Sub | |
| |
| Private Sub Form_Resize() | |
| imgBild.Top = 0 | |
| imgBild.Left = 0 | |
| imgBild.Width = frmBild.ScaleWidth | |
| imgBild.Height = frmBild.ScaleHeight | |
| End Sub | |
| |
| Private Sub imgBild_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) |
| If Button = vbRightButton Then | Wurde die rechte Maustaste gedrückt? |
| frmBild.PopupMenu mdiHaupt1.mnuBilder | PopUp-Menü "Bilder" öffnet sich. |
| End If | |
| End Sub | |
| |