AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Application.CreateForm in einem Thread

Ein Thema von SneakyBagels · begonnen am 9. Mai 2017 · letzter Beitrag vom 10. Mai 2017
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#1

AW: Application.CreateForm in einem Thread

  Alt 9. Mai 2017, 18:06
Aber das ist doch nicht abwegig viel?

Ich habe nie mit einem Profiler wirklich nachgemessen, aber eine unserer Anwendungen braucht auch mehrere Sekunden für den Aufbau des Hauptformulars. Ist in der IDE im Formular-Designer für die einzelnen Frames nicht anders, in der Summe erscheint mir das plausibel...
Beim start einer Application oder beim Aufbau einer Form oder Frames innerhalb der IDE ist dagegen auch nichts zu sagen.

Aber das erzeugen "einer" Komponente zur Laufzeit....ist vielleicht doch "möglicherweise" etwas zu viel. (Ich sage bewusst Möglicherweise).

Mein Formular enthält nur eine einzige Komponente die man wie gesagt hier im Forum findet. Es ist eine Art TreeView mit CheckBoxen.
Ich habe schon überlegt die mit einer VirtualStringTree selber neu zu erstellen aber dafür fehlt es mir an Grundkenntnissen bezüglich VirtualStringTree.
Nenn die Komponente doch mal beim Namen. Wenn sie hier veröffentlich ist, spricht doch nichts dagegen. Danach suchen...hab ich keinen Bock.

Hast eine Datenbindung ggf. in der IDE bereits getätigt? Das könnte natürlich dazu führen, dass die Komponente währende des Erzeugens bereits Daten einliest, und das könnte die Ursache sein.
Versucht dann doch mal, die Daten etwas später bereit zustellen. Innerhalb der Anwendung kannst du evtl. das Laden der Daten dann nämlich im Thread machen, und sie dann an die Komponente binden / übergeben.

Solange wir aber nicht wissen, worum es geht, sind das alles Blicke in die Glaskugel.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#2

AW: Application.CreateForm in einem Thread

  Alt 9. Mai 2017, 18:33
Zitat:
Aber das erzeugen "einer" Komponente zur Laufzeit....ist vielleicht doch "möglicherweise" etwas zu viel. (Ich sage bewusst Möglicherweise).
Das Erzeugen einer Komponente mit wer weiß wievielen Knoten darf auch längere Zeit dauern, wenn man zuviele Knoten hat.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#3

AW: Application.CreateForm in einem Thread

  Alt 9. Mai 2017, 18:34
Es sind die hier erwähnten GTRO-Controls. http://www.delphipraxis.net/192503-c...sserungen.html http://www.delphipraxis.net/192614-s...uer-tokyo.html
Zu deiner spezifischen Frage: in der IDE ist der Desktop standardmäßig eingestellt. Soweit ich herausfinden konnte dauert das Erstellen der Einträge lange, wenn die Objekt-Typen auf [otFolders,otNonFolders,otHidden] stehen. Sind sie leer, wird das Formular recht schnell aufgebaut. Daher auch meine Idee das mit einer VirtualStringList nachzubauen aber das Grundwissen fehlt.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Application.CreateForm in einem Thread

  Alt 9. Mai 2017, 18:46
Daher auch meine Idee das mit einer VirtualStringList nachzubauen aber das Grundwissen fehlt.
Das sollte das geringere Problem darstellen. Beim VST sind diverse gute Demos dabei um wenigstens mal die Basics zu erlernen.

Wenn ich heute abend noch Zeit habe, dann bastele ich dir mal etwas ganz kleines zusammen bei dem du wenigstens mal die Nodes erstellen und die Texte anzeigen lassen kannst.

Den CheckSupport (also Anzeige von CheckBoxen) kann man dann noch nachträglich hinzufügen.

Woher kommen denn deine Daten? Kannst du evtl. mal eine kleine Struktur aufzeigen, wie die Daten aussehen? Welche Properties gibt es?

Ich würde dir auf jeden Fall empfehlen, dir den VST anzuschauen und dir das Wissen darüber anzueignen. Die Komponente ist Gold wert und um ein Vielfaches schneller als andere Komponenten. Ich benutze sie nur noch und bin seit dem Umstieg begeistert. Allerdings arbeite ich mittlerweile schon seit bestimmt 3 Jahren damit. Da kennt man so ziemlich alles vom VST und hat auch schon fast alles damit gemacht.

Und ich denke, dass es bestimmt noch einige andere User hier im Forum gibt, die dir ebenfalls gerne beim Lernen im Umgang mit dem VST helfen werden.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#5

AW: Application.CreateForm in einem Thread

  Alt 9. Mai 2017, 18:55
Das mit den Daten ist ganz einfach. Es gibt ein Root-Verzeichnis welches man angeben kann und das wird dann eingelesen.
Wenn man dann neben einem Verzeichnis auf den kleinen Pfeil klickt, wird der Eintrag expandiert und ich sehe den Inhalt der dann erst eingelesen wird, wenn man expandiert.
Es gibt demnach keine speziellen Daten. Es ist einfach nur eine Anzeige für eine Verzeichnisstruktur.
Soweit ich sehen kann gibt es hier keine speziellen Properties auf dass man einstellen kann, ob man Verzeichnisse, Daten und versteckte Inhalte sehen möchte.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Application.CreateForm in einem Thread

  Alt 9. Mai 2017, 19:00
Also könnte man das Beispiel mit dem Aufbau eines Verzeichnisbaumes vom Laufwerk C: durchführen? Ich schau mal ob ich die Zeit dazu finde und poste dementsprechend mal etwas.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#7

AW: Application.CreateForm in einem Thread

  Alt 9. Mai 2017, 19:01
Ja ganz genau. Wenn das mit einem Verzeichnis funktioniert dann funktioniert das auch mit allen anderen.
Was ich meine entspricht etwa dem auf dem Bild hier. Nur mit CheckBoxen und Dateien. Ordnergröße wäre toll ist aber kein Muss.
http://www.soft-gems.net/images/stor...ts/RidNacs.gif
Das kann die Komponente hier aus dem Forum ja gut nur sie ist sehr, sehr langsam.

Geändert von SneakyBagels ( 9. Mai 2017 um 19:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#8

AW: Application.CreateForm in einem Thread

  Alt 9. Mai 2017, 19:48
Für eine Anzeige der enthaltenen Dateien und Ordnergrößen muß auf jeden Fall das komplette Verzeichnis eingelesen werden und das Dauert definitiv etwas.
Will man nur erstmal das Rootverzeichnis anzeigen und lädt die Unterknoten nach, wenn man aufklappt, dann muß man nur das eine Verzeichnis komplett einlesen und in den Unterzeichnissen nur je die erste Datei/Unterverzeichnis einlesen, um zu wissen, ob man das [+] vor der ersten Ebene der jeweiligen Unterverzeichnissen darstellen muß.

Allerdings kann man das Einlesen auch in einem Thread oder notfalls Stückchenweise in einem Timer erledigen und dann regelmäßig die Daten im Baum/TreeView aktualisieren.
Ist der TreeView zu langsam, vorallem bei vielen Daten, dann den Baum intern komplett einlesen und nur den jeweils sichbaren Teil in den TreeView laden, also nur die aufgeklappten Teile.
http://www.delphipraxis.net/45366-wi...g-visuell.html
https://www.heise.de/download/product/windirstat-15041
Ein Therapeut entspricht 1024 Gigapeut.
  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 00:40 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