| Autor |
Nachricht |
Dennys
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 11.01.12 16:16
Komponente: Pagecontrol Verwendete VCL: VCL Win32
Hallo zusammen,
ich bin neu hier und bin mir sicher, ihr habt schon oft das Thema besprochen.
Ich hab auch schon etliches gelesen und ausprobiert, komme aber einfach nicht weiter. Daher meine Bitte an euch mir zu helfen.
Ich möchte auf einem pageControl eine dynamische Anzahl sheets erstellen. Auf jedes Sheet kommt eine Tabelle die mit einer SQL Abfrage verbunden ist.
Soweit funktioniert das ja ganz vernünftig.
Allerdings und da komm ich nicht weiter, soll beim FormClose alles wieder freigegeben werden
Wenn ich mich auf den sheets aber bewege, also activapageindex <> 0 ist, bekomme ich eine Fehlermeldung und kann es mir einfach nicht erklären
Ich hoffe Ihr könnt mir helfen
Gruß aus Münster
Dennys
Moderiert von Gausi: Delphi-Tags hinzugefügt
|
| |
|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
Nersgatt
       
Beiträge: 929
Erhaltene Danke: 70
Delphi 2010 Enterprise
|
Verfasst: Mi 11.01.12 16:36
Hallo und Willkommen in der Entwicklerecke.
Du solltest Deinen Code in Delphi-Tags packen, dann wird das auch im Forum lesbar: [delphi][/delphi]
Du musst das beim Schließen eigentlich gar nicht freigeben, denn beim Erstellen hast Du ja den Owner angegeben. Dadurch wird es automatisch freigegeben, wenn der Owner freigegeben wird.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
| |
|
|
Dennys 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 11.01.12 16:45
Hallo Jens
danke für die schnelle Antwort. Und sorry das ich die Formatierung nicht gemacht hab. Ich stehen aber noch unter Welpenschutz
Aber wenn ich keine Freigabe mache bekomme ich auch eine Zugriffsverletzung und dem Hinweis einer ungültigen Zeigeroperation.
Ich weiss aber nicht wo der Fehler liegen kann...
Gruß
Dennys
|
| |
|
|
Nersgatt
       
Beiträge: 929
Erhaltene Danke: 70
Delphi 2010 Enterprise
|
Verfasst: Mi 11.01.12 16:49
Dann zeig mal etwas mehr Code und den genauen Wortlaut der Fehlermeldung und an welcher Stelle sie auftritt.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
| |
|
|
Dennys 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 11.01.12 17:00
mehr code gibt es nicht.
Ich hab es extra in ein Testprojekt gepackt weil ich erst dachte ich hätte woanders noch einen Zeiger gesetzt und der Fehler gar nicht mit dieser Routine zusammenhängt...
Auftreten tut der Fehler hier:
Fehlermeldung:
Exeption EAccessViolation in Modul... bei 0004653A
Zugriffsverletzung bei Adresse 0044653A in Modul...
Lesen von Adresse 00000020
p.s. ich hoffe ich hab den Code jetzt richtig formatiert... 
|
| |
|
|
zuma
      
Beiträge: 630
Erhaltene Danke: 11
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 11.01.12 17:52
PageControl.PageCount gibt dir die Anzahl der Tabsheets in der Pagecontrol
ich würds so machen:
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
| |
|
|
Dennys 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 11.01.12 18:01
So hab ich es auch schon probiert --> gleicher Fehler
Was ich so komisch finde ist die Tatsache, dass es funktioniert wenn ich nicht auf einen anderen Reiter geklickt habe.
Wechsel ich aber auf einen Reiter und beende dann (rufe also dann die Procedure auf) kommt der Fehler.
Hab auch schon versucht das pagecontrol auf den ersten Reiter zu setzen bevor ich die free Procedure aufrufe aber bringt keine Besserung....
Das kann doch nicht so schwer sein???? 
|
| |
|
|
jaenicke
      
Beiträge: 15840
Erhaltene Danke: 741
XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
|
Verfasst: Mi 11.01.12 18:26
zuma hat folgendes geschrieben : | | ich würds so machen: |
Ich nicht. Aus einem Array Elemente löschen (ja, das passiert, wenn man ein TabSheet freigibt, implizit) bewirkt eine Indexverschiebung. Deshalb geht das nur rückwärts mit downto in der for-Schleife. Sprich:
|
| |
|
|
Dennys 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 11.01.12 18:34
gleicher Fehler...
würde es Sinn machen wenn das array von hinten gelöscht wird nicht auf die erste Seite sondern auf die letzte Seite zu gehen bevor man es frei gibt? Moderiert von Narses: Beiträge zusammengefasstwar das PageControlX. ein Tippfehler?
|
| |
|
|
jaenicke
      
Beiträge: 15840
Erhaltene Danke: 741
XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
|
Verfasst: Mi 11.01.12 19:02
Dennys hat folgendes geschrieben : | | war das PageControlX. ein Tippfehler? |
Ich schreibe meistens einfach nen X hin, damit da keine 1 dahinter steht, das hat nix zu sagen.
Hier funktioniert das mit Delphi XE jedenfalls problemlos so. Welche Delphiversion hast du denn?
Ich vermute aber, dass der Fehler bei einer der verwendeten Komponenten liegt. Wenn ich da schon sowas wie Skins lese...
|
| |
|
|
Dennys 
Hält's aus hier
Beiträge: 11
|
Verfasst: Mi 11.01.12 19:25
Hi zuma
das ist ja krass
du hast Recht...
es sind die verwendeten Komponenten....und ich eier seit drei Tagen mit dem Sch... rum
Vielen Dank euch allen!
Gruß
Dennys Moderiert von Narses: Beiträge zusammengefasstLeute
ich bin so blöd...
manchmal sieht man den Wald nicht...
dank des Hinweises von Zuma klappt es dann auch mit meinen externen Komponenten...
ttabsheet ist doch abgeleitet vom pagecontrol
und wenn das eine Komponente ist, ich aber das sheet von der Standardkomponente deklariere kann das ja nicht funktionieren.....
Liegt also nicht an der Komponente sondern an meine Dummheit
Danke noch einmal an euch dreien!!!

|
| |
|
|
zuma
      
Beiträge: 630
Erhaltene Danke: 11
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Do 12.01.12 08:47
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
| |
|
|