[Lazarus-es] No cambiar de columna en dbgrid

Ismael L. Donis Garcia slibre en natio.co.cu
Vie Jul 14 20:35:13 CEST 2017


--
Ismael
Devuan User : http://distrowatch.com/table.php?distribution=devuan
----- Original Message ----- 
From: "Felix Perez via Lazarus-es" <lazarus-es en lists.lazarus-ide.org>
To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus-ide.org>
Cc: "Felix Perez" <felix.listadebian en gmail.com>
Sent: Friday, July 14, 2017 1:49 PM
Subject: Re: [Lazarus-es] No cambiar de columna en dbgrid


> 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?

Sería muy poco para los conocimientos que me ha brindado.

>
>>
>> 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
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus-ide.org
> https://lists.lazarus-ide.org/listinfo/lazarus-es
> 




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