Ver Mensaje Individual
  #5  
Antiguo 17-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.439
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En lugar del.:

Código Delphi [-]
if sender.ClassName = 'TTimer' then
b:= TTimer(sender).Name;
if sender.ClassName = 'TStringGrid' then
b:= TStringGrid(sender).Name;
if sender.ClassName = 'TCheckListBox' then
b:= TCheckListBox(sender).Name;
if sender.ClassName = 'TSpeedButton' then
b:= TSpeedButton(sender).Name;
...

Yo colocaría algo así; Te evitas tener que hacer todos los IF y aprovechas que todos los componentes derivan de TComponente que ya tienes Name y ClassName:

Código Delphi [-]

 ** Antes deberías comprobar si Sender está asignado, no sea que llegue a nil...

  if (Sender is TComponent) then begin
    _name := TComponent(Sender).Name;
    _className := TComponent(Sender).ClassName;
   end
  else begin
    // No es un componente
    ....
  end;

Por lo demás eso debvería devolver el nombre del componente que genera la excepción correctamente.

De todas forma con el código que tú tienes yo inicializaría la "b" con otro valor para ver si realmente no te lo está almacenando y usuaría ELSEIF:

Código Delphi [-]
b:='';    
if sender.ClassName = 'TTimer' then begin
  b:= TTimer(sender).Name;
end
else if sender.ClassName = 'TStringGrid' then begin
  b:= TStringGrid(sender).Name;
end
else if sender.ClassName = 'TCheckListBox' then begin
  b:= TCheckListBox(sender).Name;
end
else if sender.ClassName = 'TSpeedButton' then begin
  b:= TSpeedButton(sender).Name;[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif]
end
else begin
  b := 'ninguno de los anteriores'.
end;[/font]

Por que puede ser que esté pasando por el IF, pero no sea ninguno de los que tienes codificados. La otra opción (que ya te he comentado) es que cambies toda esa estructura por la comentada arriba, para que funcione con cualquier Sender que derive de TComponent.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita