dm.tabla.first; while not eof do begin dm.tabla.fields[0].Integer := dm.tabla.recordcount + 1; dm.tabla.next; end;
Algo así pero en un listbox, ¿es posible?

Saludos.
Escrito 03 agosto 2009 - 07:03
dm.tabla.first; while not eof do begin dm.tabla.fields[0].Integer := dm.tabla.recordcount + 1; dm.tabla.next; end;
Escrito 03 agosto 2009 - 08:42
var item: String; begin for item in ListBox1.Items do begin ShowMessage(item) end; end;
Escrito 04 agosto 2009 - 12:16
Escrito 04 agosto 2009 - 03:17
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i:=0 to ListBox1.Count -1 do begin ShowMessage(ListBox1.Items[i]) end; end; end.
Escrito 04 agosto 2009 - 03:53
La verdad no estoy muy seguro si el código de Axesys funciona en versiones anteriores a Delphi 2007, el siguiente ejemplo obtiene el mismo resultado.
saludos
Escrito 04 agosto 2009 - 07:07
Escrito 04 agosto 2009 - 07:36
procedure TForm1.Button2Click(Sender: TObject); var i,e: Integer; begin i := 0; e:= ListBox1.Count ; while i < e do begin BASS_StreamFree(Channel); Channel := BASS_StreamCreateFile(False, PChar(ListBox1.Items[i]), 0, 0, 0); BASS_ChannelPlay(Channel, False); Form1.Caption := 'Player - '+ExtractFileName(Listbox1.Items[i]); i := i+1; end; end;
Escrito 04 agosto 2009 - 09:41
Var x,nPos:integer; begin x:= ListBox1.count -1; nPos :=0; while nPos<>x do begin inc(nPos); x:= ListBox.count -1 ; end; end;
procedure TForm1.Button2Click(Sender: TObject); var i: Integer; x,nPos:integer; begin x:= ListBox1.count -1; i :=0; while i<>x do begin BASS_StreamFree(Channel); Channel := BASS_StreamCreateFile(False, PChar(ListBox1.Items[i]), 0, 0, 0); BASS_ChannelPlay(Channel, False); Form1.Caption := 'Player - '+ExtractFileName(Listbox1.Items[i]); inc(i); x:= ListBox1.count -1 ; end; end;
Escrito 04 agosto 2009 - 10:50
procedure TForm1.Button2Click(Sender: TObject); var i: Integer; x,nPos:integer; begin x:= ListBox1.count -1; i :=0; while i<=x do begin Form1.Caption := 'Player - '+ExtractFileName(Listbox1.Items[i]); BASS_StreamFree(Channel); Channel := BASS_StreamCreateFile(False, PChar(ListBox1.Items[i]), 0, 0, 0); if BASS_ChannelPlay(Channel, False) then begin while BASS_ChannelIsActive(Channel)= BASS_ACTIVE_PLAYING do begin Application.ProcessMessages; refresh; end; inc(i); end ELSE inc(i); x:= ListBox1.count -1 ; end; end;
Escrito 04 agosto 2009 - 11:02
Escrito 05 agosto 2009 - 06:47
Escrito 05 agosto 2009 - 07:24
Escrito 05 agosto 2009 - 07:37
aun no entiendo la diferencia entre el while y el for para esta función, igual los dos hacen el ciclo...
Escrito 05 agosto 2009 - 07:47
aun no entiendo la diferencia entre el while y el for para esta función, igual los dos hacen el ciclo...
¿Llegaste a descargar mi ejemplo?, ella hace el ciclo pero en vez de ir sonando uno a uno como hace el while suena la última de la lista, ahi es la diferencia.
Saludos.
Escrito 05 agosto 2009 - 12:05
Escrito 05 agosto 2009 - 06:18
Escrito 05 agosto 2009 - 07:32
procedure TForm1.grListaDblClick(Sender: TObject); var Longitud: DWORD; Minutos, Segundos: WORD; Frq: Single; Frecuencia,FinalPos,Bitrate: DWORD; Canales: BASS_CHANNELINFO; i,x,npos: integer; begin x:= grLista.count -1; i := 0; while i <= x do begin ObtenerObjeto(grLista.ItemIndex); if Not FileExists(Ruta) then begin ShowMessage('Este archivo no existe o fue movido de sitio.'); end else begin BASS_StreamFree(Channel); Channel := BASS_StreamCreateFile(False, PChar(Ruta), 0, 0, 0); Volumen := TrackBar1.Position; BASS_ChannelSetAttribute(Channel,BASS_ATTRIB_MUSIC_VOL_CHAN,Volumen); if BASS_ChannelPlay(Channel, False) then begin // Mostramos la duración de la cancion Tiempo := BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel, BASS_POS_BYTE)); Longitud := BASS_ChannelGetLength(Channel, BASS_POS_BYTE); Gauge1.MaxValue := Longitud; Minutos := Round(Tiempo) div 60; Segundos := Round(Tiempo) - (Minutos * 60); lbTimeTotal.Caption := '/ '+format('%.*d',[2,Minutos])+':'+format('%.*d',[2,Segundos]); //Sacamos la Frecuencia de la Canción BASS_ChannelGetAttribute(Channel,BASS_ATTRIB_FREQ,frq); Frecuencia := Trunc(frq); lbFreq.Caption := 'Khz: '+IntToStr(Frecuencia); //sacamos el Bitrate FinalPos := BASS_StreamGetFilePosition(Channel, BASS_FILEPOS_END); Bitrate := Trunc(FinalPos / (125 * Tiempo) + 0.5); lbBitrate.Caption := 'Kbps: '+IntToStr(Bitrate); //Sacamos el tipo de canal Mono o Stereo BASS_ChannelGetInfo(Channel,Canales); case Canales.chans of 1 : lbChannels.Caption := 'Mono'; 2 : lbChannels.Caption := 'Stereo'; end; //mostramos la información de la canción (ID3 Tags) lbTitulo.Caption := TAGS_Read(Channel, '%TITL'); lbArtista.Caption := TAGS_Read(Channel, '%ARTI'); lbAlbum.Caption := TAGS_Read(Channel, '%ALBM'); lbAno.Caption := TAGS_Read(Channel, '%YEAR'); lbGenero.Caption := TAGS_Read(Channel, '%GNRE'); lbrate.Caption := lbFreq.Caption+' Khz'; lbCalidad.Caption := lbBitrate.Caption+' Kbps'; lbBPM.Caption := TAGS_Read(Channel, '%TBPM'); lbSize.Caption := TAGS_Read(Channel, '%TSIZ'); tmPosition.Enabled := True; TimerVis.Enabled := True; while BASS_ChannelIsActive(Channel)= BASS_ACTIVE_PLAYING do begin Application.ProcessMessages; refresh; end; inc(i); end ELSE inc(i); x := grLista.count -1 ; end; end; end;
Escrito 05 agosto 2009 - 08:43
Si checaste el EJEMPLO de enecu... lo que tiene es un reproductor de musica, entonces con el FOR al ejecutarlo tiene definido su ciclo logico por ejemplo de 1 a 5.. pero si lo usas con un while podras agregar mas musica a la lista y esta continuara tocandola, cosa que con el for solo tocaria hasta la 5..
CHEQUE el codigo de ENECUNEME.. y le postie un CODIGO que funciona y que lo puede adaptar a su reproductor,
SALUDOS..
Escrito 06 agosto 2009 - 06:54
procedure TForm1.grListaDblClick(Sender: TObject); var Longitud: DWORD; Minutos, Segundos: WORD; Frq: Single; Frecuencia,FinalPos,Bitrate: DWORD; Canales: BASS_CHANNELINFO; i,x,npos: integer; begin x:= grLista.count -1; // Si lo Ejecutas al hacer dobleClick en el Elemento de la Lista // Lo Logico es que empieze en la posicion del DOBLECLICK i := grLista.itemindex; // while i <= x do begin ObtenerObjeto(grLista.ItemIndex); if Not FileExists(Ruta) then begin ShowMessage('Este archivo no existe o fue movido de sitio.'); end else begin BASS_StreamFree(Channel); Channel := BASS_StreamCreateFile(False, PChar(Ruta), 0, 0, 0); Volumen := TrackBar1.Position; BASS_ChannelSetAttribute(Channel,BASS_ATTRIB_MUSIC_VOL_CHAN,Volumen); if BASS_ChannelPlay(Channel, False) then begin // Mostramos la duración de la cancion Tiempo := BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel, BASS_POS_BYTE)); Longitud := BASS_ChannelGetLength(Channel, BASS_POS_BYTE); Gauge1.MaxValue := Longitud; Minutos := Round(Tiempo) div 60; Segundos := Round(Tiempo) - (Minutos * 60); lbTimeTotal.Caption := '/ '+format('%.*d',[2,Minutos])+':'+format('%.*d',[2,Segundos]); //Sacamos la Frecuencia de la Canción BASS_ChannelGetAttribute(Channel,BASS_ATTRIB_FREQ,frq); Frecuencia := Trunc(frq); lbFreq.Caption := 'Khz: '+IntToStr(Frecuencia); //sacamos el Bitrate FinalPos := BASS_StreamGetFilePosition(Channel, BASS_FILEPOS_END); Bitrate := Trunc(FinalPos / (125 * Tiempo) + 0.5); lbBitrate.Caption := 'Kbps: '+IntToStr(Bitrate); //Sacamos el tipo de canal Mono o Stereo BASS_ChannelGetInfo(Channel,Canales); case Canales.chans of 1 : lbChannels.Caption := 'Mono'; 2 : lbChannels.Caption := 'Stereo'; end; //mostramos la información de la canción (ID3 Tags) lbTitulo.Caption := TAGS_Read(Channel, '%TITL'); lbArtista.Caption := TAGS_Read(Channel, '%ARTI'); lbAlbum.Caption := TAGS_Read(Channel, '%ALBM'); lbAno.Caption := TAGS_Read(Channel, '%YEAR'); lbGenero.Caption := TAGS_Read(Channel, '%GNRE'); lbrate.Caption := lbFreq.Caption+' Khz'; lbCalidad.Caption := lbBitrate.Caption+' Kbps'; lbBPM.Caption := TAGS_Read(Channel, '%TBPM'); lbSize.Caption := TAGS_Read(Channel, '%TSIZ'); tmPosition.Enabled := True; TimerVis.Enabled := True; while BASS_ChannelIsActive(Channel)= BASS_ACTIVE_PLAYING do begin Application.ProcessMessages; refresh; end; inc(i); end ELSE inc(i); x := grLista.count -1 ; end; end; end;
Escrito 06 agosto 2009 - 07:14