Listindex

HAllo,

ich habe eine ListBox mit dem namen „playlist“.
So jetzt habe ich eine Schleife die in etwa so aussieht:

Dim i
i = playlist.List(playlist.ListIndex)
For i = „0“ To playlist.ListCount
MP3_Play i, „MyAlias“
Next

ListIndex soll in dieser schleife erhöht werden, aber das funktioniert hier nicht. KAnn mir einer Helfen??

Danke

PAscal

Hallo,

Dim i
i = playlist.List(playlist.ListIndex)

hier setzt Du i auf den derzeitigen listindex.

For i = „0“ To playlist.ListCount

und hier verwendest Du i als Schleifenzähler, überschreibst den Wert wieder. Die Zeile i = … ist unwirksam. Für die Anführungszeichen beim Schleifenstart habe ich keine Erklärung. Was sollen die da?

MP3_Play i, „MyAlias“
Next

ListIndex soll in dieser schleife erhöht werden, aber das
funktioniert hier nicht. KAnn mir einer Helfen??

wie wäre es mit

For i = 0 to playlist.Listcount -1
 playlist.Listindex = i
Next

Allerdings wirsr Du so, wie das jetzt da steht, keine ‚Wirkung‘ sehen können. Was hast Du damit vor?

Gruß, Rainer

HAllo,

Hallo :smile:

ich habe eine ListBox mit dem namen „playlist“.
So jetzt habe ich eine Schleife die in etwa so aussieht:

Dim i
i = playlist.List(playlist.ListIndex)
For i = „0“ To playlist.ListCount
MP3_Play i, „MyAlias“
Next

 dim i as integer
 for i=0 to playlist.listcount-1
 MP3\_Play playlist.list(i), "MyAlias"
 next i

ListIndex soll in dieser schleife erhöht werden, aber das
funktioniert hier nicht. KAnn mir einer Helfen??

Danke

PAscal

Hmm, also dadurch die List max. 32577 eintraege haben kann, so reicht es wenn du die Variable i als integer Initialisierst und nicht wie du als Variant :smile:

Danach ist es ein wenig undurchschaubar, was du machen willst :s

Ich habe dir das mal so geschrieben, das die gesamte List vom ersten bis zum letzten Eintrag eintrag durchlaufen wird und dann die Sub MP3_Play aufgerufen wird, wodurch du ihr den Namen aus der Liste, sowie „MyAlias“ übergeben wird.
Ich hoffe ich hab dein Prob richtig erkannt. Ansonsten nochmal posten :smile:

PS: Willst du den Wert Listindex erhöhen so kannst du dies einfach in der Schleife durch die Angabe von playlist.listindex = i machen :smile:
Aber was hat das für einen Sinn?

MFG Alex

Hallo,

Dim i
i = playlist.List(playlist.ListIndex)

hier setzt Du i auf den derzeitigen listindex.

*smile* da i als Variant deklariert wurde und er so jeden Wert annehmen kann, so wird i den Text des selktierten Eintrages haben :wink:

For i = „0“ To playlist.ListCount

und hier verwendest Du i als Schleifenzähler, überschreibst
den Wert wieder. Die Zeile i = … ist unwirksam. Für
die Anführungszeichen beim Schleifenstart habe ich keine
Erklärung. Was sollen die da?

MP3_Play i, „MyAlias“
Next

ListIndex soll in dieser schleife erhöht werden, aber das
funktioniert hier nicht. KAnn mir einer Helfen??

wie wäre es mit

For i = 0 to playlist.Listcount -1
playlist.Listindex = i
Next

Allerdings wirsr Du so, wie das jetzt da steht, keine
‚Wirkung‘ sehen können. Was hast Du damit vor?

Gruß, Rainer

MFG Alex

Hi,

Dim i
i = playlist.List(playlist.ListIndex)

hier setzt Du i auf den derzeitigen listindex.

*smile* da i als Variant deklariert wurde und er so jeden Wert
annehmen kann, so wird i den Text des selktierten Eintrages
haben :wink:

Stimmt, der Titel steht in i, nicht der Index. :wink:
Ist aber egal, das wird ja ohnehin in der nächsten Zeile überschrieben.

Inzwischen vermute ich, was das werden soll.: Ein MP3-Player.
Die Stelle soll scheinbar die Playlist der Reihe nach abarbeiten (abspielen).

Gruß, Rainer

Hallo Rainer,

die vermutung hatte ich auch.
Aber was soll dann die schleife?
Die Playlist ist ja vorhanden und die titel muessten dann abgespielt werden wenn sie angeklickt werden, oder wenn der eine Titel zu ende ist, dann den naechsten aus der liste nehmen. Aber wenn er die liste in einer for schleife abarbeitet und die sagen wir mal die funktion zum abspielen aufruft, dann würde diese binnen sekunden x mal aufgerufen werden. das eine lied ersetzt das andere und im endeffekt würd er nur das letzte lied in der liste hören, es seidenn er unterbricht die funktion wo das abgespielt wird solange bis das lied zu ende ist. Nur dazu muesste man die Funktion / Sub mal sehen :smile:

MFG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Alex,

die vermutung hatte ich auch.
Aber was soll dann die schleife?

die Titel der Reihe nach abspielen?
Der Code scheint ja nicht vollständig zu sein, dann ist auch Platz für ein RND.

Die Playlist ist ja vorhanden und die titel muessten dann
abgespielt werden wenn sie angeklickt werden, oder wenn der
eine Titel zu ende ist, dann den naechsten aus der liste
nehmen. Aber wenn er die liste in einer for schleife
abarbeitet und die sagen wir mal die funktion zum abspielen
aufruft, dann würde diese binnen sekunden x mal aufgerufen
werden.

Außer die Funktion ist auf einer anderen Form ‚versteckt‘, die modal aufgerufen wird.

das eine lied ersetzt das andere und im endeffekt würd
er nur das letzte lied in der liste hören, es seidenn er
unterbricht die funktion wo das abgespielt wird solange bis
das lied zu ende ist. Nur dazu muesste man die Funktion / Sub
mal sehen :smile:

Stimmt, das geht aber. So etwas habe ich auch schon mal ‚gebastelt‘, weil mir der alte Mediaplayer nicht gefallen hat. :wink:
Als ‚Fingerübung‘ ist das Projekt aber gar nicht so schlecht, man kann 'ne Menge Fehler dabei machen und lernen.

Gruß, Rainer

Hi Alex,

die vermutung hatte ich auch.
Aber was soll dann die schleife?

die Titel der Reihe nach abspielen?

haett ich ne andere idee *gg* aber viele wege führen bekanntlicherweise nach Rom
–> Anzahl der Titel ermitteln
–> Variable als static deklarieren und dann wenn lied zu ende ist um 1 erhöhen, dann das naechste lied abspielen. So kannst du auch in der selbigen Funktion nen Random machen :wink:

Der Code scheint ja nicht vollständig zu sein, dann ist auch
Platz für ein RND.

Die Playlist ist ja vorhanden und die titel muessten dann
abgespielt werden wenn sie angeklickt werden, oder wenn der
eine Titel zu ende ist, dann den naechsten aus der liste
nehmen. Aber wenn er die liste in einer for schleife
abarbeitet und die sagen wir mal die funktion zum abspielen
aufruft, dann würde diese binnen sekunden x mal aufgerufen
werden.

Außer die Funktion ist auf einer anderen Form ‚versteckt‘, die
modal aufgerufen wird.

dazu musst du aber die Form erst einmal modal aufrufen und wie willst du dann auf die Funktion zugreifen? Deklarierst du die Funktion als Public und springst sie an, so lädst du ja die Form nicht modal, oder irre ich mich nun? Selbst und wenn würde ich dann übersichthalber die Funtion folgendermassen aufrufen Call formname.funktion(Parameter) as rückgabewert

das eine lied ersetzt das andere und im endeffekt würd
er nur das letzte lied in der liste hören, es seidenn er
unterbricht die funktion wo das abgespielt wird solange bis
das lied zu ende ist. Nur dazu muesste man die Funktion / Sub
mal sehen :smile:

Stimmt, das geht aber. So etwas habe ich auch schon mal
‚gebastelt‘, weil mir der alte Mediaplayer nicht gefallen hat.
:wink:
Als ‚Fingerübung‘ ist das Projekt aber gar nicht so schlecht,
man kann 'ne Menge Fehler dabei machen und lernen.

jups das sehe ich auch so, somal es genuegend Anleitungen dazu im Netz gibt :wink:
ich selbst probiere mich derzeit an einem chat, welches sich aber schwieriger rausstellt als ich es mir dachte :frowning:

Gruß, Rainer

MFG Alex

Hi Alex,

die Titel der Reihe nach abspielen?

haett ich ne andere idee *gg* aber viele wege führen
bekanntlicherweise nach Rom
–> Anzahl der Titel ermitteln
–> Variable als static deklarieren und dann wenn lied zu
ende ist um 1 erhöhen, dann das naechste lied abspielen. So
kannst du auch in der selbigen Funktion nen Random machen :wink:

ja, ich weiß, daß ich einen schlechten Programmierstil habe. :wink: Ich bin aber bemüht mich zu bessern. … Listen haben den Vorteil, daß man sich während der entwicklung an das zeil ‚herantasten‘ kann. Nachteil: Performanceverlust, durch die Begrenzung gehen schon mal Daten verloren oder das Programm stürzt ab.

Als ‚Fingerübung‘ ist das Projekt aber gar nicht so schlecht,
man kann 'ne Menge Fehler dabei machen und lernen.

jups das sehe ich auch so, somal es genuegend Anleitungen dazu
im Netz gibt :wink:
ich selbst probiere mich derzeit an einem chat, welches sich
aber schwieriger rausstellt als ich es mir dachte :frowning:

Das habe ich gesehen. :wink: Wie Du den Smily in das .rtf bekommst weiß ich auch nicht. Nur eine Frage dazu: Warum muß der Hintergrund transparent sein? Wenn ‚das Blatt‘ weiß ist und der Hintergrund auch, ist der Unterschied doch nicht zu bemerken. …

Hast du schon mal auf http://www.Planetsourcecode.com gesucht, ob es da eine Lösung gibt?

Gruß, Rainer

Ergänzung
Hi Alex,
gerade habe ich mal noch ein wenig experimentiert.
Ich habe in ein .rtf-Dokument ein Gif mit transparentem Hintergrund eingefügt. (ohne VB :wink:) Das in VB eingebaut und Backcolor geändert. … Die transparente Farbe war nicht mehr transparent …
Bist du sicher, daß das, was Du vor hast überhaupt geht?
Warum eigentlich .rtf beim Chat und nicht html? Da hättest Du dieses Problem nicht. :wink:

Gruß, Rainer

Hallo Rainer,

zu der Sache mit dem Chat.
Ich habe einfach mal angefangen zu prgrammieren. Dabei bon ich dann auf die Sache gestossen welches textfeld, da es eigentlich imenz viel koennen muss. ich bin dann auf die idee gekommen das sich ein rtf feld dafür eignet. Naja ich fing dann an und soweit passt auch alles, bis auf die sache mit der tranzparenz.
Wenn ich mir nun überlege das man da ne html seite haette generieren koennen und diese anzeigen, komme ich auch zu dem entschluss das dies viel besser gewesen waere. Aber das nun zu aenderen waere der blanke horror.
Das Textfeld muesste dann folgendes koennen.

Der Hintergrund des Textfeldes sollte durch den chatter anpassbar sein. das heisst die Farbe sollte er sich aussuchen koennen.
desweiteren, muss der text in verschiedenen Farben dargestellt werden koennen. Je nachdem ob es handlung , private nachricht, ob die nachricht von einem maedel oder jungen ist. ist es eine Systemmitteuliung, eingangsmeldung oder abschiedsgruss muss es in einer anderen Farbe dagestellt werden.

Dann muss das Textfeld die Option Drag & Drop in die Eingabezeile unterstützen.
Dann muss es noch Bilder, sowie Hyperlinks anzeigen koennen und auch wenn irgendwo in dem Element der name eines sich im Chat befindlichen User auftaucht, so muss das ein Hyperlink werden ( Sprich man kann draufklicken und es muss sich dann ein menu öffnen)

desweitern muss der text bei der eingabe von [text] fett dargestellt werden. Bei der Eingabe von {Text} kursiv und bei der Eingabe von _text_ unterstrichen dargestellt werden.
Natürlich kannst du das alles kombinieren . Bsp. [Einen {wunderschönen _guten Morgen_ wünsche} ich euch :smile:]

So nun kannst du dir sicher vorstellen was da für ein quelltext dahintersteckt damit das alles funktioniert.
Wenn ich nun dies versuchen würde abzuaendern, das waere Wahnsinn :frowning:

Aber recht hast du, die einfacherer Variante waere das gewesen.
Auf deine Frage hin ob das überhaupt alles geht was ich mir so denke.
Bis jetzt klappt alles wunderbar, nur das ich halt den Hintergrund des Textfeldes einer farbe zugewiesen habe und die man nicht mehr ändern kann :frowning:

MFG Alex

Hi Alex,
wo Smilys eingesetzt werden, kommt schnell der ruf nach animierten Smilys, und das kann .rtf wohl beim besten Willen nicht.
Ich weiß, daß ich brutal bin. … Verabschiede Dich von .rtf! Du wirst damit nicht glücklich. Statt die Zeit zu verwenden die rtf-spezifischen Probleme zu lösen, löse Dich lieber von dem ungeeigneten Format.
In der Summe wirst Du dafür weniger Zeit brauchen und die Probleme auch in den Griff kriegen können.
… Ja, mir ist klar, wie viel Code dadurch unbrauchbar wird- :wink: Mit den Einschränkungen, die Du Dir mit rtf einhandelst wirst Du aber nicht froh werden. Denk an animierte Smilys. :wink: Die gehen mit rtf wohl nicht.

Gruß, Rainer
… der es auch nicht mag, fast fertige Arbeit weg zu werfen …

Hallo Rainer,

zu dem selbigen Entschluss bin ich nun auch gekommen.
Ich habe mir gestern mal das Steuerelement angeschaut.
Ueber die Navigate Eigenschaft kann ich dem eine *.html Seite zuweisen und diese wird dann auch angezeigt. Aber was ich mich nun frage, wie bekomme ich die Daten in die HTML Seite?
Muss ich nach jeder eingehenden Nachricht die Seite neu generieren und anzeigen lassen?
Hast du ein paar Tips wie ich das vorgehen muss, da dies für mich neuland ist :-S

MFG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Alex,

Aber was ich mich
nun frage, wie bekomme ich die Daten in die HTML Seite?
Muss ich nach jeder eingehenden Nachricht die Seite neu
generieren und anzeigen lassen?
Hast du ein paar Tips wie ich das vorgehen muss, da dies für
mich neuland ist :-S

Mit html habe ich noch nichts gemacht. Ich kann mir Fusion oder Golive eine Seite notdürftig zusammenbauen und auf den Server laden, aber was Du da machst ist für mich zu hoch. Ich habe keine Anhnung, wie das überhaupt geht, daß die Aktionen der User änderungen auf der Seite bewirken.
Bisher dachte ich, daß dazu spezielle Sprachen (php, Perl …) nötig sind, die ich nicht beherrsche, Du wirst das ja scheinbar mit VB machen. Muß dazu der Server bei Dir stehen?

Ich denke, ich kann Dir wohl nicht helfen. Ich habe einfach keine Ahnung, was Du da machst.

Gruß, Rainer

Hallo Rainer,

ja das hast du richtig erkannt. Ich versuche mich derzeit unter VB an einem Chat :smile:
Es wird mal so werden, das die die den chat nutzen wollen den Clienten bekommen. Ich selbst habe auf meinen Rechner den Server laufen ( Also du musst einen Server schreiben und den Clienten).
Ich lege mir dann eine dynamische DNS zu, so das unter der eingabe http://meineaddi.de.tf ich immer erreichtbar bin.
Dann kann später mal der Client gestartet werden. dieser sendet dann über das winsock steuerelement daten an den server ueber einen port x.
Der Server empfängt die daten. Wenn der Zugang genehmigt wird, so wird ein Winsock Element nachgeladen und mit dem Clienten verbunden.
Auf dieser Art kannst du etliche Clienten mit dem server verbinden.
wenn nun ein client daten sendet,zeigt er die an und sendet sie an den server wertet, der diese aus, zeigt sie im server an und leitet sie dann an alle clienten weiter
(durchlauf aller winsock elemente ausser dem vom absender und dann aufruf der senddata methode )
Die clienten empfangen diese und zeigen sie dann an.

Das alles ist eigentlich rel. Simple.
Das schlimme ist nur wenn du priv. gespraeche einbauen willst oder dann halt noch mit farben etc arbeitest.

Sicher gehört da vieles mehr hinzu, aber das alles hier zu schreiben würde den rahmen sprengen.

aber nen kleines demo kannsch dir ma tippen :smile:

Also mache einfach ne Form, setze darauf folgende Elemente
Winsock -> wsckchat mit dem index 0
3 Textboxen mit dem namen
txtname -> Nickname
txtNachricht -> Nachricht die gesendet werden soll
txtchat -> die anzuzeigenden nachrichten
5 Schaltflächen mit den Namen
cmdlisten -> Schickt das progg in den Server Modus
cmdconnect -> Progg läuft als client und verbindet sich mit dem server
cmdcancel -> Abbruch
cmdsend -> Daten werden gesendet
cmdbeenden -> prog wird beendet

Option Explicit

Private blnConnected As Boolean
Private strNick As String
Private blnServer As Boolean

Private blnSendCompleted As Boolean

Private Sub Senden(strData As String, Optional Index As Integer = 0)
 blnSendCompleted = False
 If wsckChat(Index).State = sckConnected Then
 wsckChat(Index).SendData strData
 Do Until blnSendCompleted
 DoEvents
 Loop
 End If
End Sub

Private Sub AddMessage(strMessage As String, strSender As String)
 txtChat.Text = txtChat.Text & \_
 "(" & Trim(strSender) & ") " & \_
 strMessage & vbCrLf
 txtChat.SelStart = Len(txtChat.Text)
End Sub

Private Sub ForwardMsg(strData As String, intExcludeIndex As Integer)
 Dim intCounter As Integer
 If wsckChat.Count \> 1 Then
 For intCounter = 1 To wsckChat.Count - 1
 If intCounter intExcludeIndex Then
 Senden strData, intCounter
 End If
 Next
 End If
End Sub

Private Sub EnableButtons()
 lblBez(0).Enabled = Not blnConnected
 txtName.Enabled = Not blnConnected
 cmdListen.Enabled = Not blnConnected
 cmdConnect.Enabled = Not blnConnected
 cmdCancel.Enabled = blnConnected
 lblBez(1).Enabled = blnConnected
 txtNachricht.Enabled = blnConnected
 cmdSend.Enabled = blnConnected
 txtChat.Enabled = blnConnected
 txtChat.Text = ""
End Sub

Private Function GetNextFreeIndex() As Integer
 Dim intCounter As Integer
 For intCounter = 1 To wsckChat.Count - 1
 If wsckChat(intCounter).State = sckClosed Then
 GetNextFreeIndex = intCounter
 Exit Function
 End If
 Next
 GetNextFreeIndex = wsckChat.Count
 Load wsckChat(GetNextFreeIndex)
End Function

Private Sub cmdBeenden\_Click()
 Unload Me
 Set frmMain = Nothing
 End
End Sub

Private Sub cmdCancel\_Click()
 Dim Counter As Integer
 For Counter = 0 To wsckChat.Count - 1
 If wsckChat(Counter).State sckClosed Then
 wsckChat(Counter).Close
 If Counter \>= 1 Then Unload wsckChat(Counter)
 End If
 Next
 blnConnected = False
 blnServer = False
 EnableButtons
End Sub

Private Sub cmdConnect\_Click()
 Dim strRemoteComputer As String
 If Trim(txtName.Text) = "" Then txtName.Text = "no name"
 strNick = Left(txtName & Space(50), 50)
 blnConnected = True
 blnServer = False
 EnableButtons
 strRemoteComputer = InputBox("Mit welchem Computer wollen Sie eine Verbindung aufnehmen?", "Connect", "127.0.0.1")
 If Trim(strRemoteComputer) = "" Then
 blnConnected = False
 blnServer = False
 EnableButtons
 Exit Sub
 End If
 wsckChat(0).RemotePort = 12123
 wsckChat(0).RemoteHost = strRemoteComputer
 wsckChat(0).Connect
End Sub

Private Sub cmdListen\_Click()
 If Trim(txtName.Text) = "" Then txtName.Text = "no name"
 strNick = Left(txtName & Space(50), 50)
 blnConnected = True
 blnServer = True
 EnableButtons
 wsckChat(0).LocalPort = 12123
 wsckChat(0).Listen
End Sub

Private Sub cmdSend\_Click()
 Dim strMessage As String
 If Trim(txtNachricht.Text) "" Then
 strMessage = "0" & strNick & \_
 txtNachricht.Text
 If blnServer Then
 ForwardMsg strMessage, 0
 Else
 Senden strMessage, 0
 End If
 AddMessage txtNachricht.Text, strNick
 txtNachricht.Text = ""
 End If
End Sub

Private Sub Form\_Load()
 blnServer = False
 blnSendCompleted = True
End Sub

Private Sub wsckChat\_Close(Index As Integer)
 If blnServer Then
 If Index = 0 Then
 blnConnected = False
 blnServer = False
 EnableButtons
 Else
 AddMessage "Der User " & wsckChat(Index).Tag & " hat den Chat verlassen", "-system-"
 ForwardMsg Left("-system-" & Space(50), 50) & \_
 "Der User " & wsckChat(Index).Tag & " hat den Chat verlassen", Index
 wsckChat(Index).Close
 End If
 Else
 AddMessage "Die Verbindung wurde beendet", "-system-"
 blnConnected = False
 blnServer = False
 EnableButtons
 End If
End Sub

Private Sub wsckChat\_Connect(Index As Integer)
 Senden "1" & strNick
End Sub

Private Sub wsckChat\_ConnectionRequest(Index As Integer, ByVal requestID As Long)
 wsckChat(GetNextFreeIndex).Accept requestID
End Sub

Private Sub wsckChat\_DataArrival(Index As Integer, ByVal bytesTotal As Long)
 Dim strData As String
 Dim strNick As String
 Dim strMessage As String
 wsckChat(Index).GetData strData
 If Left(strData, 1) = "0" Then
 strNick = Trim(Mid(strData, 2, 50))
 strMessage = Mid(strData, 52)
 AddMessage strMessage, strNick
 If blnServer Then ForwardMsg strData, Index
 ElseIf Left(strData, 1) = "1" Then
 strNick = Trim(Mid(strData, 2, 50))
 If blnServer Then
 wsckChat(Index).Tag = strNick
 ForwardMsg Left("-system-" & Space(50), 50) & "1" & strNick, Index
 End If
 AddMessage "Der User " & strNick & " betritt den Chat.", "-system-"
 End If
End Sub

Private Sub wsckChat\_SendComplete(Index As Integer)
 blnSendCompleted = True
End Sub

so wie du nun siehst ist es eigentlich rel. simple :smile:

MFG Alex

Hi Alex,

bei ‚Chat‘ habe ich automatisch ‚Browser‘ und ‚Website‘ gedacht. :wink: Jetzt verstehe ich, was Du machst. Den gesamten Code habe ich noch nicht vertanden, Deine Gedankengänge navchzuvollziehen dauert etwas länger als ein paar Minuten. :wink: Ich kopier mir den Code mal in 'ne Form. …

Gruß, Rainer

Hi Alex,

… läuft. :wink:

was Du jetzt suchst, ist ein ‚vernünftiges‘ Steuerelement für txtChat.

… Ich suche mal auch ein wenig. …

Gruß, Rainer

Hallo Alex,
ich habe mich noch mal mit dem rtf befasst.
Den Nachteil, daß die Bilder nicht transparent sind habe ich mal ignoriert. :wink:

Auf Deine Form habe ich noch zwei Button (cmdGetRtf und cmdPutRtf) und eine Textbox (txtAnzeige.Text) gelegt.
txtChat ist eine Richtextbox. :wink: Mit …

Private Sub cmdGetRtf\_Click()
 txtAnzeige.Text = txtChat.TextRTF
End Sub

Wird der inhalt der Richtextbox als Text angezeigt. In dem Text kann man dann munter ändern und mit …

Private Sub cmdPutRtf\_Click()
 txtChat.TextRTF = txtAnzeige.Text
End Sub

… die Änderungen zurück schreiben. Die Bildinformationen, die als ASCII-Folge vorliegen kann man kopieren, einfügen und das Bild so wunderbar vervielfältigen.
Du müßtest Deine smilys in einer unsichtbaren Richtextbox ablegen, dann kannst Du die kopieren und einfügen, ohne Umweg über die Zwischenablage.

Transparent werden die davon aber nicht. ;-(

Ein wenig Grundlagenforschung ermöglicht aber sicher, die Farben zu beeinflussen. Einen ‚bunten‘ Hintergrund wirst Du ja nicht haben, eher eine bestimmte Hintergrundfarbe. Die Darstellung der Grafiken im rtf scheint so simpel gestrickt zu sein, daß das zu beeinflussen ist.

Gruß, Rainer

So, dass wäre die funktion MP3_play und MP3_Stop habe die kopiert von www.vbarchive.net

'Modul MP3-Play and Stop via API
Option Explicit

’ zunächst die benötigte API-Deklaration
Private Declare Function mciSendString Lib „winmm.dll“ _
Alias „mciSendStringA“ (ByVal lpszCommand As String, _
ByVal lpszReturnString As String, _
ByVal cchReturnLength As Long, _
ByVal hwndCallback As Long) As Long

Private Declare Function GetShortPathName Lib „kernel32“ _
Alias „GetShortPathNameA“ (ByVal lpszLongPath As String, _
ByVal lpszShortPath As String, _
ByVal cchBuffer As Long) As Long
’ MP3-Datei abspielen
Public Function MP3_Play(ByVal sFile As String, _
ByVal sAlias As String) As Boolean

Dim bResult As Boolean

’ Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
’ wie Leerzeichen Probleme machen
Dim sBuffer As String
Dim lResult As Long

sBuffer = Space$(255)
lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))

If lResult 0 Then
sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)

’ MCI öffnen
lResult = mciSendString("open " & sFile & _
" type MPEGVideo alias " & sAlias, 0, 0, 0)

If lResult = 0 Then
’ MP3 abspielen
If mciSendString(„play " & sAlias & _
" from 0“, 0, 0, 0) = 0 Then
bResult = True
End If
End If
End If

MP3_Play = bResult
End Function
’ Wiedergabe stoppen und MCI schließen
Public Sub MP3_Stop(ByVal sAlias As String)
mciSendString "stop " & sAlias, 0, 0, 0
mciSendString "close " & sAlias, 0, 0, 0
End Sub

Mit dem ermitteln der Abspieldauer habe ich auch schon überlegt. Vielleicht mache ich das acuh. MIt dem Tip auf den Mp3player hattet ihr auch recht sollte einfach eine kleine Übung sein, damit ich mal ein bisschen weiter komme mit VB.