AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi dynamische QRLabels auf QuickReport wie löschen?
Thema durchsuchen
Ansicht
Themen-Optionen

dynamische QRLabels auf QuickReport wie löschen?

Ein Thema von Tyler · begonnen am 13. Jan 2006 · letzter Beitrag vom 26. Jan 2006
Antwort Antwort
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#1

dynamische QRLabels auf QuickReport wie löschen?

  Alt 13. Jan 2006, 12:28
Salut

zur Laufzeit erstelle ich dynamisch über ein Array of TQRLabel ein paar Labels auf einem Quickreport und fülle diese.

Möchte ich nun diese Labels löschen und erneut füllen, erhalte ich eine Zugriffsverletzung, trotz dem ich das Array vorher per FOR-TO-Schleife gelöscht habe - vermutlich wird so zwar das Array geleert, die Komponenten auf dem QUickreport bleiben aber wohl erhalten.

Ich müsste also den Quickreport zurücksetzen können. Z.B. in dem ich ihn auf eine externe Form auslager, welche ich kurzzeitig schliesse und wieder neu erstelle? Das ist aber ncht praktikabel für mich - im Moment benutze ich je Quickreport ein Tabsheet. Mit eigenen Formen würde ich irgendwann die Übersicht verlieren.

HAt wer ne Idee?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: dynamische QRLabels auf QuickReport wie löschen?

  Alt 13. Jan 2006, 13:20
Hallo Tylor,

wenn du das Label löscht musst du es natürlich vor dem Füllen wieder mit create erstellen. Würde es denn nicht Sinn machen, einfach nur den Text zu ändern?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#3

Re: dynamische QRLabels auf QuickReport wie löschen?

  Alt 13. Jan 2006, 13:50
Nicht, wenn ich einfach die ganze Prozedure von vorne starte, weil der Anwender den Button halt nochmal drücken möchte

Es geht ja offensichtlich darum, dass sich die Labels nicht vom QReport löschen lassen, da dieser bereits gerendert wurde.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: dynamische QRLabels auf QuickReport wie löschen?

  Alt 13. Jan 2006, 18:56
Moin,

wenn du Komponenten dynamisch auf einem Quickreport erzeugst, geht das nur im Konstruktor.
Es ist auch nicht sinnvoll die erzeugten Komponenten selber wieder freizugeben.
Da der Report der Parent ist, sorgt dieser auch wieder für die Freigabe.

Du solltest die im Konstruktor erzeugten Komponenten in einem Unit-Globalen-Array zusätzlich ablegen, damit du in den anderen Routinen deines Reports Zugriff auf diese Komponenten hast. Um das Freigeben brauchst du dich nicht kümmern. Wenn dein Report jetzt neu erzeugt werden soll (ohne ihn neu zu createn) dann musst du dein Array durchgehen und die Komponenten zurücksetzen bzw. neu setzen (z.B. die Caption, Left, Top oder Height um des unsichtbar zu machen - Enabled klappt nämlich leider nicht - setzen)

Anders geht es nicht.

Da du die Anzahl der erzeugten Komponenten (nach dem Kontruktoraufruf) nicht mehr ändern kannst, kann das eventuell zu Problemen führen. Oder ist diese Anzahl immer gleich?
Wenn nein, solltest du den Report einfach zerstören und neu generieren lassen.
Wenn ja, siehe vorherigen Absatz.

MfG
Thorsten
  Mit Zitat antworten Zitat
crystalkind

Registriert seit: 12. Dez 2005
Ort: WR
4 Beiträge
 
#5

Re: dynamische QRLabels auf QuickReport wie löschen?

  Alt 26. Jan 2006, 12:22
hi,

wenn du nur die labels, die in einer bestehenden qr-instanz drin sind, wegnehmen willst, reicht es nicht, diese instanzen, die in einem separaten array abgelegt sind, dort zu zerstören. Es gibt ein qr-internes array Controls, welches dann die zerstörten instanzen referenziert => resultat: fehler bei zugriff. Um den qr zu leeren bzw. die controls zu löschen, entfernst du in einer schleife immer control[0] mit removecontrol, bis controlCount = 0 ist. so müsst es gehen

cu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz