![]() |
Delphi-Version: 10.2 Tokyo
Das geheimnissvolle Controll
Hi zusammen
In einer Scrollbox möchte ich mehrere Instanzen eines TCustumControl-Nachfahhren platzieren. Dieses versuchen ich in einer Testanwendung so:
Delphi-Quellcode:
Der Aufruf:
procedure TRSPdfFrame.PdfViewCreate;
var i: integer; begin for i := 0 to 4 do begin FPDFView := TPdfView.Create(Self); FPdfView.Parent := Scrollbox1; FPdfView.Name := 'PdfView'+intToStr(i); FPdfView.Color := clyellow; FPdfView.Height := 120; FPdfView.Top := i * (FPdfView.Height + 8); FPdfView.Width := Scrollbox1.ClientWidth - 40; FPdfView.Left := (ScrollBox1.ClientWidth - FPdfView.Width) div 2; ScrollBox1.VertScrollBar.Range := ScrollBox1.VertScrollBar.Range + FPdfView.Height; end; end;
Delphi-Quellcode:
Der Inhalt von FReportlist wird bei Programmende in eine Datei geschrieben. Deren Inhalt:
procedure TRSPdfFrame.ScrollBox1Resize(Sender: TObject);
begin PdfViewCreate; FReportlist.Add('ScrollBox1Resiz') end;
Delphi-Quellcode:
Meine Fehlermeldung:
13.11.2018 17:32:28
---------------- ScrollBox1Resiz Zitat:
Was ist da falsch? Gruss Delbor |
AW: Das geheimnissvolle Controll
Führe doch bitte mal diese Änderungen aus
Delphi-Quellcode:
und zeige uns dann den Inhalt der Datei
procedure TRSPdfFrame.ScrollBox1Resize(Sender: TObject);
begin FReportlist.Add('ScrollBox1Resiz ENTER'); PdfViewCreate; FReportlist.Add('ScrollBox1Resiz EXIT'); end; |
AW: Das geheimnissvolle Controll
Naja, du läßt bei jedem Resize TRSPdfFrame.PdfViewCreate durchlaufen. Und erzeugst nur. Demnach ist beim zweiten Resize ein Control mit dem Namen auch bereits vorhanden.
Wenn's anders nicht geht, sollte du die bereits erzeugten Controls vorher entfernen. Besser wäre es natürlich im Resize auch die Controls in ihrer Größe zu ändern, als sie zu löschen und neu zu erzeugen. |
AW: Das geheimnissvolle Controll
Man muss übrigens beim dynamischen Erzeugen von Controls keinen Namen zuweisen.
|
AW: Das geheimnissvolle Controll
Zitat:
Delphi-Quellcode:
nur einmal ausgeführt wird.
TRSPdfFrame.ScrollBox1Resize
|
AW: Das geheimnissvolle Controll
Hi Schokohase
Danke für deine schnelle Antwort! Tja, das ist doch schon sehr speziell - wenigstens für mich im Moment: Zitat:
Delphi-Quellcode:
Dass der Frame vor der Mainform erzeugt wird, ist mir schon klar, aber dass sich ein Ereignis widerholt, noch bevor es zu Ende ist...
procedure TRSPdfFrame.ScrollBox1Resize(Sender: TObject);
begin // FReportlist.Add('ScrollBox1Resiz') FReportlist.Add('ScrollBox1Resiz ENTER'); PdfViewCreate; FReportlist.Add('ScrollBox1Resiz EXIT'); end; Oder was verstehe ich jetzt falsch? Okay, ich hab vor dem Anzeige der Vorschau die weiteren Beiträge gesehen und kann da nur mal bestätigen: Ja, ich weiss, der Anwender will die Form eventuell mehrmals resizen - ich muss das also kontrollieren. Zur Zeit läüft der Test, wie ich die Dinger korrekt untereinander bringe. Das Stimmt insofern noch nicht, als dass die Form zu klein ist, um den gesammten Clientbereich der Scrollbox anzuzeigen. Mit dem Feler im Fokus hat mich die Sache mit dem Resize doch auf dem falschen Fuss erwischt. Gruss Delbor |
AW: Das geheimnissvolle Controll
Das Erstellen der Controls gehört nicht ins Resize. Resize ist für Größenänderungen (wie der Name schon sagt).
Die Controls werden einmalig erstellt (z. B. im FormCreate oder einer daraus aufgerufenen Methode). |
AW: Das geheimnissvolle Controll
Zitat:
|
AW: Das geheimnissvolle Controll
Hi zusammen
Zitat:
Zitat:
Wie ist das denn mit dem Resize? Da ist mal der Basisframe - aber braucht der ein Resize? Der wird ja nie angezeigt. Auf der Form habe ich gerade mal eine Frameinstanz - wäre nach meinem bisherigen Stand des Irrtums gerade mal ein Resize-Ereignis. Anders sähe es wohl aus, wenn das Resize des Frames nach jedem Resize auf der Containerform aufgerufen würde - grundsätzlich könnte nach jedem Resize eines andern Elementes eine Anpssung nötig sein. Meine Frage hier wäre also: lösen Resize-Events anderer Elemente ein erneutes Resize aus? Zitat:
Gruss Delbor |
AW: Das geheimnissvolle Controll
Hi Delphi.Narium
Zitat:
Ein Create oder sonst was(Activate, Show) kennt der Frame auch nicht. Wann also sollen diese Controls erzeugt werden? Für den Produktiveinsatz stellt sich dieses Problem allerdings wohl nicht - hier ist dies Aufgabe zum Beispiel eines Eventhandlers, der auf das Öffnen einer Datei reagiert... Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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