Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi runtime-objekterstellung + event crasht immer :/ (https://www.delphipraxis.net/32493-runtime-objekterstellung-event-crasht-immer.html)

shuugo 24. Okt 2004 01:46


runtime-objekterstellung + event crasht immer :/
 
ich hoff mir kann jemand helfen :)

wenn ich zur laufzeit ein objekt erstelle (in dem fall ein TImage) und ihm ein OnClick event zuweisen will ..

Delphi-Quellcode:
            Image:=TImage.Create(Fighting);
            try
              with Image do
              begin
                Parent:=self;
                Name:= 'User' + inttostr(j) + 'NameBubble';
                Tag:=j;
                Visible := true;
                AutoSize := true;
                Transparent := true;
                OnClick:= ImageClick;
              end;
            except
              Image.Free;
            end;
und später mit der ImageClick prozedur ein anderes bild verschwinden lassen will (in dem fall das pic mit dem namen UserXNameBubble und dem selben tag als X wie das angeklickte pic)..

Delphi-Quellcode:
procedure TFighting.ImageClick(Sender: TObject);
begin
    with Sender as TImage do begin
         ChatWindow.Lines.Add(inttostr(Tag) + ' ' + Name);
         ChatWindow.Lines.Add('User' + inttostr(Tag) + 'NameBubble');
         (FindComponent('User' + inttostr(Tag) + 'NameBubble') as TImage).Visible := false;
    end;
end;
bekomm ich immer eine zugriffsverletzung.. theoretisch müsste es ja so gehen, da die komponente, die angeklickt wird auch eine dazugehörige namebubble hat und in derselben form steckt. werd noch verrückt, ich find einfach nich den fehler :wall:

MrSpock 24. Okt 2004 02:24

Re: runtime-objekterstellung + event crasht immer :/
 
Hallo shuugo,

herzlich willkommen im Delphi-PRAXIS Forum.

An welcher Stelle tritt denn genau der Fehler auf?

Hast du noch andere Komponenten, die ähnlich heißen, so dass eventuell die gefundenen Komponente nicht korrekt auf ein TImage gecastet werden kann? Und ist der Sender auch immer ein TImage oder rufst du die Procedure auch von einer anderen Stelle auf, so dass Sender eben kein TImage ist. Es macht vor solchen Castings immer Sinn mit dem is - Operator zu prüfen, ob die Komponente überhaupt ein TImage ist. Wenn übrigens beim Create etwas schief geht, merkst du es nicht, sondern Image ist nach Image.Free undefiniert und kann beim späteren Zugriff zu dem angesprochenen Fehler führen. Laufe einmal Schritt für Schritt durch diese Code Stücke und schau dir Image genau an.

Christian Seehase 24. Okt 2004 02:52

Re: runtime-objekterstellung + event crasht immer :/
 
Moin Shuugo,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Das Problem müsste hier zu suchen sein:

Delphi-Quellcode:
with Sender as TImage do begin
und zwar in Verbindung mit dem FindComponent.

So wie Du es geschrieben hast, wird nämlich das FindComponent des TImage, das angeklickt wurde aufgerufen, und müsste als Container des gesuchten Images dienen, damit es gefunden wird.

So müsste es gehen:

Code:
([b][color=red]Self.[/color][/b]FindComponent('User' + inttostr(Tag) + 'NameBubble') as TImage).Visible := false;

shuugo 24. Okt 2004 03:54

Re: runtime-objekterstellung + event crasht immer :/
 
ah thx nun gehts :) hatte es schonmal mit self. ausprobiert was aber leider nich ging.. hehe

jedenfalls nochmal danke :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz