![]() |
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. |
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 |
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. |
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 |
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 |
@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? |
@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 |
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: |
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 |
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 |
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 |
so ein Käse. Irgendwie wehrt sich das Forrum hier meinen Code abzubilden. Dann schick ich ihn Dir per Email.
Gruß Matthias |
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: |
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 |
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 |
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 |
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 |
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 |
ich muss schauen, wie dass in C geht. von XML kann man kein programm starten.
Das event gibt es in C nicht. Gruß Marcel |
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 |
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