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