Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2011-06

Conocer si está seleccionado el texto en una celda de un TDBGrid en el evento KeyDown

7 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Ismael L. Donis García

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?

2.- Es posible convertir a may�scula directamente el valor de una celda de un TDBGrid cuando se teclea en ella?

Saludos Cordiales a To2s
=========
|| ISMAEL ||
=========
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110620/3de3fb70/attachment.html>

Reply by email

christian Ortiz
to Ismael L. Donis García

cuando estas en el evento keydown del dbgrid significa que esta fila/celda seleccionada por lo que podras saber el valor haciendo :

1. TuDBgrid.Datasource.DataSet.FieldByName('NombreDeTuCampo').AsString
2. La verdad si es posible, debes trabajar en el evento Draw del DBgrid o en el PreCanvas

El 20/06/11, Ismael L. Donis Garc�a <ismael en citricos.co.cu> escribi�:

Show quoted text 13 lines
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? 2.- Es posible convertir a may�scula directamente el valor de una celda de un TDBGrid cuando se teclea en ella? Saludos Cordiales a To2s ========= || ISMAEL || =========
Christian

Reply by email

Ismael L. Donis García
to christian Ortiz

Gracias, revisar� o al menos intentar� como se hace el punto 2, ya que mi conocimiento en ese punto es 0. Y as� sin nada de c�digo para mi es como tirarle un tiro a un mosquito volando.

Respecto al punto 1 eso que me dice me devuelve el valor de esa celda y yo lo que quiero es saber si tengo el dato seleccionado o si estoy con el cursor dentro pero sin seleccionar el valor. No se si me hago entender, cuando est� seleccionado a mi se me pone con color azul, caso contrario se pone una rayita vertical, y lo que quiero saber si est� colorado de azul aunque sea una parte de valor o si tiene la rayita vertical.

Saludos Reiterados a To2s
=========
|| ISMAEL ||
=========

Earlier message 35 lines
----- Original Message ----- From: "christian Ortiz" <xortix en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Monday, June 20, 2011 10:02 AM Subject: Re: [Lazarus-es]Conocer si est� seleccionado el texto en una celda de un TDBGrid en el evento KeyDown cuando estas en el evento keydown del dbgrid significa que esta fila/celda seleccionada por lo que podras saber el valor haciendo : 1. TuDBgrid.Datasource.DataSet.FieldByName('NombreDeTuCampo').AsString 2. La verdad si es posible, debes trabajar en el evento Draw del DBgrid o en el PreCanvas El 20/06/11, Ismael L. Donis Garc�a <ismael en citricos.co.cu> escribi�: > 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? > > 2.- Es posible convertir a may�scula directamente el valor de una celda de > un TDBGrid cuando se teclea en ella? > > > Saludos Cordiales a To2s > ========= > || ISMAEL || > ========= -- Christian

Reply by email

Jesus Reyes
to Ismael L. Donis García: Tengo 2 dudas sobre los TDBGrid 1.- Es posible conocer en el evento KeyDown de un TDBGrid…

--- 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 visibleif 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.

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110620/4faa3620/attachment.html>

Reply by email

Ismael L. Donis García
to Jesus Reyes

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

Earlier message 87 lines
----- 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. ------------------------------------------------------------------------------

Reply by email

Jesus Reyes
to Ismael L. Donis García

--- 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: Re: [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 lists.lazarus.freepascal.org> Fecha: lunes, 20 de junio de 2011, 15:22

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:
�Simplemente checa el editor no sea nil antes de llamar SetMaxLength

if Editornil then begin
� TCustomEdit(Editor).CharCase := ecUppercase;
� TCustomEdit(Editor).MaxLength := x;
end;

Jesus Reyes A.

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20110620/1d4b52ec/attachment.html>

Reply by email

Ismael L. Donis García
to Jesus Reyes

Todav�a siguen los problemas con la propiedad MaxLength

Ahora me da el mismo error (SIGSEGV) en la l�nea 4247 del archivo control.ini cuando abro y cierro el formulario 2 veces, si lo abro una sola vez no da error al cerrar, pero si lo abro una segunda vez al cerrarlo por segunda vez me da el error en la l�nea es la que sigue:

inherited Destroy;

Verifiqu� que es la propiedad MaxLength Ya que coment� esa parte del c�digo y no da error al cerrar por segunda vez. Tengo lo siguiente:

procedure Tfcaptar.dbgSelectEditor(Sender: TObject; Column: TColumn;
  var Editor: TWinControl);
begin
  if (Editor  nil) then begin
   if (fconta.RegOpe = 'CP') then
     begin
       if (Column.Index = 0) then
        TCustomEdit(Editor).CharCase := ecUppercase
       else
         TCustomEdit(Editor).CharCase := ecNormal;
     end
   else if (fconta.RegOpe = 'CL') then
     begin
      if (Column.Index < 2) then
        TCustomEdit(Editor).MaxLength := 3
      else if (Column.Index < 4) then
       TCustomEdit(Editor).MaxLength := 7
      else if ((Column.Index > 5) and (Column.Index < 10)) then
       TCustomEdit(Editor).MaxLength := 35;
     end
   else if (fconta.RegOpe = 'CC') then begin
     if (Column.Index = 0) then
      TCustomEdit(Editor).MaxLength := 3
     else if (Column.Index = 1) then
      TCustomEdit(Editor).MaxLength := 35
     else
      TCustomEdit(Editor).MaxLength := 1;
   end;
  end;
end;

Saludos Reiterados
=========
|| ISMAEL ||
=========

Earlier message 49 lines
----- Original Message ----- From: Jesus Reyes To: Spanish version of Lazarus List Sent: Monday, June 20, 2011 5:30 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: Re: [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 lists.lazarus.freepascal.org> Fecha: lunes, 20 de junio de 2011, 15:22 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: Simplemente checa el editor no sea nil antes de llamar SetMaxLength if Editornil then begin TCustomEdit(Editor).CharCase := ecUppercase; TCustomEdit(Editor).MaxLength := x; end; Jesus Reyes A. ------------------------------------------------------------------------------

Reply by email