Einzelnen Beitrag anzeigen

SebastianZ

Registriert seit: 23. Jul 2009
89 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zugriffsverletzung bei Findcomponent

  Alt 13. Mai 2015, 16:31
Hallo ,

gleich mal vorab so ein Zugriff:
(Form1.Findcomponent('Mainpanel'+inttostr(selecteditem)) as TPanel).stylelookup:='pnl_notselectedItemStyle'; ist furchtbar unschön und fehleranfällig. Bennenst du dein Panel mal um oder selecteditem ist zu hoch, oder, oder, oder.... fliegt dir das ganze um die Ohren.

Sauberer wäre hier was in der Richtung:
Delphi-Quellcode:
procedure Foo;
var
  tmpPanel: TObject;
begin
  tmpPanel := Form1.Findcomponent('Mainpanel'+inttostr(selecteditem);
  if Assigned(tmpPanel) AND (tmpPanel IS TPanel) then
    TPanel(tmpPanel).stylelookup := 'pnl_notselectedItemStyle'
  else ShowMessage('Gesuchtes Panel nicht gefunden');
end;

Zu deinem Konkreten Problem:
Hab mal versucht deine Situation bei mir (XE8) nachzustellen:

Einfach ein Panel auf ein leeres Formular geworfen, folgenden Code versucht:
 (Form1.FindComponent('Panel1') As TPanel).StyleLookup := 'Test'; und es klappte.

Ev. kannst du mal ein komplettes Code - Schnipsel hochladen, damit ich deinen Fall genauer nachvollziehen kann.

LG

PS.: der Code ober bei ist ohne Test getippt => vertipper sind somit möglich
  Mit Zitat antworten Zitat