![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Mezclé tu nuevo hilo en el original y lo moví al foro OOP donde pienso que sería más correcto. En caso de duda pide a un moderador que cambie de foro el hilo en lugar de abrir uno nuevo.
// Saludos Última edición por roman fecha: 10-11-2005 a las 07:14:47. |
#2
|
||||
|
||||
En cuanto a tu duda, la parte que no entiendo es lo del tercer color. Ya el sistema usa un color distinto para la selección.
Pero bueno, indepedientemente de porqué quieres hacerlo así te comento que TFileListBox desciende de TCustomListBox. Esta componente está diseñada para un pintado personalizado mediante su propiedad Style y su evento OnDrawItem. De hecho, TFileListBox usa el estilo lbOwnerFixedDraw y el método DrawItem para poder dibujar los iconos de los archivos si estableces su propiedad ShowGlyphs. Ahora bien, el problema es que tanto Style como OnDrawItem son propiedades protegidas en TCustomListBox y TFileListBox no las publica. Entonces, la solución sería derivar una nueva clase de TFileListBox y redefinir su método DrawItem:
EDITO Oops! Que me ha salido una suerte de bandera española ![]() // Saludos Última edición por roman fecha: 10-11-2005 a las 07:17:36. |
#3
|
||||
|
||||
Je, je, éste también es un bonito pintado:
![]() // Saludos |
#4
|
|||
|
|||
... el que sabe, sabe!
Gracias por tomarte el tiempo para contestar, ciertamente se ve un tanto extraño , com tu dices , quizas no me habia explicado bien. corrigiendo, lo que quiero que se vea con colores alternados es el "fondo" del filelistbox por asi decirlo, la intecion es que no se vea el cuadro "plano" con solo el color que se le puede cambiar. O quizas hasta al guna imagen ( no se si se pueda?). en mi caso el color de seleccion de los items es azul. Entonces lo que requiero es: 1._ Tener la posibilidad de cambiar el color de seleccion ( de manera que pueda combinar con los colores de fondo). Seria parecido a lo que me mostraste supongo. 2.- al momento de selccionar un item ( es este caso seleccionar me refiero a que el usuario teclea <enter> ) el color de seleccion cambie por un instante a otro color. es decir para el usuario un efecto de que selecciono ese item. alguna sugerencia? -- ahora bien lo que me respondiste, como lo utilizo?, entiendo que hace , pero no, como lo utilizo ? (perdona mi ignorancia) se usa dentro del programa principal? por aparte o como? lo intente utilizar asi pero me mando varios errores ! gracias por tu pasciencia! -------------------------------- <En la forma tengo el filellistbox>
Última edición por vtdeleon fecha: 10-11-2005 a las 20:18:15. Razón: Etiqueta Delphi |
#5
|
||||
|
||||
Una forma práctica si solo lo usas en una simple forma es usar clases sobrepuestas... prueba con esta implementación:
__________________
"Lo mejor de no saber hacer nada es que se tiene mucho tiempo libre."
|
#6
|
|||
|
|||
Gracias, de esa forma ya puede modificar los colores.
Pero tengo la siguiente inquietud: .- Como puedo hacer para que en el momento en que yo pulso un boton o tecleo < Enter> la seleccion actual cambie de color digamos por 1 segundo y despues regrese al color previo. ( es para indicar que dicha opcion fue aceptada). ------------------------------ Ahora, creo que el codigo que puse estaba yo un poco confundido, lo que me estaban sugiriendo era algo como crear un componente, es asi? Estuve leyendo algo e inicie un nuevo "componente" , seleccione Tfilelistbox como "ancestor", luego "classname" puse un nombre como el TbicolorFilelistbox, seleccione una paleta, luego un "nombre" para la unit.pas, en "search path" deje lo que me aparece: $(BDS)\LIB;C:\ARCHIVOS DE PROGRAMA\BORLAND\BDS\3.0\IMPORTS;$(BDS)\LIB\INDY10;C:\Archivos de programa\Borland\BDS\3.0\RaveReports\Lib$(BDS)\LIB;$(BDS)\LIB\INDY10;C:\Archivos de programa\Borland\BDS\3.0\RaveReports\Lib;c:\archivos de programa\borland\bds\3.0\gifimaged7c;c:\documents and settings\usuario\mis documentos\borland studio projects\bpl y luego coloque lo que me habian sugerido (hablando de derivar un componente) . pero despues ya no supe que hacer. lo guardo? como lo guardo? donde lo guardo? como hago que aparezca en la paleta, etc? conocen alguna guia para hacer todo esto? |
#7
|
|||
|
|||
help !
siguiendo con esto
creo un componente como lo explico previamente, y lo guardo como colorFileListBox.pas que contiene lo siguiente: unit colorFileListBox; interface uses SysUtils, Classes; type TcolorFileListBox1 = class(TFileListBox) private { Private declarations } protected procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override; { Protected declarations } public { Public declarations } published { Published declarations } end; procedure Register; implementation procedure TBicolorFileListBox.DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); begin if odSelected in State then Canvas.Brush.Color := clGray // color para la selección else if Odd(Index) then Canvas.Brush.Color := clRed // color para ítems impares else Canvas.Brush.Color := clYellow; // color para ítems pares inherited; end; procedure Register; begin RegisterComponents('Samples', [TcolorFileListBox1]); end; end. ------------ segun me indicaron. luego creo un "new package" le digo "add " selecciono la unit.pas y posteriormente le digo instalar, pero me manda error en Tfilelistbox que no esta declarado. que estoy haciendo mal?, ando muy perdido? saludos |
![]() |
|
|
![]() |
|