![]() |
PageControl , Ereignis wenn neue TabSheet angeklickt wurde
Bei folgendem Code tritt eine AV (Access Violation) auf. :wall:
Delphi-Quellcode:
Wie würdet Ihr das anstellen ?
procedure TMainForm.PageControl1Chang(ing/e)(Sender: TObject;
var AllowChange: Boolean); begin // Funktion zum Löschen der ListView; LoeschenLV; end; edit: Das Ereignis soll für alle TabSheets sein! |
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
Ich würds im OnChange machen. Und was macht eigentlich deine LoeschenLV? Vielleicht löst diese die AV aus?
|
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
ja, das ist ja das problem! :(
sofern die prozedur LoeschenLV; im OnChange - Event steht, wird eine AV ausgelöst. :wall: Edit: Die Prozedur löscht den Inhalt und alle Spalten. |
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
Ohne code wirst du hier nicht viel erreichen...poste mal die Prozedur LoeschenLV, dann kann ich vielleicht auch sagen, wo das Problem ist.
|
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
Delphi-Quellcode:
danke!
procedure TMainForm.ResetLV;
begin if (LVExts.ViewStyle = vsReport) then LVExts.Columns.Clear; if (LVExts.LargeImages.Count > 0) then LVExts.LargeImages.Clear; if (LVExts.SmallImages.Count > 0) then LVExts.SmallImages.Clear; LVExts.Clear; end; |
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
Hmm, sieht ganz ok aus, wobei der Name da was vermuten lässt...handelt es sich sicher um die richtige Prozedur? Versuche mal, einzeln die if-Blöcke zu aktivieren, und den Rest auszukommentieren. Vielleicht funktioniert das..
|
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
Hallo,
mich wundert etwas, dass Du die Images löscht? Vielleicht könnte statt
Delphi-Quellcode:
folgendes helfen:
...
LVExts.Clear ...
Delphi-Quellcode:
if (LVExts.Items.Count>0) then LVExts.Items.Clear;
|
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
ok, danke. das war eine gute idee !
hier dran liegt's:
Delphi-Quellcode:
aber was genau ist falsch? :gruebel:
if (LVExts.LargeImages.Count > 0) then
LVExts.LargeImages.Clear; if (LVExts.SmallImages.Count > 0) then LVExts.SmallImages.Clear; edit: Ok, Gollum war schneller ! Danke Euch beiden! :) edit2: Ich habe Gollum's Variante genommen. Problem gelöst |
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
Hallo,
da ich nicht genau weiss, wie Du die Liste füllst, kann ich nur raten: Du weist Deinen ListItems über ImageIndex einen Index der ImageList zu. Wenn Du nun die Einträge der Imagelist vor den Einträgen der Listview löscht, ist die Referenz nicht mehr gegeben. U.U. könnte zuerst ein löschen der Listvieweinträge und daran anschließend ein löschen der Imagelisteinträge klappen. |
Re: PageControl , Ereignis wenn neue TabSheet angeklickt wur
kann es sein, das mit ListView.Clear; auch gleich die imagelists mitgelöscht werden?
edit: nein, das kann nicht sein. hab nach dem löschen der Elemente die Index der Images aus der ImageList im memo ausgegeben. :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 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