| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
seth Cmdr

Registrado: 16 Nov 2003Mensajes: 129
|
Publicado: Jue 06 Mar, 2008 4:25 pm Asunto: Celda Selecionada en Un DBGrid |
|
|
Buenos Días
Como puedo saber que celda tengo selecionada en un DBGrid
| Código: | void __fastcall TConForm::DBGrid1CellClick(TColumn *Column) |
asi si puedo saber que columna pero que fila dentro del evento
gracias |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Jue 06 Mar, 2008 4:50 pm Asunto: |
|
|
Pero que quieres hacer exactamente???
algo asi??:
| Código: | if( StringGrid1->Col == 3 )
if( StringGrid1->Row == 3 )
|
o asi:
| Código: |
int ekis,igriega;
TPoint pos = StringGrid1->ScreenToClient(Mouse->CursorPos);
TGridCoord pos_grid = StringGrid1->MouseCoord(pos.x, pos.y);
POINT MousePos;
GetCursorPos(&MousePos);
ekis=pos_grid.X;
igriega=pos_grid.Y; |
en esta ultimo, en ekis tendriamos la columna y en igriega la fila donde está el ratónl.
Ultima edición por hetorsc el Jue 06 Mar, 2008 4:58 pm, editado 1 vez |
|
| Volver arriba |
|
 |
seth Cmdr

Registrado: 16 Nov 2003Mensajes: 129
|
Publicado: Jue 06 Mar, 2008 4:57 pm Asunto: |
|
|
lo que quiero hacer es saber extraer el dato al que hay el la celda de un DBGrid al que se le da Click
Gracias |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Jue 06 Mar, 2008 5:04 pm Asunto: |
|
|
| Código: |
int ekis,igriega;
TPoint pos = StringGrid1->ScreenToClient(Mouse->CursorPos);
TGridCoord pos_grid = StringGrid1->MouseCoord(pos.x, pos.y);
POINT MousePos;
GetCursorPos(&MousePos);
ekis=pos_grid.X;
igriega=pos_grid.Y;
ShowMessage(StringGrid1->Cells[ekis][igriega]) ;
|
Aqui te sale un mensaje con el contenido de la celda donde hagas clic |
|
| Volver arriba |
|
 |
seth Cmdr

Registrado: 16 Nov 2003Mensajes: 129
|
Publicado: Jue 06 Mar, 2008 9:05 pm Asunto: |
|
|
Buenas Tardes
hola gracias por responder, lo que tu me dices funciona pero hay un problemita ya que depende el tamaño del Grid, por que si este tiene muchos registros me da la posicion solo de los que esten visibles, es decir que si el grid tiene 500 registros y por el tamaño de mismo solo me muestra 10 cuando me mueva sobre este, me da el mismo valor horizontal, lo que yo mas necesito es algo como
| Código: | void __fastcall TConForm::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect) |
donde me diga el valor de columna y la fila pero no para un StringGrid sino para un DBGrid
saludos
alguna idea mas .. |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Vie 07 Mar, 2008 11:51 am Asunto: |
|
|
Mira aqui, te aclaran algo:
https://cppbuilder.es/viewtopic.php?t=11351&highlight=datasource
https://cppbuilder.es/viewtopic.php?t=10280&highlight=datasource
https://cppbuilder.es/viewtopic.php?t=10068&highlight=datasource
Yo hice algo parecido.
Lo que hice fue meter en un popupmenu todos los valores de una columna:
| Código: |
String aux;
aux= Column->FieldName;//aqui guardo el nombre de la columna
ADOConnection1->Close();
ADOConnection1->ConnectionString =
"Provider=MSDASQL.1;"
"Persist Security Info=False;"
"Data Source=" + Form3->Edit1->Text + ";" //Nombre del origen de datos -- igual al nombre del DSN
"Extended Properties=DATABASE="+ Form3->Edit2->Text +";" //Nombre de tu base de datos contenida el server de MySQL
"OPTION=0;"
"PORT="+ Form3->Edit3->Text +";" //Puerto
"SERVER="+ Form3->Edit4->Text +";" //La dirección IP del server (ejemplo)
"UID="+ Form3->Edit5->Text +";" // Nombre de usuario
"PASSWORD="+ Form3->Edit6->Text +""; // Password
ADOConnection1->Open();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("Select DISTINCT " + aux + " from " + nombre tabla + " where "+ aux + " is not null;");// con este select sacamos todos los valores de la columna que no sean nulos y sin repetir
ADOQuery1->Active=true;
DBGrid1->DataSource->DataSet->First();// y ahora vamos recorriendo los resultados del SELECT desde el primero
PopupMenu1->Items->Clear();// limpiamos el popupmenu
while(!DBGrid1->DataSource->DataSet->Eof)
{
String menu = "PopupMenu1";
String nombre= DBGrid1->Columns->Items[0]->Field->AsString;
TMenuItem *Item = NewItem(nombre, NULL, false, true, OnClick, 0, menu);//creamos un nuevo item para el popupmenu
PopupMenu1->Items->Insert(0, Item);// añadimos ese nuevo item
DBGrid1->DataSource->DataSet->Next(); //pasamos al siguiente
}
POINT MousePos;
GetCursorPos(&MousePos);
PopupMenu2->Popup(MousePos.x, MousePos.y);
|
no se si te servira de ayuda. |
|
| Volver arriba |
|
 |
seth Cmdr

Registrado: 16 Nov 2003Mensajes: 129
|
Publicado: Vie 07 Mar, 2008 5:46 pm Asunto: |
|
|
Buenos Días
Gracias por todo si me funciono de maravilla, gracias
Seth |
|
| Volver arriba |
|
 |
|