Announcement

Collapse
No announcement yet.

Direkte Adressierung von Controles

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Direkte Adressierung von Controles

    Hallo Leute,
    ich bin neu hier und hoffe bei Euch Experten vielleicht eine Lösung für ein vertracktes Problem zu finden, mit dem ich schon seit einer Weile kämpfe:

    Ich programmiere grade an einer Windows-Anwendung mit mehreren komplexen Forms, in denen es von Panels, UltraTabControls und Ultragrids nur so wimmelt. Der User hat diverse Möglichkeiten, mittels Splitter die Bereiche der Forms frei zu gestalten, sowie die Spalten der UltraGrids zu bestimmen, die angezeigt werden sollen, nebst Reihenfolge, Spaltenbreite, Formatierung und vierstufiger Sortierreienfolge,...
    Das Ganze muß natürlich auch abgespeichert werden, damit es beim nächsten Aufruf der jeweiligen Form exakt so wiederhergestellt wird.
    Ich habe mir dazu in einem globalen Modul die Prozeduren <B>Shared Sub SaveFormSettings(ByVal myForm As Form)</B> zum Speichern in verschiedene Datenbanktabellen, sowie das Gegenstück <B>Shared Sub GetFormSettings(ByVal myForm As Form)</B> zum Wieder-Einlesen beim Öffnen der jeweiligen Form geschrieben. Beide Prozeduren haben noch rekursive Unterprozeduren zum Durchlaufen aller Controls in den unterliegenden Container-Controls.
    Das klappt auch alles ganz wunderbar, wenn es nur nicht so schrecklich langsam wäre...

    Das liegt vor allem an der Notwendigkeit unter VB.NET alle Container der Form mit rekursiven Schleifen zu durchlaufen und jedes Control mit z.B. <B>If TypeOf cl.Controls(i) Is Panel...</B> einzeln abzufragen.

    Da die Forms z.T. sehr komplex sind (6fache Schachtelungstiefe von Containern), dauert das Einlesen beim ersten Aufruf auch auf einem fixen Rechner schon mal locker 20 sec. Das ist keinem User zuzumuten.

    Es würde mir ungemein helfen, wenn ich zumindest beim Einlesen einen Trick fände, die Controls direkt zu addressieren. Blöderweise liegt mir aber nur die Form selbst (mittels Übergabe aus dem jeweiligen Modul) als Object vor, während ich die Control.Names aus der Datenbank nur im String-Format kriege. Trotz tagelangem Rumbrobieren und Absuchen von Dokus und Büchern hab ich noch keine Methode gefunden, direkt auf die einzelnen Panels, usw. zuzugreifen.

    Kennt zufällig einer von Euch schlauen Leuten einen praktikablen Trick hierzu? Gern bau ich auch meine DB-Tabellen noch mal komplett um und speichere irgendwelche Handles, Indizes oder sonstwas. Es muß nur direkter und schneller gehen.

    Bin für jede Hilfe dankbar,
    Gruß,
    Olaf Gerecke
Working...
X