[Lazarus-es] No cambiar de columna en dbgrid

Felix Perez felix.listadebian en gmail.com
Vie Jul 14 19:49:32 CEST 2017


El 14 de julio de 2017, 08:47, Ismael L. Donis Garcia via Lazarus-es
<lazarus-es en lists.lazarus-ide.org> escribió:
> La verdad Jesús que yo no me explico de donde tu sacas las soluciones.
>
> Funciona Perfectamente. Que decirte.....

¿Gracias?

>
> Saludos Cordiales
> --
>
>
>> Hola Ismael, seguramente habrán un par de cosas que podrías hacer para
>> lograr lo que quieres de una forma mas directa, pero me parece
>> apropiado hacerte una sugerencia para esos casos como en que aquí nos
>> ocupa. En este punto te encuentras procesando un evento OnEditingDone,
>> sin un análisis muy detallado es difícil saber que ocurrió antes y que
>> ocurrirá después, solo sabemos que en algún punto el grid seleccionará
>> el campo siguiente. Entonces estamos en la situación en la que se
>> desea alterar el comportamiento pero no sabemos en medio de cuantas
>> capas de procesamiento estamos. En estos casos sería muy útil
>> simplemente dejar que las cosas sucedan y al primer momento disponible
>> tomar acción. Para ello hay dos formas, algunos usan Timers pero en
>> realidad no soy fan de esa técnica y por eso te sugiero una segunda
>> alternativa. Lazarus cuenta con un método de postergar una acción de
>> tal manera que se efectué cuando haya terminado de hacer lo que sea
>> que esté haciendo, ya sea una interacción con el usuario mediante el
>> ratón o el teclado, o alguna otra cosa. Para ello lo que se tiene que
>> hacer es usar el procedimiento Application.QueueAsyncCall, ésta toma
>> dos parámetros: un método y un dato cuyo valor puede ser a nuestra
>> conveniencia o 0. El método es el procedimiento que la aplicación
>> llamará justo cuando no tenga otra cosa mas que hacer. Se usa de la
>> siguiente forma:
>>
>> // agregar RegresarAColumnaCantidad en la declaración de  Tfvsal
>> ....
>>   procedure RegresarAColumnaCantidad(Data: PtrInt);
>> ....
>>
>> // poner en la fila de espera de métodos a procesar ....
>> ....
>> Application.MessageBox('La cantidad a dar salida no puede ser mayor a
>> la existencia.' , pchar(Self.Caption), MB_ICONINFORMATION);
>> Application.QueueAsyncCall(@RegresarAColumnaCantidad,  0);
>> ....
>>
>> // luego o antes como quieras, la implementación de
>> RegresarColumnaACantidad
>> procedute Tfvsal.RegresarAColumnaCantidad(Data: PtrInt);
>> begin
>>  dbg.SelectedIndex := NUMERODECOLUMNA;
>> end;
>>
>> y eso teóricamente :), debería funcionar.
>>
>> Como un tip extra, si colocas el cursor el algún punto de la palabra
>> @RegresarAColumnaCantidad y presionas SHIFT+CTRL+C, Lazarus no solo
>> declarará el método por ti, sino también introducirá una
>> implementación vacía lista para tu línea "dbg.SelectedIndex :=
>> NUMERODECOLUMNA;"
>>
>> Saludos.
>>
>> Jesus Reyes A.
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lists.lazarus-ide.org
>> https://lists.lazarus-ide.org/listinfo/lazarus-es
>>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus-ide.org
> https://lists.lazarus-ide.org/listinfo/lazarus-es



-- 
usuario linux  #274354
normas de la lista:  http://wiki.debian.org/es/NormasLista
como hacer preguntas inteligentes:
http://www.sindominio.net/ayuda/preguntas-inteligentes.html


Más información sobre la lista de distribución Lazarus-es