AYUDITA CON LISTBOXEX EN DISCOGRAFIAS

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Bueno, si me mandais hacer puñetas no me va parecer mal pero cuando es un negado en programacion, es un negado, y yo soy un negado.

Siguiendo el consejo de Rafaxplayer, expongo mi duda:

Tengo un proyecto de hacer discografias, y la verdad es que funciona cojonudo, muy vistoso y agradable de ver (joder, si no me echo flores, nadie me las va echar). Me costó lo suyo entender algo de esto, pero a trancas y barrancas, consejo de RafaxpLayer, Ceone y otros, solucionar problemas, he conseguido sacarla adelante. Pero mira que el "maldito" RafaxPlayer ( y digo maldito porque yo ya estaba tranquilo con lo que tenía, y lo digo de forma amistosa", va y pone un post de MediaPlayer con List Box, y me ha "jodido", pues es tan bueno, que quiero incluirlo en las próximas discografías, pero maldita leche, no consigo hacerlo funcionar (bueno, hacerlo funcionar si lo consigo, pero no me convence).

Explico, en el proyecto que suelo hacer en golbal funciones tengo lo siguiente:
function AddFilestoList(strFolder)
local sz_itemText;
ListBoxEx.DeleteAllItems("Plugin1");
StatusDlg.Show(MB_ICONNONE, false);
local tb = File.Find(strFolder, "*.mp3", true, false);--Busqueda de archivos mp3 en el directorio strFolder

--Escoger los colores de inicio de la playlist------
colorimpar = {213888};
colorpar = {3964823};
x = colorimpar;

        if tb then
                StatusDlg.SetMeterRange(1,table.maxn(tb));
                for i,v in pairs (tb) do--recorremos tabla 
                		sFile = String.SplitPath(v).Filename ---ombre de archovo SIN extension de la ruta completa
                        --sFile = String.SplitPath(v).Filename..String.SplitPath(v).Extension --estraccion del nombre de archovo CON extension de la ruta completa
                        nIcon = ListBoxEx.AddAssocIcon("Plugin1", LBXASSOC_SMALLICON,v);--Funcion del listboex para sacar el icono por defecto de windows en el archivo, previo crear imagelist "on create" evento.
                        StatusDlg.SetMeterPos(i);
                        StatusDlg.SetTitle(Math.Floor((i/table.maxn(tb)*100)).." %");
                        StatusDlg.SetMessage("Add "..sFile.." to list");
                        sz_itemText = "<p><b><font color=16777215 face=Bookman Old Style size=16 >"..sFile.."</font></b></p>"--codigo hatml para crear el item con el nombre del archivo
                        Application.Sleep(50)-- esto es para que sea mas visible el statusdlg , totalmente opcional.
                        actual = ListBoxEx.AddItem("Plugin1", sz_itemText, "", v, "", nIcon, LBXITEM_HTML, 0, x, {4227072}, nil);--añadimos item 
                        
                        ----=========================  DEFINICION DE COMANDOS LINEA ANTERIOR  ==========================
                        -- Pluygin1 = Escoge la ListBoxEx de forma parecida a la PlayList
                        --- sz_itemText = esoge tipo de letra, tamaño y color de la fuente, para cambair ir al comando sz_itemText nterior
                        --- v = Defne lo que se vera a la PlayList, para definir, hay que ir al comando sFile anterio (en est caso solo nombre) 
                        ---nIcon = Define el icono a ver en la ListBoxEx
                        -- LEXITEM_HTML = Admite caracteres html definidos en sz_itemText
                        -- 0 valor por defecto del alto de cada item de ls ListBox (se autoajusta al tamaño de la fuente)
                        -- x = vaiable quw dine el orden en que aparecen los colores del item, colores definidio anteriormente y orden definidio en funcion siguiente
                        -- Las dos ordenes siguentes definen los colores de seleccionao item  y  HightColor al funcionar                      
                        -- ==============================================================================================
                        
                        -- Funcion en donde se escoge el orden de colores como aparece la listBoxEx, se extrae la variable x
                        
                        if x == colorimpar then
                           x = colorpar;
                           else
                           x = colorimpar;
                           end
                        --=================================================================================================
                end
        end
        StatusDlg.Hide();
end

----###########################################################   
Lo tengo así para saber que hace cada cosa pues repito, soy un negado.

Luego tengo una funcion en cada boton que es
MediaPlayer.Stop("Plugin2");

FlashVisible("Flash1", true);
ListBoxEx.SetVisible("Plugin1", true);
Image.SetVisible("marco2", true);

Folder= _SourceFolder.."\\AutoPlay\\Docs\\JOHN WILLIAMS\\2002 - Catch Me If You Can\\"-- Carpeta que queremos de contenedor de nuestros mp3
AddFilestoList(Folder)


Esto hace que el proyecto aparezca un icono pequeño, que al pinchar en él, se abre la caratula en grande, y aparece la dichosa ListBoxEx con todas las canciones de la carpeta a que se hace referencia el boton de llamada, puesto que en Doubleclick de la "dichosa" tengo este
actual = e_Index
MediaPlayer.Load("Plugin2", ListBoxEx.GetItemData("Plugin1", actual));
y se me reproduce en el Media Player que tiene en On Finish
nCount ="";
nNext ="";
sFile ="";

--nCount = ListBox.GetCount("ListBox1");
nCount = ListBoxEx.GetTotalItems("Plugin1");

--tSelected = ListBox.GetSelected("ListBox1");
tSelected = ListBoxEx.GetSelectedItem("Plugin1");


if tSelected then

nSelected = tSelected;

nNext = nSelected;

	if nNext < nCount then
	nNext = nNext+1;
	--ListBox.SelectItem("ListBox1", nNext);
					ListBoxEx.SelectItem("Plugin1",nNext,true);
					
	--sFile = ListBox.GetItemData("ListBox1", nNext);
					sFile = ListBoxEx.GetItemData("Plugin1", nNext);

	MediaPlayer.Load("Plugin2", sFile);
	MediaPlayer.Play("Plugin2");

	elseif nNext == nCount then
	
	--ListBox.SelectItem("ListBox1", 1);
				ListBoxEx.SelectItem("Plugin1", 1, true);

	--sFile = ListBox.GetItemData("ListBox1", 1);
	sFile = ListBoxEx.GetItemData("Plugin1", 1);

	MediaPlayer.Load("Plugin2", sFile);
	MediaPlayer.Play("Plugin2");

	end

end

¡ Alla va todo el proyecto expuesto! Modelo en APZ http://www.multisiteupload.com/files/0W ... aladas.apz

Como decía , estaba contento y feliz, hasta que RafaxPlayer emitió el post que dije antes y que hace una cosa que mi proyecto no hace, cual es, que abre el explorer, y te permite escoger las carpetas y archivos y añadirlos a la ListBoxEx, y esa es una idea cojonuda y práctica, unido a la vistosidad de los pryectos que hago, quedaría chulín, chulín. Pero nada, que modifico los nombres, las variables, pero nada de nada no consigo hacerlo funcionar. Bueno hacer si lo hago, para ello creo mi proyecto con dos plugins listBoxEx1 y MediaPlayer1, luego creo otra Listbox2 y un MediaPlayer y leañado el código de RafxPlayer Media Player con ListBox, y zas, funciona correctamente, pero es una, y seamos serios, una chapuciña, pues te obliga a 2 media player y 2 listbox.

En el código anterior, que líneas podrán añadirse al mismo, para que al crear un boton en el proyecto permitiese añadir cualquier carpeta o cualquier archivo, pero solo usando una lñistBoxEx y un solo MediaPlayer?

Vale, ni puñetera idea tengo, pero no me mandeis hacer puñetas, permito insultos y todo. Gracias


VER ULTIMO MENSAJE CON UNA APZ, EN LA PAGINA 2, ESTA MAS CLARO QUE TODO ESTO. SALUDOS
Up your apz To change the wrong thing and we facilitate the construction of the trouble


Hasta el apz Para cambiar las cosas mal y facilitar la construcción de la pena
Huy se me ha escapado
http://www.filedropper.com/blues

Ahi está la apz de discografias
asuos2004 escribió:http://www.filedropper.com/blues

Ahi está la apz de discografias
:) where ?
donde?
¿Este enlace funciona ?
Pues nada, que ha vuelto a dejar de funcionar, Voy a ver donde puedo subirlo
Joder se me ha vuelto a chantar el enlace, aquí uno nuevo<div>
http://www.multisiteupload.com/files/0W ... aladas.apz

este lo acabo de poner ahora en varios sitios, supongo que funcionarán correctamente. saludos
Lo acabo de probar y funciona correctamente
Do not worry, it should create a list of images in the event "On Create" On listboxex

I'm going to some amendments to the example apz

and I will work to correct Allokhtae :pc:
No, no me has entendido, funcionan correctamente, mira voy crear una discografía en este sentido y te la posteo mañana, así podré explicartelo mejor, por que lo cierto es que es bastante lioso, y lo mejor es una apz. Intentaré crearla ahora, si me da tiempo la subo.
Imagen
Imagen
Imagen
Imagen
Mira, he creado una apz con dos canciones, para que veas que es lo que deseo. Veras que al abrir, tiene un etiqueta que pone proyecto1, esto es como hago las discografías normalmente. Luego hay una etqiueta que pone Proyecto 2, pues bien en esta última te he puesto un boton que dice "ESTE BOTON QUE HAGA LO MISMO EN EL PROYECTO1". 

Bueno, pues lo que quiero es poner ese boton en el proyecto1, pero usando solo una listBox y un solo MediaPlayer. Tal como yo lo hago funciona perfectamente, pero me veo obligado a usar dos plugins más (la listBoxEx 2-Plugin3, y el MediaPlayer2-Plugin4), y pregunto si se podría hacer usando solo 1 listboxex y un mediaplayer.

Independientes funcionan correctamente, para evitar que se vean dobles, pues coloco una listBoxEx encima de la otra, al igual que el MediaPlayer, y en la reprodución se ve como si solo existiesen dos plugins.

En resumen, que al Proyecto1, quiero añadirle un boton para que haga lo que este hace en el proyecto 2.

Pongo la apz para que lo veas más claro, porque tener dos listboxEx y dos MediaPlayer, me parece una chapuciña.
http://www.multisiteupload.com/files/I0 ... Modelo.apz
Si se puede, me gustaría hacerlo. saludos y gracias
Assuos cual es el problema? si no he entendido mal solo quieres que haga lo del botón en los objetos de proyecto1, si solo es eso... solo tienes que cambiar los nombres de objetos en el script, por ejemplo del plugin3 por plugin1 y asi ,creo que es eso no? asi he dejado yo el boton y carga los archivos en proyecto1:
--local myfolder = Shell.GetFolder(SHF_MYMUSIC); -- Escogemos la carpeta donde queremos que empiece la búsqueda de los archivos, aquí iría Mi Música pordefecto
local myfolder = _SourceFolder.."\\AutoPlay\\Docs\\"; -- En cambio en esta línea, empezaría a buscar desde la carpeta Docs del Autoplay (la esogemos por ser más usual en discografías)
	local s;


 -- Asignamos dos colores en formato de tabla ( lo quiere asi el listboxEx)  
	color1 = {128,16711808, 128}
	color2 = {16384,12615808,16384}
	--Window.SetMask(Application.GetWndHandle(), "AutoPlay\\Images\\mask2.png", false, 0);-- aplicamos mascara que hace visible el play list, mejor dejarla por defecto para qye coja todo el
	--epacio 
   
			ListBoxEx.SetVisible("Plugin1", true); -- Hacemos visible el playlist(listboxex).

		--- Declaramos filtros para video y audio en el buscador de archivos

	local strExtensions = "Audio Files (*.mp3;*.wav;*.ogg;*.raw)|*.mp3;*.wav;*.ogg;*.raw|All Files (*.*)|*.*|";    
	---local strExtensions = "Audio Files (*.mp3;*.wav;*.ogg;*.raw)|*.mp3;*.wav;*.ogg;*.raw|Video Files (*.avi;*.mpg;*.wmv;*.asf)|*.avi;*.mpg;*.wmv;*.asf|All Files (*.*)|*.*|";    

			-- Lanzamos el buscador de archivos , nos retorna tabla con las rutas de los archivos seleccionados.
		local tFiles = Dialog.FileBrowse(true, "CARGA ARCHIVOS DE AUDIO", myfolder, strExtensions, "", "", true, true);    
			local x = color1; -- declaramos variable de color inicialmente como color 1.
  
			if tFiles ~= "CANCEL" and tFiles then -- si no cancelamos y la tabla no es nula.   
           ListBoxEx.SetUpdate("Plugin1", false);   
         
						for i , spath in pairs (tFiles) do-- recorremos la tabla de archivos buscados (dlg.fileBrowse).
						idIcon = ListBoxEx.AddAssocIcon("Plugin1", LBXASSOC_SMALLICON, spath);-- Usamos esta funcion para añadir icono associativo en el sistema al archivo de la ruta (spath).
						s = String.SplitPath(spath);-- funcion para recortar ruta
						sname = "<p><b><font color=16777215 face=Arial size=16 >"..s.Filename.."</font></b></p>";-- Cambiar color y tipo de letra en la ListBox (No aparece la extension del archivo)
						---sname = "<p><b><font color=16777215 face=Arial size=16 >"..s.Filename..s.Extension.."</font></b></p>";-- Cambiar color y tipo de letra en la ListBox( Si aparece la extension del archivo)
						ListBoxEx.AddItem("Plugin1", sname, spath, spath, "", idIcon, LBXITEM_HTML, 0, x, nil, nil); -- añadimos items... 
	
	
									if x == color1 then-- filtro para cambiar de color 1 a 2 y viceversa e intercalar colores en los items.
									x = color2;  
							else
		
									x = color1;
							end
				end -- fin.
	
			
			
			ListBoxEx.SetUpdate("Plugin1", true);-- Actualizar cambios en el objeto (listBoxEx).
		
			--	filtro para saber si hay algun archivo reproduciendose,0 es que no por lo tanto empezamos con el primer archivo de la lista. 
			--	existe un bug con la funcion mediaplayer.Getstate , retorna 2(playing) cuando no hay ninguna reproducción.
			if MediaPlayer.GetCurrentPos("Plugin2")== 0 then
	
				ListBoxEx.SelectItem("Plugin1", 1, true);-- seleccionamos el primer item de la lista.
				ListBoxEx.SetItemText("Plugin1", 1,ListBoxEx.GetItemText("Plugin1", 1, false).." ".."<p><b><font color=16777215 face='verdana' size=3> - Playing...</font></b></p>");-- añadimos el tag "playing.." 
				current = 1; -- declaramos variable de archivo actual en eL 1. 
     
    	MediaPlayer.Load("Plugin2", tFiles[1]);-- cargamos archivo actual...    
    
   		MediaPlayer.Stop("Plugin2");

   		
   		
   		MediaPlayer.Play("Plugin2"); -- play... 

     end

end  
Look at the idea of the work of albums through the use ListBoxEx

Button Script Which is under the name "My Albums" is :
my_albym = Folder.Find(_SourceFolder.."\\AutoPlay\\Docs", "*", false, nil);
ListBoxEx.DeleteAllItems("Plugin1");
ListBoxEx.SetUpdate("Plugin1", true);
if my_albym then
   for i,d in pairs(my_albym)do
    str_p = String.SplitPath(d);
    sz_itemText = "<p><b><font color=16777215 face=Bookman Old Style size=16 >"..str_p.Filename.."</font></b></p>"
    add_it = ListBoxEx.AddItem("Plugin1", sz_itemText, "", str_p.Filename, "", 0, LBXITEM_HTML, 0, nil, nil, nil);
    ListBoxEx.SetUpdate("Plugin1", true);
   end
end
and ListBoxEx Secript "On Double Click" is :
n_item_select = ListBoxEx.GetItemData("Plugin1", e_Index)
abood = String.Right(n_item_select, 4);
if abood~=".mp3" then
    fin_mp3 = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\"..n_item_select, "*.mp3", false, false, nil, nil);
    ListBoxEx.DeleteAllItems("Plugin1");
    ListBoxEx.SetUpdate("Plugin1", true);
    if fin_mp3 then
       for i,d in pairs(fin_mp3)do
           sp_slect = String.SplitPath(d);
           sz_itemText = "<p><b><font color=16777215 face=Bookman Old Style size=16 >"..sp_slect.Filename.."</font></b></p>"
           add_it = ListBoxEx.AddItem("Plugin1", sz_itemText, "", sp_slect.Filename..sp_slect.Extension, fin_mp3[i], 0, LBXITEM_HTML, 0, nil, nil, nil);
           ListBoxEx.SetUpdate("Plugin1", true);
       end
    end
    else
    play_item = ListBoxEx.GetItemDataEx("Plugin1", e_Index);
    MediaPlayer.Load("Plugin2", play_item);
end
Imagen

1-Albums reviewed within the ListBoxEx by pressing the button "My Albums"
2-Mahtoyatn Browse albums by clicking and choose from the ListBoxEx
3-When the content of the dialog box along with a ".mp3" Media Works

Can add more folders that contain a set of songs

HIDE: ON
Hidebb Message Hidden Description
Gracias Abood1987, tu proyecto es igualmente genial. Efectivamente solo usas el boton y ListBox, y es muy sencillo de entender. Me has abierto nuevas ideas. Muchisimas gracias y saludos
Ya has solucionado todo?
Pues si señor, hasta ahora lo he solucionado, gracias a tí u a Abood (es bueno el tío, el código que posteó es un verdadera joya, aunque al principio yo no lo cogí, pero es bueno, y además amable de cojones). Gracias a los dos

:pc: :yeah: :ohyeah:

no funciona los enlaces, podrias subirlos de nuevo

Gracias

:num1: