[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