![]() |
prüfen ob panel existiert!
Hello,
mit folgenden code werden panels gezeichnet. Allerdings muss vorher geprüft werden ob schon existiert. Es funktioniert aber nicht und kommt zur exception wenn das Panel schon existiert.
Delphi-Quellcode:
Was ist falsch?
while not panelquer.Eof do begin
if not Assigned(panelen.pans.FindComponent(panelquer.fieldbyname('anzeige').AsString)as TPanel) then begin tpa:=TPanel.Create(Self); tpa.Parent:=pan0; tpa.Visible:=true; tpa.Left:=0; tpa.Top:=0; tpa.Height:=393; tpa.Width:=689; tpa.Name:=panelquer.fieldbyname('anzeige').AsString; tpa.Caption:=panelquer.FieldByName('anzeige').AsString; panelquer.Next; end; |
Re: prüfen ob panel existiert!
Hi,
ist panelen.pans wirklich der owner der Panels? Nur dieser kann dir über FindComponent eine Referenz liefern. Warum merkst du dir die erzeugten Panels nicht in einer Liste anstatt immer wieder mit FindComponent danach zu suchen? Gruß Hawkeye |
Re: prüfen ob panel existiert!
Gute Idee mit der Liste,
wenn ich wüßte wie das geht?! |
Re: prüfen ob panel existiert!
Hallo,
irgendie ist dein Code komisch
Delphi-Quellcode:
panelquer ist also ein DataSet (?).
while not panelquer.Eof do
Delphi-Quellcode:
Du gehst durch panelquer und legst Panel mit immer gleicher Position an, wozu ?
while not panelquer.Eof do
begin if not Assigned(panelen.pans.FindComponent() then begin ... tpa.Name:=panelquer.fieldbyname('anzeige').AsString; tpa.Caption:=panelquer.FieldByName('anzeige').AsString; end; panelquer.Next; end;
Delphi-Quellcode:
Self ist also der Owner.
if not Assigned(panelen.pans.FindComponent(panelquer.fieldbyname('anzeige').AsString)as TPanel) then begin
tpa:=TPanel.Create(Self); Self enthält das Panel also in seiner FindComponent-Liste.
Delphi-Quellcode:
Als Optimierung würde ich panelquer.fieldbyname('anzeige').AsString
if not Assigned(Self.FindComponent(panelquer.fieldbyname('anzeige').AsString)as TPanel) then
in eine lokale Variable packen. Das amcht auch das Debuggen einfacher. Heiko |
Re: prüfen ob panel existiert!
die panels liegen übereinander und werden mit tabcontrol
nach vorn geholt, wenn nötig aber das ist doch jetzt nicht von wichtigkeit. wie macht man das mit der Liste? über TObjectlist finde ich nur wirres Zeug |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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 by Thomas Breitkreuz