![]() |
distintas picklists en la misma columna de dbgrid
Hola todos mi consulta es la siguiente:
Tengo un dbgrid conectado a una tabla y quiero que en la misma columna de ese dbgrid aparezcan distintas listas desplegables para cada registro (según campos de otra tabla). Hasta ahora estoy usando esto: procedure TForm3.Table1NewRecord(DataSet: TDataSet); var i:Integer; lista: TStrings; begin lista:= TStringList.Create; for i:=1 to table2stock.asinteger do lista.Add (IntToStr (i)); DBGrid1.Columns[0].PickList:= lista; {1} lista.Destroy; end; Pero lo que hace esto es cargar la misma lista para todos los registros. Obviamente el problema está en {1} debo poder separar la fila seleccionada para cargar la picklist, pero hasta ahora no encuentro el método adecuado. También probé ponerlo en el evento oncellclick del dbgrid pero parece no funcionar. Si alguien puede darme una ayudita desde ya se lo voy a agradecer. Saludos. |
Dado que picklist es un atributo de la columna, el dbgrid no puede mantener un picklist diferente para cada registro (fila).
Sin embargo, podes cambiarlo dinámicamente cada vez que cambia una fila (evento onScroll del DataSet), además de lo que ya estas haciendo para cuando se inserta un nuevo registro. Hasta luego. ;) |
list out of bound
Hola, antes que nada gracias por contestar, te comento que hice algunas modificaciones:
procedure TForm3.Dbgrid1onDblclick(Sender: TObject); var i:Integer; lista: TStrings; valo:integer; catselgrid: string; artselgrid: string; begin with DBGrid1.DataSource.DataSet do begin lista:= TStringList.Create; catselgrid:= DBGrid1.SelectedRows.Items[1]; artselgrid:= DBGrid1.SelectedRows.Items[2]; if (Table2.FindKey([catselgrid, artselgrid])) then begin valo:= Table2Stock.AsInteger; for i:=1 to valo do lista.Add (IntToStr (i)); DBGrid1.Columns[0].PickList:= lista; lista.Destroy; end; end; end; pero salta un Error: list index out of bounds. Hay un limite en la cantidad de compoonentes de la lista ? :confused: siendo que el valor de valo (tope del for que genera la lista) puede llegar a mas de 1.000. Saludos. |
Hola.
Te recomiendo aprender a usar las etiquetas [ code ], [ delphi ], [ sql ] y [ php ] para publicar trozos de código, según corresponda. De esta manera respetan su indentación e incluso se resalta la sintaxis, con lo que son mucho mas legibles. Sería útil saber en que línea del código salta la excepción, pues a simple vista no encuentro el error. Por otro lado, me parece exagerado hacer un picklist con tantas opciones. De hecho, mas de unas cuantas ya no me parece práctico para un picklist... sobre todo si se trata de números. Mejor dejar que el usuario introduzca manualmente el dato, no te parece? Hasta luego. ;) |
Yo te recomiendo, aparte del consejo de jachguate, que identes un poco más tu código, pues aún con esas etiquetas, sin el identado se hace muy pesado el leerlo.
|
La franja horaria es GMT +2. Ahora son las 23:23:44. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi