Anzahl der Elemente in einem Dialogfeld
-
Hallo,
ich schreibe gerade eine Steuerungssoftware, die die empfangenen Daten von der seriellen Schnittstelle in verschiedenen Formen in einem Dialogfeld darstellen soll. Allerdings lässt mich VC6.0 nicht alle Text-Elemente erstellen (600, klingt viel, kommt aber daher, dass einerseits die Binärdaten der 100 Eingangsadressen angezeigt werden sollen, und andererseits aber auch 5 daraus errechnete Werte ). Mit VBasic würde es zwar funktionieren, nur habe ich dort keine Multithreading-Funktionen,.... Ist das ein Problem von VC oder mache ich hier was falsch?
Danke im Voraus für Eure Hilfe
lg Michi
-
Tip:
Verringer die Steuerelementanzahl! (Maximal 100 würde ich verwenden)Hast Du etwa alle 600 Controls mit dem Dialogeditor positioniert??
-
Ja habe bzw wollte ich alle mit dem Editor erstellen. Vielleicht stehe ich auf der Leitung, aber wie sonst soll ich alle Daten darstellen? Muss zu meiner Schande gestehen, dass ich VC -Neuling bin und bisher in VB programmiert habe.
lg Michi
-
Bisher: (SE = Steuerelement)
--------- --------- --------- --------- --------- | SE1 | | SE2 | | SE3 | | SE4 | | SE5 | --------- --------- --------- --------- --------- SE1.SetWindowText( Text1); SE2.SetWindowText( Text2); SE3.SetWindowText( Text3); SE4.SetWindowText( Text4); SE5.SetWindowText( Text5);
Neu:
----------------------------------------------------- | SE1 | ----------------------------------------------------- SE1.SetWindowText( Text1+Text2+Text3+Text4+Text5);
-
Zweite Möglichkeit, mit der Du noch mehr Steuerelemente sparst ( nur 5 statt 600) !
Bisher:
--------- --------- --------- --------- --------- | SE1.1 | | SE2.1 | | SE3.1 | | SE4.1 | | SE5.1 | --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- | SE1.2 | | SE2.2 | | SE3.2 | | SE4.2 | | SE5.2 | --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- | SE1.3 | | SE2.3 | | SE3.3 | | SE4.3 | | SE5.3 | --------- --------- --------- --------- --------- ..................................................... ..................................................... --------- --------- --------- --------- --------- |SE1.100| |SE2.100| |SE3.100| |SE4.100| |SE5.100| --------- --------- --------- --------- ---------
Neu:
--------- --------- --------- --------- --------- | SE1 | | SE2 | | SE3 | | SE4 | | SE5 | --------- --------- --------- --------- --------- SE1.SetWindowText( Text1.1+"\n"+Text1.2+"\n"+Text1.3+"\n" +...Text1.600);
Mit "\n" als Zeilenumbruch werden die Zeichenketten automatisch untereinander geschrieben. Der Parameter innerhalb des SetWindowText lässt sich auch als Schleife erledigen.
Fazit: Verkürzung des Codes um ungefähr 90%
Zusatz:
Sind die Steuerelemente Listboxen, so kannst Du alle Zeichenketten mit AddString hinzufügen, sparst Dir also das Zusammensetzen.
Allerdings musst Du dann, wenn eine der Listboxen manuell gescrollt wird, alle anderen automatisch mit scrollen.Zusatz Nr. 2:
Verwende ein ListView im Report-Stil, gibt für jede Spalte ne konstante Breite ein, und fülle das ListView in einer Schleife!
!!! Beste Lösung !!![ Dieser Beitrag wurde am 11.12.2002 um 09:19 Uhr von RenéG editiert. ]
-
Diesen Weg hatte ich bereits versucht, nur ist dann das Problem, dass die Formatierung in der Tabelle "irgendwie" ist, da die Abmessungen der ausgegebenen Zahlen unterschiedlich sind. Und wenn ich den Tabulator verwende reicht der Platz nicht mehr aus. Oder kann man die Tabulatorgröße verstellen?
-
Hi zusammen,
gibt es einen Grund keine ListCtrl zu verwenden?
Grüße, Volle.
edit:
Stand ja auch schon im letzten Beitrag. Hatte ich überlesen...
[ Dieser Beitrag wurde am 11.12.2002 um 11:30 Uhr von Volle editiert. ]
-
HAllo,
wollte ich auch gerade fragen. Denn selbst VB macht bei 600 schlapp. Eine einfache Tabelle wirk hier Wunder und vorallen "SPEED". Ich möchte nicht wissen wielange das Prog braucht um die 600 Teile zu füllen.
Gruß
Ocrana
-
VB hat mit den 600 überhaupt kein Problem. Der erste Aufbau ist war deutlich zu sehen, aber da die Daten danach zyklisch aktualisiert werden spielt die Zeit dort dann eine eher untergeordnete Rolle,...
-
Hallo,
ok wenn VB das durchhält, wiso machst DU es dann in VC??? Du weisst das VC keinerlei Fehler (auch Planungsfehler) verzeiht!!!
Ocrana
-
Ich habe noch nie einen Dialog gesehen in dem sich soviele Steuerelemente befinden.
Was braucht man da für einen Bildschirm ?Konntest du mal einen Scrennshot posten.
Es gibt untersuchungen, wo festgestellt wurde, daß mehr als 7 Steuerelemente den User überfordern.
Hatten mal eine Diskussion in Rund um die ... Forum. (Sucher erfolglos das dies vor > 2 Jahren war und bereits gelöscht wurde)
-
Er hat doch oben geschrieben, dass er Multithreading benötig, und VB unterstützt das halt mal nicht. Aber ich würde auch eher eine Tabelle mit ListCtrl erstellen. Ich kann dir auch noch eine gute Freeware Komponente empfehlen. Ist ein Grid con Chris Maunder. Ich habe selbst schon damt gearbeitet und komme super damit klar. Hier ist ein Link dazu: