Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Tener un columna de ComboBox en un stringGrid (https://www.clubdelphi.com/foros/showthread.php?t=62156)

rgstuamigo 06-12-2008 17:19:05

Tener una o varias columnas de ComboBox's en un stringGrid
 
Hola amigos del foro quisiera tener un stringGrid con una o varias columnas de comboBox's donde el usuario pueda elegir opciones.
No se si ya se tratado este asunto pues he buscado el foro pero no he podido encontrar una solucion al asunto.
Espero que puedan ayudarme..;)
Saludos......

Cañones 06-12-2008 20:45:20

Hola.
Mira en DBGrid es la propiedad Picklist de la columna, pero no se en stringGrid.
Pero si el dbgrid trabaja con una base y los datos del combo son de la base es de otra manera.

Saludos.

rgstuamigo 08-12-2008 23:10:24

Ok Cañones , ya probè tu opcion que me distes especialmente lo complementé con esta pagina y funciona;pero al parecer solo para DBGrids y no asi para StringGrid.
Yo estoy tratando de poner ComBox's en los StringGrid y tengo el siguiente codigo:
Código Delphi [-]
procedure TForm1.robertito1Click(Sender: TObject);
const Filas=5;
var
L :Array[1..Filas]of TComboBox;
i,j:Integer;
begin
for i :=1  to Filas do
    begin
        L[i]:=TComboBox.Create(self);
        L[i].Parent:=StringGrid1;
        L[i].BoundsRect:=StringGrid1.CellRect(1,i);
             for  j:=1  to 10 do  //esto para rellenar los itenes
                   L[i].Items.Add('Opcion:'+IntToStr(j));
    end;

end;
El problema es que cuando quiero desplegar los itenes de los ComboBox's no se ven encima del StringGrid, pero estan cargados, pueden probarlo pulsado las teclas hacia abajo o arriba.
Si alguien pudiera darme una manito de cual es mi error o sugerirme otra solucion, estaria muy agradecido.;)
Saludos...:)

xEsk 10-12-2008 13:51:32

Hola, con Delphi 2007 funciona bien. Los menus aparecen por encima del StringGrid.

Saludos.

rgstuamigo 10-12-2008 20:00:27

Pero en Delphi 7 no me funciona bien ,se ve bien los ComboBox's pero cuando le doy click en uno de ellos ,los itenes no se ven.....¿Que podra ser?¿Y como soluciono esto? :confused::o.

rgstuamigo 13-12-2008 14:08:02

Al parecer nadie se ha topado con este problema:o...puede ser que no tenga solucion...
Entonces me gustaria ,si alguien conoce un buen componente que haga lo que estoy necesitando....les seria muy agradecido....;)...

petete2008 23-12-2008 10:58:38

lo arreglastes?
yo tengo el mismo problema :(
los items del combobox me aparecen por detrás.

Lepe 23-12-2008 12:46:58

No había visto este hilo. No pongas el padre del combo al stringgrid, intenta que el padre sea el Form y si acaso haces un combo.bringToFront para traerlo al frente.

Lo que intento decir es que simules que el combo esté dentro del grid cambiando su tamaño como bien haces, pero que en realidad pertenezca al Form.
Edito: codigo sucio pero funcional:
Código Delphi [-]
const Filas=5;
var
L :Array[1..Filas]of TComboBox;
i,j:Integer;
begin
stringgrid1.DefaultRowHeight := 21;
for i :=1  to Filas do
    begin
        L[i]:=TComboBox.Create(self);
        L[i].Parent:=self;
        l[i].Items.CommaText:= 'pepe,antonio,jose';
        //l[i].BringToFront;
        l[i].Left := stringgrid1.Left + stringgrid1.cellrect(1,i).Left+1;
        l[i].Top := stringgrid1.Top +stringgrid1.cellrect(1,i).top+1;
        l[i].Width:=  stringgrid1.cellrect(1,i).Right
                      - stringgrid1.cellrect(1,i).Left;

        // esto no funciona, ya que el combo mantiene su alto según
        // la fuente que tenga puesta, así que el alto de las celdas tendrás
        // que ajustarlo al alto de un combo,
//        l[i].Height :=stringgrid1.cellrect(1,i).Bottom
//                      - stringgrid1.cellrect(1,i).Top;
             for  j:=1  to 10 do  //esto para rellenar los itenes
                   L[i].Items.Add('Opcion:'+IntToStr(j));
    end;

end;
SAludos

rgstuamigo 23-12-2008 22:14:41

Gracias Lepe..;).
Me quedó de esta forma:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const Filas=20;//Mi StringGrid es de 21 filas ,una es para el titulo
var
L :Array[1..Filas]of TComboBox;
i,j:Integer;
begin
StringGrid1.DefaultRowHeight:=19;//para que se vean bien pegadito los ComboBox al StringGrid.
for i :=1  to Filas do
    begin
        L[i]:=TComboBox.Create(self);
        L[i].Parent:=self;
        L[i].Width:=stringgrid1.DefaultColWidth;
        L[i].Height :=stringgrid1.DefaultRowHeight;
        L[i].Left := stringgrid1.Left + stringgrid1.cellrect(1,i).Left+1;
        L[i].Top := stringgrid1.Top +stringgrid1.cellrect(1,i).top+1;
             for  j:=1  to 10 do  //esto para rellenar los itenes
                   L[i].Items.Add('Opcion:'+IntToStr(j));
    end;

end;
Saludos..:).


La franja horaria es GMT +2. Ahora son las 08:37:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi