Ir al contenido


Foto

mostrar combobox en dbgrid al ingresar determinado valor


  • Por favor identifícate para responder
6 respuestas en este tema

#1 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 mensajes

Escrito 30 junio 2010 - 10:01

hola gente... :cool:

bueno es medio rebuscado el titulo hehehhe

pero bueno....se trata de q cuando el usuario ste ingresando datos en un dbgrid
en una determinada celda..sta celda guarda el valor de la pregunta ¿Donde nacio?..debe ingresar 1,2,3....
si ingresa 1(originario de la provincia) salta a otra celda del dbgrid
pero si ingresa 2(de otra provincia) : tiene q mostrar un combobox para q elija una provincia argentina
y si ingresa 3 (de otro pais): tiene q mostrar un campo para q especifique el pais (nose si se sea combeniente un combobox de paises, ya qe son muchos *-) , ustedes diran  *-))

mientras les escribo..se me ocurre una solucion...podria poner una celda mas...y dependiendo de la respuesta de la celda anterior...generar codigo para q me ponga el combobox correspondiente en la otra celda....aunq no lo veo facil....
como se pone un dbcombobox en un dbgrid?  :s

saludos  :cool: :cool:
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 30 junio 2010 - 11:03

Se me ocurre crear el dbcombobox y colocarlo encima de la celda en cuestión. Tras elegir una opción, por código introduces el valor y cambios pertinentes. Ese dbcombobox puede ser fantasma, es decir que aparezca al tratar de editar un campo, justo encima de éste.

Esta técnica la he usado para editar substrings de un ListView...

Saludos.
  • 0

#3 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 mensajes

Escrito 30 junio 2010 - 11:15

ah mira vos...y como se hace ese dbcombobox fantasma?? es la primera vez q lo scucho :shocked:

tenes algun codigo para pasarme?  :s

saludos
  • 0

#4 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 30 junio 2010 - 11:22

ah mira vos...y como se hace ese dbcombobox fantasma?? es la primera vez q lo scucho :shocked:

tenes algun codigo para pasarme?  :s

saludos


[broma] Haciendo que el dbcombobox pase a mejor vida  : [/broma]

Jejejejeje.... no aguanté las ganas.... :embarrassed:

Prosigamos con el hilo....  :D  :D  :D

Saludox ! :)
  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 30 junio 2010 - 11:33

ah mira vos...y como se hace ese dbcombobox fantasma?? es la primera vez q lo scucho :shocked:


Es sencillo, con un combobox, una sámana, una cadena y una gran bola de hierro...  :p :p :D :D :D.

Bueno, por fantasma me refiero a que sólo se vea cuando y donde lo precises, el resto del tiempo puede estar oculto, pero no se si esto es lo que quieres...

Saludos.
  • 0

#6 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 30 junio 2010 - 12:41

Bueno, basta de bromas. No se si lo del ComboBox fantasma es lo que buscas, pero te paso un boceto sobre el que desarrollar...




delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, Grids, StdCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     StringGrid1: TStringGrid;
  12.     ComboBox1: TComboBox;
  13.     procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  14.       Y: Integer);
  15.     procedure FormCreate(Sender: TObject);
  16.     procedure ComboBox1Select(Sender: TObject);
  17.   private
  18.     _Objects: array of TObject;
  19.   public
  20.     { Public declarations }
  21.   end;
  22.  
  23. var
  24.   Form1: TForm1;
  25.  
  26. implementation
  27.  
  28. {$R *.dfm}
  29.  
  30. procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  31.   X, Y: Integer);
  32. var
  33.   Col, Row: Longint;
  34.   Rect: TRect;
  35. begin
  36.   StringGrid1.MouseToCell(X, Y, Col, Row);
  37.   Rect:= StringGrid1.CellRect(Col, Row);
  38.   if StringGrid1.Objects[Col, Row] = Combobox1 then
  39.   begin
  40.     Combobox1.Visible:= true;
  41.     Combobox1.Left:= StringGrid1.Left + Rect.Left;
  42.     Combobox1.Top:= StringGrid1.Top + Rect.Top;
  43.     Combobox1.Width:= StringGrid1.DefaultColWidth;
  44.     Combobox1.Height:= StringGrid1.DefaultRowHeight;
  45.   end else
  46.     Combobox1.Visible:= false;
  47. end;
  48.  
  49. procedure TForm1.FormCreate(Sender: TObject);
  50. begin
  51.   StringGrid1.Cells[1, 1]:= 'Combo';
  52.   StringGrid1.Objects[1, 1]:= ComboBox1;
  53. end;
  54.  
  55. procedure TForm1.ComboBox1Select(Sender: TObject);
  56. var
  57.   Col, Row: Longint;
  58. begin
  59.   StringGrid1.MouseToCell(ComboBox1.Left-StringGrid1.Left, ComboBox1.Top-StringGrid1.Top, Col, Row);
  60.   StringGrid1.Cells[Col, Row]:= ComboBox1.Text;//Items.Strings[];
  61.   Combobox1.Visible:= false;
  62. end;
  63.  
  64. end.



Te incluyo el ejemplo en un adjunto.  ;)

Edito: Amplío el ejemplo.

Saludos.
  • 0

#7 abraham85

abraham85

    Advanced Member

  • Miembros
  • PipPipPip
  • 128 mensajes

Escrito 01 julio 2010 - 08:02

gracias amigo (y)
voy a usar lo q me pasaste para habilitar el combobox segun la opcion q ingrese (1,2,3)
(y) (y)

gracias che  ;)
  • 0




IP.Board spam blocked by CleanTalk.