PDA

Ver la Versión Completa : Dbgrid1, como saber asignarle la ubicacion del cursor?


asdbernardo
09-10-2011, 08:39:45
Buenas noches foristas, una pregunta .. estoy trabajndo en un formulario que añada, modifique, borre( logicamente con una variable boolean ) restaure ( la variable boolean pasa a false ) confirme y cancele .. es algo como esto:
----------------------------------------------------------
aca los mismos campos de la grilla pero en tdbedit


Añadir - Borrar - Restaurar - Modificar - Confirmar - Cancelar

----------------------------------------------------------
Grilla





----------------------------------------------------------

la cuestion esta creo que en cursor de la grilla.. ejemplo.. añado 3 registros y perfecto, borro los 3 ( logicamente pasando un campo que tengo oculto llamado borrado a true .. y se borran de la grilla ya que lo tengo filtradosql por los not borrado.. ahora el detalle es, que cuando estos 3 estan borrados, y quiero restaurar ejemplo.. borre 123 y quiero restaurar el 2 le doy confirmar y no lo hace, basta que en el boton confirmar coloque a un boton que hice para simular las movidas del dbnavigator << < > >> al darle el click Proximo es decir unitable1.next; y si borra pero el siguiente y quiero la posibilidad de que al marcar en la dbgrid1 el registro que yo desee sea cual fuere el registro lo haga, dejo el codigo con que hago borrar, restaurar, confirmar y cancelar, aparte del oncreate.

Si existen mejores formas de hacer este formulario escucho opiniones, ya que el filtrado con muchos registros me imagino que se pondra lenta .. ( aun no lo pruebo con registros exagerados), pero si con 20 registros al borrar logicamente que es ( cambiar el campo invisible a true, y el estado a desactivado se tarda a veces por el refresh que tiene la grilla ) -.- jeje bueno aki dejo el codigo.. a ver que se puede hacer..

saludos y gracias de antemano ..

pd: uso tdbedit + la grilla


procedure TfrmAgencia.btnborrarClick(Sender: TObject);
begin

if MessageDlg('¿Que quiere borrar este registro?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
desactivarbarra;
unitable1.Edit;
edtborrado.Field.AsString := 'true';
comboestado.Field.AsString := 'Desactivado';
unitable1.Post;
unitable1.FilterSQL:= 'not borrado';
activarbarra;
end;

escero;
esceroborrado;

end;


procedure TfrmAgencia.btnrestaurarClick(Sender: TObject);
begin
comprobarnull;
unitable1.FilterSQL:= 'borrado';
unitable1.Edit;
desactivarbarra;
btnconfirmarborrado.Enabled :=true;
btnconfirmarborrado.Visible := true;
btncancelarborrado.Enabled := true;
btncancelarborrado.Visible := true;
edtborrado.Visible := true;
end;


procedure TfrmAgencia.btncancelarborradoClick(Sender: TObject);
begin
escero;
unitable1.Cancel;
desactivarbarra;
btnañadir.Enabled := true;
btnmodificar.Enabled := true;
btnborrar.enabled :=true;
unitable1.FilterSQL:= 'not borrado';
btncancelar.Visible := true;
btnconfirmar.Visible :=true;

btncancelarborrado.Visible := false;
btnconfirmarborrado.Visible :=false;
dbgrid1.Refresh;
end;


procedure TfrmAgencia.btnconfirmarborradoClick(Sender: TObject);
begin
unitable1.Edit;
comboestado.Field.AsString := 'Activado';
unitable1.Post;
unitable1.FilterSQL:= 'not borrado';

desactivarbarra;
btnañadir.Enabled := true;
btnmodificar.Enabled := true;
btnborrar.enabled :=true;

activarbtnir;
btncancelar.Visible := true;
btnconfirmar.Visible :=true;
btncancelarborrado.Visible := false;
btnconfirmarborrado.Visible :=false;

end;


aca el create del formulario



procedure TfrmAgencia.FormCreate(Sender: TObject);
begin
esceroborrado;
escero;
try
if conexion = true then
begin
unitable1.Active := true;
unitable1.Last;

end
else // OJEAR NO TRABAJA! LA EXCEPCION SI LA CONEXION SE CAE
except
on E: Exception do
begin

unitable1.Active := false;
showmessage('Compruebe la conexion a internet, debido a que no se ha podido conectar con el servidor')
end;
end;
Query1.SQL.Clear;
Query1.SQL.Add('Select Max(numero_agencia) From Agencia');
Query1.Open;

unitable1.Edit;
edtfalsonroagencia.Text:= inttostr(Query1.Fields[0].AsInteger);


end;



Bueno eso creo que es todo.. agradezco su tiempo.. saludos!

pd1: el detalle sigo e insisto esta en el posicionamiento del dbgrid pero la verdad no se como hacer que al darle click y seleccionar el registro sepa que eso que estoy seleccionando debo cambiarle el campo borrado debe cambiarle el campo para que aparezca.. Saludos!

pd2: recien me he dado cuenta que al posicionarme en el registro desde la dbgrid1 y volver a darle el boton restaurar y darle al boton confirmar me hace la seleccion de ese registro y me lo restaura, pero si solamente le doy click a restaurar, no me deja editar el tdbcombobox que posee el true o el false del campo.. he ahi el dilema!

Casimiro Notevi
09-10-2011, 11:11:10
Hola asdbernardo, lo que no he entendido es lo que quieres hacer, qué finalidad tiene, qué quieres conseguir, qué estás haciendo, vamos, que no me he enterado de nada :confused:
Repites varias veces algo así como: "lógicamente", pero yo no le veo la lógica, de verdad.
Seguramente es que no te he entendido, será que todavía estoy algo dormido.

asdbernardo
09-10-2011, 17:39:57
Hola asdbernardo, lo que no he entendido es lo que quieres hacer, qué finalidad tiene, qué quieres conseguir, qué estás haciendo, vamos, que no me he enterado de nada :confused:
Repites varias veces algo así como: "lógicamente", pero yo no le veo la lógica, de verdad.
Seguramente es que no te he entendido, será que todavía estoy algo dormido.

jajaja. Saludos Casimiro Notevi.... bueno el caso de eso es que estoy haciendo un formulario como antes explique.. pero vuelvo a ver si me entienden, borro un registro ( pero logicamente es decir no borro de la base de datos, sino que con el campo (borrado) asi se llama en la base de datos de tipo boolean le cambio el valor para decirle Si esta borrado o no, y en la grilla muestro unicamente lo que no estan borrados.. ( en este caso los que son borrado = a false.. es decir muestra todo los registros que tengan false ( en campo borrado) ¿ que es lo que quiero? que al presionar boton restaurar y seleccionar X registro desde la grilla y presione confirmar proceda a borrarse ese registro... en este caso no lo hace, y creo que tiene que ver que no se posiciona con la grilla ya que en el codigo creo que esta lo necesario para que haga lo que digo, lee la pd2. eso lo descubri mientras probaba. cuando selecciono el registro a borrar y le doy boton restaurar y confirmar si lo borra! y la verdad no se como hacerlo jeje. te voy a dejar una pantalla a ver si se puede.
la primera pantalla es cuando inicia el programa no tengo registros pero en realidad si tengo 3 pero no se muestran por el filtrado
http://img97.imageshack.us/img97/1531/filtradootborrado.png

y esta pantalla es al darle restaurar que cambia el unitable1.filterSQL a 'borrado' entonces en eso se activan confirmar y cancelar, si selecciono el registro 2 desde la grilla que al darle confirmar proceda al codigo antes mencionado.
http://img820.imageshack.us/img820/1821/filtradoporborrado.png

saludos! casimiro jeje gracias por tomarte el tiempo de pasar por mi post

asdbernardo
09-10-2011, 20:31:56
Bueno gracias, casimiro .. ehm resolvi colocando la edtborrado( en este caso es donde esta la etiqueta estado: ) esa caja le coloque, el evento OnDropDown le puse unitable1.edit; y me resolviop lo de la posicion del registro que iba a restaurar.. en esa posicion. Saludos.

Casimiro Notevi
09-10-2011, 21:29:24
Me alegro :)