Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2008
Angel Fernández Angel Fernández is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia - España
Posts: 141
Poder: 21
Angel Fernández Va por buen camino
Problema en la creación de componente derivado de TEdit.

Saludos al foro.

Quisiera haceros una consulta sobre la creación de un componente sencillo, para aprender (tened en cuenta que es mi primer componente).
Estoy tratando de crear un componente derivado de Tedit para que me muestre con un código de colores si existe el fichero que aparece en la propiedad Text del tedit.
Por ejemplo, si existe el fichero: C:\Archivos de Programa\Fichero.txt que el tedit tenga de fondo el color verde y si no existe el fichero, tenga de fondo el color rojo.

Para hacerlo un poco más completo, le he implementado tres modos:
Modo abrir fichero: Si el fichero existe, color verde. Si no existe, color rojo. Ej: C:\Archivos de Programa\Fichero.txt
Modo abrir directorio: Igual que el anterior pero con directorios en vez de ficheros: Si existe la ruta, verde; si no, rojo. Ej: C:\Archivos de Programa\
Modo salvar fichero: Si el fichero existe color amarillo. Si no existe color verde. Si no existe la ruta del fichero, color rojo.
Ej: C:\Archivos de Programa\Fichero.txt -> Si existe, color amarillo. Si no existe, color verde.
Si escribimos C:\Arcivo de Programa\Fichero.txt -> Color rojo porque la ruta no existe.

Esto le he conseguido con el siguiente código en la propiedad change del nuevo componente:

Código Delphi [-]
procedure TColorEdit.Change(Sender: TObject);
begin
  if FMode = MOpenFile then
    if fileexists(text) then
    begin
      Color := FGreenColor;
      FResultInt := 0;
    end
    else
    begin
      Color := FRedColor;
      FResultInt := -1;
    end;
  if FMode = MOpenDir then
    if directoryexists(text) then
    begin
      Color := FGreenColor;
      FResultInt := 0;
    end
    else
    begin
      Color := FRedColor;
      FResultInt := -1;
    end;
  if FMode = MSaveFile then
  begin
    if fileexists(text) then
    begin
      Color := FYellowColor;
      FResultInt := 1;
    end
    else
    begin
      Color := FGreenColor;
      FResultInt := 0;
    end;
    if not directoryexists(extractfilepath(text)) then
    begin
      Color := FRedColor;
      FResultInt := -1;
    end;
  end;
end;

ResultInt es una variable de tipo integer que devuelve 0 para el color verde, -1 para el rojo y 1 para el amarillo.

Y aquí viene el problema: Si a este componente le llamo ColorEdit1 y en el evento OnChange escribo algo como por ejemplo:

procedure ColorEdit1Change(Sender: TObject);
begin
btn1.enabled:=coloredit1.text<>'';
end;

En este caso, el código de colores deja de funcionar. Y esto ocurre con cualquier cosa que escriba en el evento onchange, es decir, deja de funcionar el cambio de color de fondo. Si no escribo nada, funciona correctamente.

He probado a poner inherited en la definición del nuevo método change, pero me da un error diciendo que no se permite poner ahí inherited.

Espero haberme explicado correctamente.

¿Alguna idea?

Gracias de antemano.

PD: Si alguien está interesado, puedo colgar el código completo. No lo he puesto para no aturdir demasiado.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Impedir edición en un componente derivado de TCustomComboBox MON___ OOP 2 21-11-2007 17:38:48
Enlazar un control derivado de TEdit a una grilla PabloV OOP 2 27-05-2007 10:47:57
Construir un componente derivado de DBLookupCombo JulioGO OOP 0 11-10-2004 17:28:30
Problema con Componente derivado de TPanel y Botones Critter Varios 4 05-09-2004 11:08:55
Componente derivado de DBEdit que active un hint con un dato específico HombreSigma OOP 4 15-07-2003 11:42:07


La franja horaria es GMT +2. Ahora son las 12:51:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi