FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Tcombobox solo lectura
bueno antes ke nada si ya existe algo asi, por favor hagan referencia.
Escribi este componente basado en otros posts, es un combobox con la propiedad SoloLEctura que cuando su valor es TRUE, el color se cambia a clBtnFace y style a csSimple, ademas hereda los metodos keyUp y KeyDown para evitar escritura. Solo falta que con el clic derecho del raton no se pueda cortar o pegar, dejando la opcion de copiar disponible. Creo que tampoco me funciona Ctrl + C pero eso es mas facil. Una ayudadita por favor Código:
unit uCrusserComboboxEx; interface uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls,graphics; type TCrusserComboBoxEx = class(TComboBox) private { Private declarations } bReadOnly: Boolean; procedure fLectura(valor: Boolean); protected procedure KeyDown(var Key: Word; Shift: TShiftState);override; procedure KeyPress(var Key: Char);override; public property SoloLectura:boolean read bReadOnly write fLectura; published { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('Misc', [TCrusserComboBoxEx]); end; procedure TCrusserComboBoxEx.fLectura(Valor: Boolean); begin bReadOnly := Valor; if bReadOnly then begin Color := clBtnFace; Style := csSimple; end else begin Color := clWindow; Style := csDropDown; end; end; procedure TCrusserComboBoxEx.KeyDown(var Key: Word; Shift: TShiftState); begin inherited; if bReadOnly then if (key = VK_DELETE) or (Key = VK_UP) or (Key = VK_DOWN) then key := word(#0); // this allows the user to tab end; procedure TCrusserComboBoxEx.KeyPress(var Key: Char); begin inherited; if bReadOnly then key := #0; end; end. |
#2
|
||||
|
||||
¡Hola a todos!
Megaman_x: Me gustaría hacerte algunas sugerencias respecto al código que amablemente anexaste. Pero antes necesitaría comprender con claridad el objetivo de este componente y de su propiedad SoloLectura, ante la existencia de la tradicional propiedad ReadOnly que, según lo que aprecio, ya hace parte del trabajo que has codificado. Muchas gracias. Al González. |
#3
|
||||
|
||||
Cita:
// Saludos |
#4
|
||||
|
||||
¡Hola de nuevo!
Cita:
Mi más sincera disculpa para Megaman_x . Las sugerencias que tengo son que utilices un campo de nombre FSoloLectura en lugar de bReadOnly, y un método de nombre SetSoloLectura en lugar de FLectura, para los accesos de lectura y escritura del valor de la propiedad. Siento que con ello estaría un poco más claro el código. Espero esto sea de utilidad, seguimos en contacto. Al González . |
#5
|
||||
|
||||
Una sugerencia:
EditHandle es el identificador del control de edición del ComboBox. // Saludos |
#6
|
|||
|
|||
weeno mientras pruebo el codigo de roman, les dire ke fsoloLectura la F = Funcion y bSoloLectura la b = Booleano, asi es claro para mi , de otra manera si uso FSoloLectura en lugar de bReadOnly, a ke te refieres con la F al principio, pero pues cambiar de bREadOnly a bSoloLEctura suena bien.
Buen foro, y buenas respuestas, Gracias!!! |
#7
|
|||
|
|||
no pues la sugerencia de ROMAN no funciono no cambia el menu derecho del raton y no bloquea las teclas.
Gracias!!! |
#8
|
||||
|
||||
Cita:
// Saludos |
#9
|
|||
|
|||
oohh muy buena explicacion, lo ke pasa que vengo de otros lenguajes.
bueno por ahi me dicen crear mi propio menu desplegable o interceptar WM_PASTE y WM_CUT, pero por falta de tiempo, solo bloqueare el clic derecho por lo pronto. Gracias otra vez!!! |
#10
|
||||
|
||||
Cita:
// Saludos |
#11
|
||||
|
||||
Una solucion para no crear un componente nuevo
Para no tener q crear un componente nuevo simplemente podemos hacerlo asi...
{Saludos} |
|
|
|