| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Suche Hilfe / Programmcode (1238 mal gelesen)
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 08. Mrz. 2009 18:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen! Dank der Hilfe aus dem Forum, hatte ich mir vor längerer Zeit mal eine eigene kleine Blockverwaltung mit Vorschaubildern geschrieben. Nun bin ich dabei mal einige andere Dinge zu testen. Dazu habe ich die Maske (siehe Bildchen) geändert, so das ich links eine Listbox habe in der die Namen der Bildchen aus einem Verzeichs erscheinen und rechts einen Rahmen in dem automatisch die entsprechende Anzahl an Images geladen wird. Die Images möchte ich nun nicht mit einem Scrollbalken hoch und runterschalten, sondern über die beiden Pfeile rechts. Ferner soll eine Abhängigkeit zwischen dem Listboxeintrag und dem entsprechenden Bildchen möglich sein, so das wenn ich einen Eintrag auswähle das Bildchen z.B einen roten Rahmen bekommt. Code:
Private Sub AnzahlBloecke() ListBoxBlock.Clear Zaehler = 0 Dim NewImage As MSForms.Image Dim LastTop As Double Dim LastLeft As Double Dim color1 As Variant color1 = RGB(247, 247, 247) 'hellblau Dim BlockFile As String Dim Blocks As String Dim i As Variant BlockFile = StatusBar1.Panels(2).Text & "\" Blocks = Dir(BlockFile & "*.wmf") 'Alle Bilddateien im ausgewählten ' Verzeichnis On Error Resume Next LastTop = 10 LastLeft = 15 Do While Blocks <> "" 'Wiederholen bis Blocks="" Zaehler = Zaehler + 1 'Anzahl der Bilder im ausgewählten ' Verzeichnis With ListBoxBlock .AddItem (Blocks) End With Set NewImage = PreviewFrm.Controls.Add("Forms.Image.1") With NewImage .Height = 70 .Width = 70 .PictureSizeMode = fmPictureSizeModeZoom .BackColor = color1 Set .Picture = LoadPicture(BlockFile & Blocks) .Enabled = False .Name = Blocks .Left = LastLeft .top = LastTop End With If LastLeft + 5 > PreviewFrm.Width - 125 Then LastTop = LastTop + NewImage.Height + 10 LastLeft = 15 Else LastLeft = LastLeft + 80 LastTop = NewImage.top End If Blocks = Dir Loop
Hätte da jemand einen Lösungsansatz für?
Vielen Dank im voraus. Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 08. Mrz. 2009 18:58 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hi Dirk, lade doch mal die Form hoch, dann braucht man nicht alles nachstellen, was du bis jetzt gemacht hast. Kannst ja alles überflüssige rauswerfen. Das Picture-Objekt hat doch eine Tag-Eigenschaft, gib dieser doch den Dateinamen mit, dann kannst du dir darüber das passende wieder herausfiltern und dann einen Rahmen drum herum machen. Dafür kannst du ja ein GIF mit transparentem Hintergrund nehmen. Gruß, Carsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 09. Mrz. 2009 19:44 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hallo Dirk, ohne es nachgeschaut zu haben würde ich mal mit der Eigenschaft ScrollTop deines Frames (PreviewFrm) probieren. Die kannst du (hoffentlich) mit deinen Buttons einstellen. Zugriff auf deine Bilder hast du über die Controls Auflistung in deinem Frame.
Code: Set SelImage = PreviewFrm.Controls(Me.listbox1.listindex)
Da kannst du doch den Rahmen an- oder ausschalten. Oder das Bild ein wenig vergrößern. .Top-5 , .Left-5 , .Width+10, + Height+10Wenn du dir in einer Variablen merkst welches du vorher angeklickt hast, kannst du diese Einstellungen bei der Auswahl eines neuen Blockes in der Lstbox wieder zurücksetzen. Wilfried Stelberg
------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 09. Mrz. 2009 20:40 <-- editieren / zitieren --> Unities abgeben:         
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 11. Mrz. 2009 13:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wilfried! Ich benötige hierzu doch noch Deine Hilfe Zitat:
ohne es nachgeschaut zu haben würde ich mal mit der Eigenschaft ScrollTop deines Frames (PreviewFrm) probieren. Die kannst du (hoffentlich) mit deinen Buttons einstellen.
Dieses habe ich bislang dazu: Festlegung der ScrollHeight
Code:
PreviewFrm.ScrollHeight = LastTop + NewImage.Height + 7
Beim Klick auf den nach oben Pfeil verschiebt sich der Frameinhalt um den genannten Wert.
Code:
Private Sub cmdPlus_Click() Me.PreviewFrm.ScrollTop = 308 End Sub
zurück
Code:
Private Sub cmdMinus_Click() Me.PreviewFrm.ScrollTop = 0 End Sub
Um mir aber per ButtonClick der Reihe nach den Inhalt anschauen zu können, müßte ich mir den letzten ScrollTop Wert ja speichern und um diesen Stepp 308 erhöhen, oder? Wie könnte ich das lösen? Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 11. Mrz. 2009 15:48 <-- editieren / zitieren -->
Hi Dirk, sorry, dass ich nicht auf Deine aktuellen Fragen hinkomme (ich hab's nicht im Detail verfolgt und daher eher zu große Lücken und jetzt mitzukommen). Mir wäre nur eine Idee gekommen, die Dich von der ganzen Scroll-Geschichte, Image-Paint, ... loslöst und damit wahrscheinlich einfacher wird: Mach auf Deiner rechten Seite ein ActiveX-Objekt des Internet-Explorers (wenn nicht vorhanden, dann Komponente hinzufügen ==> 'Microsoft Internet Controls') Beim Start Deines Forms z.B. Me.WebBrowser1.Navigate("C:\Daten\Symbole") ==> macht Dir im Explorer aus den DWG-Dateien die Voransicht, Du hast mit der rechten Maustaste die Möglichkeit, den Ansichtstyp einzustellen (Details, Miniaturansicht, ...), brauchst nicht Programmieren. Und mit der Event-Überwachung 'BeforeNavigate2' bekommst Du jeden Doppelklick mit und kannst Detailinformationen direkt aus der Datei dann links anzeigen. Ev. erleichtert dieser Weg Deine Arbeit, wenn nicht, dann hab ich halt ein bisschen gedichtet - alfred - ------------------ www.hollaus.at |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 15. Mrz. 2009 17:04 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 15. Mrz. 2009 18:36 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wilfried! Genau das meinte ich. Das mit den Bildchen markieren in dem Frame bzw. in der ListBox hatte ich heute Mogen so ähnlich hinbekommen. Was bei mir noch nicht funktioniert ist das mit dem Frame - Inhalt über die beiden Button hoch.- bzw. runterschalten. An Deine Zip Datei komme ich leider nicht ran, das sich das Bild von der UserForm2 davorsetzt. Könntest Du die Zip - Datei nochmal hochsalten? So habe ich es bislang gemacht:
Code:
'###Mouseklick auf ein Image - Control------ Private Sub PreviewFrm_MouseDown( _ ByVal Button As Integer, _ ByVal Shift As Integer, _ ByVal X As Single, _ ByVal Y As Single) Dim i As Integer For Each c In PreviewFrm.Controls If X >= c.Left And X <= c.Left + c.Width And Y >= c.top And Y <= c.top + c.Height Then With c .BackColor = color2 End With StatusBar1.Panels(1).Text = c.Name For i = 0 To ListBoxBlock.ListCount - 1 If ListBoxBlock.List(i) = c.Name Then ListBoxBlock.Selected(i) = True End If Next i Else With c .BackColor = color1 End With End If Next c End Sub '--------------------
Code:
'###--ListBox - Eintrag auswählen und Image markieren-------- Private Sub ListBoxBlock_Click() StatusBar1.Panels(1).Text = ListBoxBlock.Text Dim lc As Control For Each lc In Me.PreviewFrm.Controls If lc.Name = ListBoxBlock.Text Then lc.BackColor = color2 If lc.top > Me.PreviewFrm.ScrollTop Or lc.top < Me.PreviewFrm.ScrollTop Then Me.PreviewFrm.ScrollTop = lc.top - 89 End If Else lc.BackColor = color1 End If Next lc End Sub '-------------------------------------------------------------
Scrollen per ButtonClick. Da bin ich heute Morgen an dieser Stelle hängengeblieben:
Code:
Private Sub cmdPlus_Click() If LastPoint <= 0 Then Me.PreviewFrm.ScrollTop = 308 If LastPoint > 0 Then Me.PreviewFrm.ScrollTop = LastPoint + 308 End If End If End Sub
Ich schätze, daß Deine Variante eleganter gelöst ist? Danke für Deine Hilfe. Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 15. Mrz. 2009 18:44 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 15. Mrz. 2009 19:00 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 15. Mrz. 2009 19:10 <-- editieren / zitieren -->
Hi, Zitat: Link nicht sichtbar bzw. verdeckt
Internet-Explorer hätte ich auch, ich nehme aber an, dass das IE-Fenster nur nicht breit genug aufgezogen ist (oder die Bildschirmauflösung es nicht zuläßt  ), damit schieben sich die Dateianhangsicons nach rechts und bei großem eingebetteten Bild eben darunter. [EDIT]..natürlich nach links!!! (wenn man links und rechts nicht unterscheiden kann, sollte man mit CAD gar nicht erst anfangen )[/EDIT] - alfred - ------------------ www.hollaus.at
[Diese Nachricht wurde von a.n. am 15. Mrz. 2009 editiert.] |

| |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 15. Mrz. 2009 19:53 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hallo Dirk Zitat: Original erstellt von a.n.: ...Internet-Explorer hätte ich auch, ich nehme aber an, dass das IE-Fenster nur nicht breit genug aufgezogen ist ..
glaub ich auch Jetzt hast du den Link ja. Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |