WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   An die Experten unter den Panelbauern ! (http://www.wcm.at/forum/showthread.php?t=50577)

Bettina Fredemann 22.03.2002 17:33

An die Experten unter den Panelbauern !
 
Hallo,

da MS die Panel-SDK noch nicht veröffentlicht hat, stelle ich meine Frage einfach einmal hier in´s Forum:

Wie wir wissen, beträgt die sichtbare Bildschirmgröße eines Mainpanel-bmp´s 1.024 x 768 Pixel.

Wenn man z. Bp. ein Panel-bmp mit 1.024 x 1.200 Pixeln erstellen würde, ist es dann möglich, einmal die oberen 2/3 und danach durch Umschalten die unteren 2/3 des BMP´s im Flusi darzustellen ?

Der Vorteil dieser Methode wäre, das ich die Gauges für dieses Panel nur einmal vergeben müßte und man daher framesschonender arbeiten könnte. Desweiteren gibt es Gauges, die innerhalb eines Panels nur einmal vergeben werden können, da es sonst zu Darstellungsfehlern kommt.

Ich weiß, das dieses eine knifflige Frage is aber vieleicht kann mir ja jemand einen Tipp geben.

P.S. das man das Panel auch mit der Maus nach oben oder unten verschieben könnte, das weiß ich. Aber das ist nicht die Lösung.

marcelvgfs 23.03.2002 09:53

Hallo Bettina,

ich bin leider nur ein Gauge-Programmierer, und bin mit deiner Frage zunächst mal überfragt.

Eventuell ist dies aber möglich, wobei ich jedoch befürchte, dass ein relativ großer Programmieraufwand nötig ist.

Ich bin mir nicht wirklich sicher, ob man auf die X,Y Variablen des Panels direkt zugreifen kann oder ob das nur manuell möglich ist (mit der Maus).
Sollte es eine einfache Möglichkeit geben, hätte das sicher schon jemand gemacht, denn die Idee ist super.

Ich werde mich umhören und bei positiver Nachricht bei der melden.

Schöne Grüße,
Marcel Burr
Chief programming easygauge
bluesky software development
www.bluesky-net.de

Bettina Fredemann 23.03.2002 10:44

Hallo Marcel,

vielen Dank für deine Antwort.

Ich habe schon einiges probiert, jedoch ohne Erfolg. Wenn man ein grßeres BMP /größer als 1024 x 768) lädt, dann setzt das Panel auf dem Bildschirm immer mit der Unterkannte des BMP zuerst auf. ich habe noch keinen Parameter gefunden, so das man die Maße des sichtbaren Bereiches des Panels in der Panel.cfg eingeben kann.

Vieleicht bringst Du ja etwas in Erfahrung, den das würde neue Möglichkeiten im Panel-Design schaffen.

Lieber Marcel, vielen Dank für deine Bemühung.

P.S. Was heißt : "eigentlich nur Gaugeprogrammierer" ?
Gauges zu programmieren ist ja wohl wesentlich komplexer und auch schwieriger als Panels zu designen. Ich ware froh, wenn ich Gauges programmieren könnte, denn Ideen hätte ich schon einige. Also, ich bewundere Leute wie Dich, die das können. Da kannst Du wirklich stolz darauf sein.

Bastian 23.03.2002 15:40

Hi Bettina

Gauge Programmieren ist nicht schwer!
Man muss "nur"(ich liebe dieses Wort :lol: ) ein wenig C können und sich in die Macken des FSs einarbeiten.
Das einarbeiten wird da von Dai Griffiths sehr unterstützt da er ein sehr gutes Tutorial geschrieben hat(sd2gau12.zip).

@Marcel
was macht Easy Gauge?
Besonders die Programmers Edition :)

Gruß
Bastian

Matthias Lieberecht 23.03.2002 17:09

Hallo Bettina,

die Panel SDK wird Dir wohl bei Deinem Problem nicht weiterhelfen. Die A: und K: Befehle des FS2002 sind ja zwischenzeitlich bekannt. Leider unterstützt MS keinen Click_Event (K: codes) zum Verschieben des anzuzeigenden Panelbereiches.

"Wie wir wissen, beträgt die sichtbare Bildschirmgröße eines Mainpanel-bmp´s 1.024 x 768 Pixel."

Das stimmt so nicht ganz. Du kannst prinzipiell jede Größe eines Bitmaps verwenden. Ob das Ding ganz oder nur teilweise angezeigt wird, legst Du selbst in der Panel.cfg fest.

"dann setzt das Panel auf dem Bildschirm immer mit der Unterkannte des BMP zuerst auf. ich habe noch keinen Parameter gefunden, so das man die Maße des sichtbaren Bereiches des Panels in der Panel.cfg eingeben kann."

Geht beides. Du kannst über die Position festlegen, an welcher Bildschirmkante Dein Bitmap beginnt. 0 = oben links bis 8 = unten rechts. Legst Du nun keinen Zoom in der Panel.cfg fest, wird das Panel gemäß Deiner Bildschirmauflösung dargestellt. Bei einem Bitmap von 1024 x 768 und einer gleich großen Bildschirmauflösung, bedeutet das, dass Dein Panel 1:1 angezeigt wird. Ist das Bitmap größer, liegt ein Teil davon außerhalb des sichtbaren Bereichs. Mit der Maus könntest Du nun im Panel scrollen. Dieses Prinzip verwendet auch Fly. Allerdings besitzt Fly Tastaturkommandos zum scrollen, die bei MS leider komplett fehlen. Da ist nix zu machen. Mit einem Zoom innerhalb der Panel.cfg kannst Du in Verbindung mit der Position auch einen bestimmten Bereich zur Anzeige bringen (window_size_ratio). Aber eine Lösung für Dein Problem ist das nicht.
Machbar wäre das u.U. mit einer zweiten Panel.cfg. In der ersten setzt Du die Position auf 7 (unten mitte) und in der zweiten setzt Du sie auf 1 (oben mitte). Mit einer Batch Datei müßte nun im Hintergrund die Panel.cfg gewechselt werden. Danach lößt Du über ein Gauge (kann das selbe sein welches die Batch Datei auslöst) einen Refresh Befehl aus. Den Refresh Befehl könnte ich Dir programieren. Die Batch Datei auch, allerdings habe ich keine Ahnung, wie diese Batch Datei vom Flusi aus mit einem Gauge aufgerufen werden kann. Vielleicht weiß das jemand anderes hier.

BTW: was für Gauges benötigst Du?

Gruß
Matthias

marcelvgfs 23.03.2002 17:14

@Bettina:
Wenn du dich für Gauges-erstellen interessierst aber das C nicht lernen und eine Version von C++ kaufen willst: ich entwickle gerade EasyGauge, ein Programm, das Gauges erstellen (individuell) ermöglicht.
Das Programm ist noch in der Beta-Phase, läuft aber schon sehr zufriedenstellend. Ich tippe auf einen Release in spätestens 2 Wochen.

Schöne Grüße,
Marcel

P.S: Konnte dir Matthias helfen?

marcelvgfs 23.03.2002 17:18

@Matthias: Ich mich gerade auf die Suche gemacht, ob es via Gauge irgendwie möglich ist, auf die Koordinaten des Panels Einfluss zu nehmen. Doch weder bei den Token Variables noch bei den Events bin ich fündig geworden. Wenn man den Hintergrund selber als Gauge macht, wäre ein internes Wechseln möglich, die dann muss ich die Gauges verschiebe, was uns Microsoft mal wieder vorenthält.
Ich werde weiter suchen, ob es irgendeine "Direct" oder "API" Möglichkeit gibt.

Gruß Marcel

Bettina Fredemann 23.03.2002 17:30

Hallo marcel,

ey, Du bist ja echt klasse.

Vieleicht geht es ja doch. Auf jeden Fall drücke ich Dir beide Daumen, das Du einen Weg findest.

Auf EasyGauge freue ich mich auch schon. Das Programm werde ich mir auch sofort zulegen.

Ganz liebe Grüße und vielen Dank für deine Mühe

:rolleyes: :rolleyes: :rolleyes:

Matthias Lieberecht 23.03.2002 19:15

Hallo Marcel,

nee, leider gibt es für den FS2002 keine Variable für die Darstellungsoption der Panel.cfg. Schade eigentlich.

"Wenn man den Hintergrund selber als Gauge macht, wäre ein internes Wechseln möglich, die dann muss ich die Gauges verschiebe, was uns Microsoft mal wieder vorenthält."

Wenn Du das ganze als Containergauge erstellst geht es, wird allerdings seeeehr umfangreich. Dazu müßten alle Gauges innerhalb des Programmes zweimal aufgeführt sein. Einmal mit den Positionskoordinaten zur Positionierung unten und einmal zur Positionierung oben. An welchen Koordinaten die Gauges nun sind, steuerst Du per "Visible". Abgefragt wird das ganze mit einer If Anweisung über einen normalen Schalter mit boolscher Variable, z.B. If{(L:Cockpitposition, bool) 1 ==... usw. Je nach Schalterstellung wird der entsprechende Container eingeblendet. Der Vorteil darin liegt, dass die Gaugebitmaps nur einmal vorhanden sein müssten. Der eingentliche Programmcode wird allerdings doppelt so lang.

Gruß
Matthias

marcelvgfs 23.03.2002 19:20

Hallo Matthias,

danke für deine Antwort!
Deine Idee gefällt mir aber besser.
Ich weiß, wie man eine .bat oder .exe von C++ aus aufruft:

ShellExecute(::GetDesktopWindow(),"open","[FILEPATH!]",NULL,NULL,SW_SHOWMAXIMIZED);

Wenn du mir den Refresh-Befehl schreibst (hab keine Ahnung wie das geht) sowie die .bat, würde ich Bettina das notwendige programmieren!

Schöne Grüße,
Marcel

Matthias Lieberecht 23.03.2002 22:31

Hallo Marcel,

hier ist aschon einmal der Programmcode für das Panelrefresh:

<Gauge Name="Reload Switch" Version="1.0">
<Element>
<Select>
<Value>(L:Dummy100,bool)</Value>
<Case Value="0">
<Image Name="Reload.bmp" ImageSizes="10,10"/>
</Case>
<Case Value="1">
<Image Name="Reload.bmp" ImageSizes="10,10"/>
</Case>
</Select>
</Element>
<Mouse>
<Cursor Type="Hand"/>
<Click Event="RELOAD_PANELS"/>
</Mouse>
</Gauge>

Der Code ist in RPN für die XML Gauges. Wenn Du ihn in C ändern willst, kannst Du "Reload_Panels" als Klickevent verwenden. Ggf. müßte das dann "KEY_RELOAD_PANELS" lauten, aber da bin ich mir nicht ganz sicher. Als Image reicht ein 10 x 10 Pixel großes transparentes Bitmap. Dies kann beliebig im Panel positioniert werden. Ich weiß nicht warum, aber ohne das Minibitmap geht das Programm bei mir nicht.

Die Batch Datei mach ich Dir noch fertig. Muß hierzu irgendwo meine alten DOS Befehle rausgraben, aber die find ich schon.

Gruß
Matthias

Matthias Lieberecht 23.03.2002 22:33

so ein Käse. Irgendwie wehrt sich das Forrum hier meinen Code abzubilden. Dann schick ich ihn Dir per Email.

Gruß
Matthias

Bettina Fredemann 24.03.2002 10:14

Hallo Marcel,
Hallo Bastian,
Hallo Matthias,

das Ihr euch so viel Arbeit für mich macht, das wollte ich eigentlich nicht. Irgendwie ist mir das schon unangenehm, weil ich nicht weiß, wie ich euch das wieder gutmachen soll.

Ich habe ehrlich schon ein schlechtes Gewissen............ aber falls das funktionieren sollte, dann, glaube ich, eröffnen sich für uns alle mehr Möglichkeiten im Paneldesign.

kann man mit dem Programm "EasyGauges" auch einfachere Toggle-Switches erstellen ? Damit entfällt das lästige Shift + 1-0 umschalten. Die Standardtoggles von MS passen optisch auch nicht in jedes panel.

Ganz liebe Grüße an euch alle :rolleyes: :rolleyes: :rolleyes:

marcelvgfs 24.03.2002 10:48

Hallo Bettina,

du brauchst kein schlechtes Gewissen zu haben, das ist doch interessant für uns alle!

Ich werde mich in nächster Zeit genau mit den Daten von Matthias befassen und das ausprobieren.
Allerdings wird das Umschalten zwischen den Panels nicht in Sekundenschnelle gehen, da er ja alle Gauges wieder laden muss... das dauert beim A320 schon mal 5-10 sek.

EasyGauge beinhaltet die Möglichkeit zum Umschalten IM MOMENT noch nicht, sie wird aber in der Final Version dabei sein. Du kannst das dann gestalten, wie du willst.

Schöne Grüße,
Marcel

Bettina Fredemann 24.03.2002 10:57

Hi Marcel,

danke erst einmal für deine Info. Du meinst, das EasyGauge dieses Feature enthalten wird ? Tja, klasse und das ist alles meine Schuld.....


Auf jeden fall freue ich mich schon auf Easygauge.

Liebe Grüße

Bettina

marcelvgfs 24.03.2002 11:01

Hi Bettina,

EasyGauge wird dieses Feature enthalten. Nicht deine Schuld... das war wirklich was, was ich vergessen hatte. Es gibt halt so viele Events( Ereignisse, wie Panel umschalten) dass ich halt ein paar ausgelassen habe.

Gruß Marcel

marcelvgfs 30.03.2002 12:19

Matthias Lieberecht
 
@Matthias Lieberecht
Hallo Matthias,
ich bin immernoch auf der Suche nach dem Refresh-Event, und bin nicht fündig geworden. Es gibt überhaupt kein Event mit RELOAD.

Kannst du mir helfen?
Gruß Marcel

Matthias Lieberecht 01.04.2002 23:02

Hi Marcel,

bin mir nicht ganz sicher, ob das Mail mit dem kompletten Programmcode bei Dir angekommen ist. Wenn nicht, nenn mir mal Deine Mail Adresse. Dann Schick ich Dir den Syntax als Textformat.

Der Reload Befehl des Panels lautet:
Reload_Panels
und der des kompletten Flugzeuges:
Reload_User_Aircraft

Beides sind Klickevents (K-Variablen) der Maus und funktionieren recht gut. Ich habe den Reload_User_Aircraft Befehl als Gauge in mein neues BAe146 Panel eingebaut. Zuvor hatte ich dort auch Reload_Panels getestet. Beide Befehle funktionierten, wobei ich nur Reload_User_Aircraft im Panel lies. Beachte aber, dass das Reload derart schnell geht, dass Du vom eigentlichen Neuladen nichts mitbekommst. Du merkst es z.B. dann, wenn Du ein zwischenzeitlich neues Gauge integrierst oder die Battery leer ist. Nach Ausführung des Befehls ist das Gauge drin und/oder die Battery wieder voll.

Gruß
Matthias

marcelvgfs 01.04.2002 23:07

ich muss schauen, wie dass in C geht. von XML kann man kein programm starten.
Das event gibt es in C nicht.

Gruß Marcel

Bastian 04.04.2002 18:41

Hi Marcel,

vielleicht wäre es möglich ein reloaden des Panels mittels FSUIPC und C zu erreichen.
Man müsste Peter Dowson mal fragen.

Gruß
Bastian

marcelvgfs 04.04.2002 19:23

Re
 
Hallo Bastian,

ich habe den Befehl für C unter den FS2002 Events gefunden. Ich muss aber erstmal daran arbeiten.

Gruß Marcel


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag