Controls

15/11/2012 - 08:11 von Lothar Geyer | Report spam
Ich stehe mal wieder auf dem Schlauch und bitte um Hilfe.

Auf einer Form befinden sich eine Menge Frames, die sich überdecken.
Clicked man in einem TreeView ein Element an, wird einer der Frames mit
.ZOrder in den Vordergrund geholt.

Da die Frames zu verschiedenen Gruppen gehören, habe ich sie in
verschiedene Arrays gelegt. Es gibt also

fraA1(0-n1)
fraA2(0-n2)
fraA3(0-n3)

usw. Entsprechend ist die Anzeige im TreeView. Letzteres kann ich
einfach aufbauen, indem ich einfach die Arrays durchgehe:

For Each fra in fraA1
addNode Text=fra.Caption, ParentNext fra

(oder so àhnlich, ich verwende nicht das Standard-TreeView)

Nun gibt es den Fall, dass fraA3(4) die selben Controls enthàlt (und
damit auch die selbe Logik) wie fraA2(6). Lediglich die Daten, die
angezeigt bzw. geàndert werden können, sind andere.

Klar könnte ich den Frame ein zweites Mal mit geànderten Namen der
darauf liegenden Controls definieren, was aber sicher nicht elegant und
sinnvoll ist. Irgendwie kriege ich es aber nicht hin, dass ich fraA2(6)
als fraA3(4) lade.

Lothar Geyer
 

Lesen sie die antworten

#1 Magnus Warker
15/11/2012 - 08:26 | Warnen spam
On 11/15/2012 08:11 AM, Lothar Geyer wrote:
Ich stehe mal wieder auf dem Schlauch und bitte um Hilfe.

Auf einer Form befinden sich eine Menge Frames, die sich überdecken.
Clicked man in einem TreeView ein Element an, wird einer der Frames mit
.ZOrder in den Vordergrund geholt.

Da die Frames zu verschiedenen Gruppen gehören, habe ich sie in
verschiedene Arrays gelegt. Es gibt also

fraA1(0-n1)
fraA2(0-n2)
fraA3(0-n3)

usw. Entsprechend ist die Anzeige im TreeView. Letzteres kann ich
einfach aufbauen, indem ich einfach die Arrays durchgehe:

For Each fra in fraA1
addNode Text=fra.Caption, Parent> Next fra

(oder so àhnlich, ich verwende nicht das Standard-TreeView)

Nun gibt es den Fall, dass fraA3(4) die selben Controls enthàlt (und
damit auch die selbe Logik) wie fraA2(6). Lediglich die Daten, die
angezeigt bzw. geàndert werden können, sind andere.

Klar könnte ich den Frame ein zweites Mal mit geànderten Namen der
darauf liegenden Controls definieren, was aber sicher nicht elegant und
sinnvoll ist. Irgendwie kriege ich es aber nicht hin, dass ich fraA2(6)
als fraA3(4) lade.



Der gesamte Ansatz ist nicht besonders elegant, denn es gibt keine klare
Trennung zwischen Daten und GUI.

- Lass das mit den verschiedenen Arrays für die Gruppen

- Definiere einen Datensatz, aus dem eindeutig hervorgeht, welcher Frame
für die Anzeige der Daten zustàndig ist

- Erzeuge nur einen Frame pro Datensatztyp.
(Auf den Anzeigemechanismus mit zOrder gehe ich mal nicht ein).

- Fülle den TreeView mit den Daten und hinterlege in jedem Knoten die
geeigneten Koordinaten, die Du beim Anklicken haben musst
(Datenbankschlüssel, die oben erwàhnten Gruppen, etc., und insbesondere
den Datensatztyp).

- Bei einem Klick gehe so vor:
1. Werte den Datensatztyp aus
2. Zeige den zustàndigen Frame an
3. Fülle den Frame mit den Daten

Magnus

This is Unix-Land. In quiet nights, you can hear the Windows machines
reboot.

Ähnliche fragen