Aktuelle Zeit: 15.11.2018 13:13

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: sehr viele TextGadget als Array
BeitragVerfasst: 08.04.2016 12:07 
Offline

Registriert: 28.06.2014 10:43
Hallo zusammen,

finde diese Sprache ideal klein, kurz und schnell.
ABER ich möchte nun eine große Bildschirmseite mit etwa 1000 kleinen Anzeigefenstern erstellen
(z.B. TextGadget)
Problem 1: einige Fenster sollen mit Schrift um 90° gedreht sein. Mit dem Editor (Version 5.1) oder der Deklaration bekommt man das nicht hin (Windows-Botschaft nötig? aber dann müssten sich beim Laden der Seite {was sehr schnell gehen soll} 800 Unter-Fenster per Botschaft drehen?)

Problem 2: Rand und Hintergrundfarbe: die vielen Beispiele mit API-Befehlen sind ja sehr aufwendig
Gibt's da neue Versionen oder was einfaches wie SetBkColor(myTextGadget, color)?

Problem 3: Anzeigen sollen Werte schnell (< 400 ms) anzeigen.
3 grobe Konzepte:
a) Multitasking (hatte ich hier schon hinbekommen, kann aber unerwartete Effekte bewirken)
b) jeder eigenen Timer ??
c) Array (mein Favorit):
for i=1 to 1000
myTextGadget[i].Text = ?? geht nicht
SetGadgetText(myTextGadget[i],global_Text[i]); ?? geht nicht?
SetBkColor(myTextGadget[i], color[i]); ?? geht nicht?

Habe auch schon überlegt, das Fenster mit anderer Sprache (c++ Editor) in eine DLL auszulagern,
und diese DLL in PureBasic zu laden...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: sehr viele TextGadget als Array
BeitragVerfasst: 08.04.2016 12:13 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
diese Probleme lassen sich meines Erachtens mit dem CanvasGadget lösen. Dürfte schnell genug sein und verbraucht auch weniger Ressourcen (CPU & Speicher) als 1000 einzelne Textgadgets zu erstellen.

Grüße ... Peter

_________________
ƃᴉɹǝᴉʍɥɔs ʇsᴉ ɥɔɐɟuᴉǝ


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: sehr viele TextGadget als Array
BeitragVerfasst: 08.04.2016 13:24 
Offline

Registriert: 28.06.2014 10:43
Kiffi hat geschrieben:
... mit dem CanvasGadget lösen
... Peter


Meintest Du purebasic.com/documentation/gadget/canvasgadget.html

Das mag zwar ein geeigneter Hintergrund für die 1000 Anzeigen sein,
ABER es fehlen die 1000 Anzeige-Texte selbst mit
- wechselnden Werten (Quelle ist ein Array)
- wechselnde Hintergrundfarbe und Rand
- etwa 50% um 90° gedreht

Was außer TextGadget kann den Texte schnell veränderlich anzeigen?

Früher gab es doch mal bei VisualBasic eine *.RES Datei ...
Da der eigene Form-Editor nur einfachste Texte kann, dachte ich an dem Import von etwas externes...
(RES; ActiveX, DLL, ...) ???


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: sehr viele TextGadget als Array
BeitragVerfasst: 08.04.2016 13:52 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
hyperG hat geschrieben:
Das mag zwar ein geeigneter Hintergrund für die 1000 Anzeigen sein,
ABER es fehlen die 1000 Anzeige-Texte selbst mit [...]

nee, da musst Du ein wenig umdenken. Anstatt 1000 TextGadgets Deinem Window hinzuzufügen, 'malst' Du die Anzeige (das, was in den TextGadgets angezeigt werden soll) direkt auf ein CanvasGadget. Mit den Drawing-Befehlen hast Du dann freie Gestaltungsmöglichkeiten (Farbe, Rahmen, Ausrichtung, etc.)

Grüße ... Peter

_________________
ƃᴉɹǝᴉʍɥɔs ʇsᴉ ɥɔɐɟuᴉǝ


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: sehr viele TextGadget als Array
BeitragVerfasst: 08.07.2016 22:12 
Offline
Benutzeravatar

Registriert: 19.10.2006 12:51
Was hast du mit 1000 TextGadgets vor? Willst du Excel nachbauen? :shock:

Ansonsten:

Code:
#NumTextGadgets = 1000
Dim color(#NumTextGadgets)
Dim textGadgets(#NumTextGadgets)
OpenWindow(0,0,0,320,200,"Blubb",0)
For i = 0 To #NumTextGadgets - 1
  textGadgets(i) = TextGadget(#PB_Any,0,0,320,20,"") ;Gadgets sind übereinandergestapelt. Entsprechend den Bedürfnissen die Laufvariable i in den Positionsparametern verwenden.
  SetGadgetText(textGadgets(i), "text")
  SetGadgetColor(textGadgets(i), #PB_Gadget_BackColor, color(i))
Next i


- Bitte beachte die von C abweichende Syntax der Arrays und der FOR-Schleife.
- SetBkColor() ist WinAPI. Wenn du diese nutzt, verlierst du die Kompatiblität zu Linux/OSX. In diesem Fall bietet PB gleichwertigen Ersatz aus seinem eigenen Framework. Falls du unbedingt die API-Version nutzen willst, musst du einem API-Aufruf ein '_' hinter den Namen hängen, damit PB das unterscheiden kann: SetBkColor_()

Toll ist die Lösung nicht. Ich würde auch mit Canvas+2DDrawing-Lib arbeiten. Mit den TextGadgets produzierst du einen fürchterlichen Overhead an Daten. Die Performance wird darunter leiden. Bei mir braucht der Code ne gute Sekunde, bis die 1000 Gadgets in den Fenster sind. Die Gadgets sind IMHO für User-Interfaces geeignet und nicht zum aufwändigen Malen von nicht interaktiven Tabellen/Statistiken.

2DDrawing ist mit Debugger ziemlich lahm. Aber ohne Debugger ein vielfaches schneller.

1000 parallel laufende eigene Timer sind auch eine eher schlechte Idee. Wie wäre es mit nur einem Timer, bei dem geschaut wird, welche Daten geändert werden müssen und diese dann entsprechend aktualisiert werden? <)

Du schreibst Multitasking: De GUI darf ohnehin nur vom Mainthread aus manipuliert werden. :wink:

EDIT (war zu lahm): CanvasGadget ist schon sehr performant. Die Anzeige würde ich ohnehin nur alle Sekunde aktualisieren (auch wenn sich die Werte im Speicher schneller ändern), denn so schnell ist vermutlich kaum ein menschliches Auge. :mrgreen:
Rendere einfach jeweils den wichtigsten Wert von denen, die innerhalb eines Aktualisierungsintervalls auftreten.
Du sollst damit nicht dein Fenster hübschen. Dein "Hintergrund" IST die Datenausgabe - ohne TextGadgets :mrgreen:

_________________
return;


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye