AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Aufbau von Forms verstecken

Ein Thema von Int3g3r · begonnen am 8. Mär 2019 · letzter Beitrag vom 9. Mär 2019
Antwort Antwort
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#1

Aufbau von Forms verstecken

  Alt 8. Mär 2019, 09:40
Guten Tag,

Wie ihr bereits sicher wisst, erstelle ich in einer Scrollbox mehrere Forms.
Dies dauert 2-5 Sekunden. Mein Ziel ist es nun den Aufbau der Forms zu verstecken.
Momentan sieht man wie die Forms aufgebaut werden und dies sieht nicht gerade schön aus.

Am besten wäre es wenn ich die Forms, die erstellt werden, unsichtbar erstellen(.create) könnte.
Ist dies möglich ? Wenn ja wie ?

Mein zweiter Ansatz wäre die Scrollbox auf .visible := false zu setzen.

Feundliche Grüsse
Int3g3r

Geändert von Int3g3r ( 8. Mär 2019 um 09:56 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.173 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Aufbau von Forms verstecken

  Alt 8. Mär 2019, 10:21
Statt die Wirkung zu bekämpfen könnte man auch an die Ursache gehen. Warum sollte es mehrere Sekunden dauern? Nimm einen Profiler, beim RAD Studio ist ja eine abgespeckte Version von AqTime schon dabei. Da kann er dir anzeigen welche Prozeduren die Zeit fressen.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.025 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Aufbau von Forms verstecken

  Alt 8. Mär 2019, 13:17
Forms erst bauen und dann auf die Scrollbox setzen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
703 Beiträge
 
Delphi 12 Athens
 
#4

AW: Aufbau von Forms verstecken

  Alt 9. Mär 2019, 12:31
Guten Tag,

Wie ihr bereits sicher wisst, erstelle ich in einer Scrollbox mehrere Forms.
Dies dauert 2-5 Sekunden. Mein Ziel ist es nun den Aufbau der Forms zu verstecken.
Momentan sieht man wie die Forms aufgebaut werden und dies sieht nicht gerade schön aus.

Am besten wäre es wenn ich die Forms, die erstellt werden, unsichtbar erstellen(.create) könnte.
Ist dies möglich ? Wenn ja wie ?

Mein zweiter Ansatz wäre die Scrollbox auf .visible := false zu setzen.

Feundliche Grüsse
Int3g3r
Für ein Form ist die Visible-Property false by default, das Form wird erst angezeigt, wenn man Show oder showmodal aufruft, oder Visible auf true setzt (Ausnahme: MDI Childforms). Also erzeuge einfach erstmal alle Forms und speichere die Referenzen z. B. in einer TList (oder TList<TForm>). Erst wenn Du alle erzeugt hast gehst Du über die Liste und setzt für jedes Form den Parent auf die Scrollbox und Top und Left wie gewünscht. Wenn Du damit durch bist gehst Du nochmal über die Liste und setzt für die Forms Visible auf true.

Wenn das immer noch visuell unschön aussieht gibt es noch einen fiesen Trick:
Bevor Du die Parents der Forms auf die Scrollbox setzt erzeuge eine TPanel im Code, setze seine ParentBackground property auf false, BoundsRect auf die Boundsrect der Scrollbox, und, als letztes, den Parent auf den Parent der Scrollbox, gefolgt von panel.BringTofront (vermutlich nicht nötig). Dann komplettierst Du die Operationen mit den Forms und als letztes zerstörst Du das Panel. Da das Panel über der scrollbox liegt und sie abdeckt blockiert das alle sichtbaren Updates der scrollbox und deren Inhalt. Wenn aber alles quasi in einem Rutsch passiert (ohne die Möglichkeit, Paint-Messages zu verarbeiten) wird das Panel selbst auch nicht sichtbar gezeichnent.
Peter Below
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Aufbau von Forms verstecken

  Alt 9. Mär 2019, 12:51
Also erzeuge einfach erstmal alle Forms und speichere die Referenzen z. B. in einer TList (oder TList<TForm>).
Vielleicht ist eine eigene Liste gar nicht nötig. TScreen.Forms[] enthält alle Forms der Anwendung. Mit TScreen.FormCount erhält man die Anzahl.

Folgender Code z. B. macht alle Forms sichtbar.

Delphi-Quellcode:
var
  FormIndex: Integer;
begin
  for FormIndex := 0 to Screen.FormCount - 1 do
  begin
    // Wenn nicht alle Forms der Anwendung sichtbar werden sollen,
    // kann man natürlich auch eine Abfrage einbauen:
    if Screen.Forms[FormIndex].Name = 'Form1then
      Screen.Forms[FormIndex].Show;
    // In diesem Fall würde nur das Formular mit dem Namen
    // Form1 sichtbar werden.
  end;
end;
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.199 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Aufbau von Forms verstecken

  Alt 9. Mär 2019, 13:31
Erstelle die Formulare doch erst bei bedarf.
Ansonsten bringt DoubleBuffer := True auch öfter mal sehr gute Verbesserungen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#7

AW: Aufbau von Forms verstecken

  Alt 9. Mär 2019, 18:36
Ich nehme an, dass Deine SQL-Abfragen noch im OnShow stehen? Wenn ja: Würde ich nicht machen, sondern die Abfragen in eine Public-Routine packen, die dann vor dem Form.Show ausgeführt wird.
Also: Create...DoSQL...Show. Du könntest natürlich auch erstmal auf Show verzichten, bis alle Forms der Scrollbox mit ihrem DoSQL fertig sind, und dann erst Show ausführen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:44 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