Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2015
osmeg osmeg is offline
Miembro
NULL
 
Registrado: may 2014
Posts: 18
Poder: 0
osmeg Va por buen camino
Read access violation address al intentar cambiar color a TCategoryPanel personalizad

Que tal amigos de ClubDelphi,

Tengo un problema a la hora de cambiar el color a un componente, No sé si me puedan colaborar. Resulta que he creado una clase de tipo TCategoryPanel personalizada según lo que requiero. Lo que tiene de diferente esta clase con respecto al TCategoryPanel genérico es que tiene componentes internos en él: un TButton y un TComboBox. Un número indeterminado de estos TCategoryPanel personalizado es agregado a un TCategoryPanelGroup.

Lo que se desea principalmente es que cuando el usuario dé clic en algun TCategoryPanel se cambie el color de este para diferenciarlo de los demás y, a los demás dejarlos con un color estandar. Sin embargo aquí esta el problema: cuando se da clic a un componente TCategoryPanel se admite el cambio de color de aquel que se seleccionó, pero al intentar cambiar el color de los demas aparece la excepción Read access violation address. Esta excepción aparece como 15 veces y después sí efectua el cambio como se solicita.

A continuación se encuentra detallado el código del TCategoryPanel personalizado:

Código Delphi [-]

unit CategoryPanelRespuesta;

interface

uses

System.Classes, Vcl.Controls, Vcl.StdCtrls, ExtCtrls, Vcl.Graphics, Vcl.Forms, Vcl.ButtonGroup, SysUtils;

type
  TCategoryPanelRespuesta = class(TCategoryPanel)

    constructor Create(AOwner:TComponent);

    private
      comboBoxContAcad: TComboBox;
      btnVerRespuestas: TButton;
  end;

implementation

constructor TCategoryPanelRespuesta.Create(AOwner:TComponent);
begin
  inherited Create(AOwner);
  Self.BorderStyle:= bsSingle;
  Self.ParentBackground:= false;

  comboBoxContAcad:= TComboBox.Create(Self);
  comboBoxContAcad.Parent:= Self;
  comboBoxContAcad.Style:= csDropDownList;

  btnVerRespuestas:= TButton.Create(Self);
  btnVerRespuestas.Parent:= Self;
  btnVerRespuestas.Caption:= 'Ver respuestas';
end;


end.

Y aquí se encuentra el código del evento onClick del TCategoryPanel:

Código Delphi [-]
procedure TFrmGUIGestionRespuestas.btnCategPanelRtasClick(Sender: TObject);
var
i: Integer;
begin
  if Sender is TCategoryPanelRespuesta then
    begin
      for i := 0 to CategoryPanelGroupRespuestas.ControlCount-1 do
        begin
          if TCategoryPanelRespuesta(Sender).codigo = TCategoryPanelRespuesta(CategoryPanelGroupRespuestas.Controls[i]).codigo then
            begin
              TCategoryPanelRespuesta(Sender).Color:= clGradientInactiveCaption;
              TCategoryPanelRespuesta(Sender).comboBoxContAcad.Enabled:= true;
              TCategoryPanelRespuesta(Sender).btnVerRespuestas.Enabled:= true;
            end
            else
            begin
              TCategoryPanelRespuesta(CategoryPanelGroupRespuestas.Controls[i]).Color:= clMenu; //Aquí es donde ocurre el error.
              TCategoryPanelRespuesta(CategoryPanelGroupRespuestas.Controls[i]).comboBoxContAcad.Enabled:= false;
              TCategoryPanelRespuesta(CategoryPanelGroupRespuestas.Controls[i]).btnVerRespuestas.Enabled:= false;
            end;
        end;
    end;
end;

Saludos.
Responder Con Cita
Respuesta



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
Ventana de error: Access violation at address 00CA1C10. Read of address 00CA1C10 HERYCK Varios 3 06-10-2012 07:35:57
Access violation at address 7C92B1FA in module 'ntdll.dll'. Write of address 00000010 genyus00 Varios 1 12-02-2011 09:41:20
Access violation at address elarys Varios 6 22-11-2007 18:24:35
Access violation at address 00000000 Enan0 Varios 1 03-03-2005 16:16:33
Access violation at address ... Franklim API de Windows 2 03-12-2004 00:09:53


La franja horaria es GMT +2. Ahora son las 02:44:24.


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