[Lazarus-es] Conocer si está seleccionado el texto en una celda de un TDBGrid en el evento KeyDown

Ismael L. Donis García ismael en citricos.co.cu
Lun Jun 20 22:22:20 CEST 2011


Detallo a continuación:

TCustomEdit(Editor).CharCase := ecUppercase;  // Perfecto

TCustomEdit(Editor).MaxLength  // da error si presiona la tecla escape 2 veces después de haber entrado en edición. El error lo da en la línea:

TWSCustomEditClass(WidgetSetClass).SetMaxLength(Self, Value); // (línea 338)

del procedimiento:

procedure TCustomEdit.SetMaxLength(Value : Integer);

Si logro solventar este error no necesito validar el primer punto, caso contrario si estoy obligado a validar si está seleccionado o no.

El error que da es el típico error SIGSEGV

Voy a tratar de investigar las causas del error, si encuentras algo de ello, me sería de gran utilidad.

1 Millón de Gracias por lo expuesto, ha contribuido a enriquecer mis pobres conocimientos.
=========
|| ISMAEL ||
=========
  ----- Original Message ----- 
  From: Jesus Reyes 
  To: Spanish version of Lazarus List 
  Sent: Monday, June 20, 2011 2:38 PM
  Subject: Re: [Lazarus-es] Conocer si está seleccionado el texto en una celda de un TDBGrid en el evento KeyDown




        --- El lun 20-jun-11, Ismael L. Donis García <ismael en citricos.co.cu> escribió:


          De: Ismael L. Donis García <ismael en citricos.co.cu>
          Asunto: [Lazarus-es] Conocer si está seleccionado el texto en una celda de un TDBGrid en el evento KeyDown
          A: "Spanish version of Lazarus List" <lazarus-es en lazarus.freepascal.org>
          Fecha: lunes, 20 de junio de 2011, 8:48


          Tengo 2 dudas sobre los TDBGrid

          1.- Es posible conocer en el evento KeyDown de un TDBGrid si está o no seleccionado el valor de la celda?




        algo asi como:

        var

          editor: TWincontrol;

        // Primero tendríamos que saber si el editor esta visible
        if grid.EditorMode then begin

          // luego y suponiendo que se trata del editor por defecto

          editor := grid.EditorByStyle(cbsAuto);

          // despues de alguna verificacion de rigor ...

          if (editor is TCustomEdit)  then begin

            if TCustomEdit(Editor).SelLength>0 then begin
               // si, algo esta seleccionado...

            end; 

         end;



        // otro metodo de obtener el editor con algo de trampa

        type

           TGridAccess=(TCustomGrid)

           end;

           Editor := TGridAccess(Grid).InplaceEditor;


        (ambos casos, sin probar)
          2.- Es posible convertir a mayúscula directamente el valor de una celda de un TDBGrid cuando se teclea en ella?


        El TEdit que se usa para editar tiene esa función, solo hay que activarla, usando el evento OnSelectEditor, el cual ya tiene el Editor como argumento, se pueden hacer varias cosas, por ejemplo, hacer que todos los campos sean introducidos en mayusculas y en forma adicional, limitar la segunda columna a 13 caracteres....


        TCustomEdit(Editor).CharCase := ecUppercase;
        TCustomEdit(Editor).MaxLength := 0;
        if Column.Index=1 then
        TCustomEdit(Editor).MaxLength := 13;


        (probado y confirmado, suponiendo que "Editor" es el editor por defecto del dbgrid)


        Jesus Reyes A.

       



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


  _______________________________________________
  Lazarus-es mailing list
  Lazarus-es en lists.lazarus.freepascal.org
  http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20110620/98166b07/attachment-0002.html>


More information about the Lazarus-es mailing list