History ========================================================================== Date Beschreibung -------------------------------------------------------------------------- 21-05 Version 1.20 -------------------------------------------------------------------------- - Bugfix: Bei der Listbox werden jetzt Eintr„ge, die l„nger sind als der Ausgangstext, abgeschnitten. Ausserdem k”nnen jetzt die Listboxen nicht mehr aužerhalb des Bildschirms erscheinen. - Bugfix: PopUp's k”nnen nicht mehr aužerhalb des Bildschirms erscheinen. - Bugfix: Frames wurden unter MTOS in Monochrom nur halb ge- zeichnet (mist Farben...) - Bugfix: Unter ganz bestimmten Umst„nden konnte es passieren, daž nach TerminateSysGem eine eventuelle Alertbox nicht mehr erschienen ist. - Neue Funktion: ShortCutColor ( INT color ); Setzt die Farbe, in der die Unterstriche gezeichnet werden. Standardm„žig auf RED gesetzt. - Bugfix: Unter Umst„nden "bersah" die Lib den DISABLED-Status eines Objektes, was sich nett bemerkbar machen konnte... - Bugfix: Der Rckgabewert SG_TERM bei der Handler-Funktion der Hauptmenzeile wird nun korrekt verarbeitet und nicht mehr in die Tonne gelenkt... - Bugfix: Redrawfehler bei Popup und G_STRING behoben. - Feature: Wird bei DoDialog oder WindowDialog als Editfeld eine -2 bergeben, sucht sich SysGem das erste Editfeld im Dialog und setzt den Cursor entsprechend. Bei anderen Werten (<= 0) sind _keine_ Eingaben im Dialog m”glich. Bei Werten > 0 geht SysGem davon aus, daž der Cursor in das angegebene Editfeld (Objektnummer) setzen soll. - Nachtrag: In einer Multitasking-Umgebung setzt SysGem immer die Programm-Id als "[xxxx]" vor den Fenstertitel, damit der Benutzer weis, woher denn und zu wem das Fenster geh”rt. Sollte dies nicht gewollt sein, dann einfach ein '|' als erstes Zeichen fr den Fenstertitel bergeben. - Da manchen die šberschrift "Alert" fr die Alertbox nicht gefallen hat, kann nun mit: SetAlertTitle ( BYTE *s ); ein max. 20 Zeichen langer Text angegeben werden, der dann als Alert-šberschrift erscheint. - Objekte vom Typ G_ICON und G_IMAGE werden nun nicht mehr automatisch mit den 3D-Flags versehen. Dies scheint wohl auf ziemliche Kritik gestossen zu sein. Wer jetzt 3D haben will, muž es halt selber machen... - Neue Meldung: SG_MOVED. Diese wird verschickt, wenn sich die Lage eines Fensters ge„ndert hat, SG_SIZED wird nur noch bei einer Gr”žen„nderung verschickt. Bei SG_INVISIBLE kann nun auch SG_ABORT zurckgegeben werden, wenn man verhindern will, daž das betreffende Fenster ausge- blendet wird. Alle anderen Werte fhren zum Ausblenden des Fensters. - Es war m”glich, mehrere Fenster mit der gleichen Id zu ”ffnen, Wird jetzt versucht, ein Fenster zu ”ffnen, dessen Id es schon gibt, wird das jeweilige Fenster getoppt und die Funktion kehrt mit einem Fehler zurck. Das Fenster wird _nicht_ ge”ffnet. - LinkTree ( ..., pos ); NOCHMAL zur Verdeutlichung: Es mssen BŽUME gelinkt werden; bei der Positionierung und Anpassung wird immer auf Element 0 zugegriffen. Teilb„ume k”nnen in die Hose gehen! - WINDOW_INFO.work_area wird von fast allen Programmen benutzt, um die Fenstergr”že zu speichern. Deshalb neu eingefhrt: draw_area. Enth„lt den Arbeitsbereich eines Fensters ohne die eventuell eingeh„ngten B„ume. Sollte anstatt work_area zum neuzeichnen benutzt werden. - Neue Funktion: SetWinMinSize ( LONG win_id, INT w, INT h ); ...setzt die Minimale Gr”že des Fensters. Hilfreich, wenn B„ume drin sind... - Neue Funktion: OpenLogWindow ™ffnet ein Fenster, in das man mit wprintf schreiben kann. Es k”nnen beliebig viele Fenster ge”ffnet werden... Warum die Funktion genommen werden muž? Weil nur hier die Cursor- verwaltung und alles drin ist... ;-))) - Neue Funktion: wprintf ( LONG id, BYTE *format, ... ); Schreibt in das (mit OpenLogWindow ge”ffnete) Fenster mit der id 'Id' den angegeben String. Der Format-String ist identisch mit dem bei printf. Es gibt aber noch folgende ESC-Sequenzen: ESC p - Fett (Invers-Ersatz) ein ESC q - Fett (Invers-Ersatz) aus ESC + - Unterstreichen ein ESC - - Unterstreichen aus ESC ( - Kursiv ein ESC ) - Kursiv aus ESC e - Cursor an ESC f - Cursor aus ESC E - ClearScreen; Cursor auf Ursprung (x = 0, y = 0) - Neue Funktion: wcls ( LONG id ); L”scht das Fenster mit der id 'id'. Identisch mit ESC E. - Neue Funktion: wposxy ( LONG id, INT x, INT y ); Positioniert den Textcursor im Fenster 'id' bei x, y. Fehlerhafte Koordinaten werden auf 0 gesetzt. - Neue Funktion: VOID wgetxy ( LONG win_id, INT *x, INT *y ); Liefert die Position des Cursors im entsprechenden Fenster. - Neue Funktion: IsVisible ( INT handle ); Liefert TRUE, wenn der Arbeitsbereich des Fensters komplett sichtbar ist. - Neue Verwaltung: Wird im Fenster mittels Arrow's gescrollt, verschiebt SysGem selbstst„ndig den Fensterinhalt. - Neue Verwaltung: Tastendrcke ins Fenster werden jetzt etwas anders gehandhabt. Es wird (in dieser Reihenfolge) geprft: + Shortcut? + Fenstermenkrzel? + Hauptmenkrzel? + --> Taste an Fenster schicken. Wenn das Fenster Editfelder besitzt, dann Zeichen einfgen. Ansonsten schicken... Fenster braucht Taste nicht? --> dann SG_KEY an Hauptmenzeile, vielleicht kann die was damit anfangen.... - Neue Funktion: BYTE *LinkList ( LONG win_id, BYTE *text ); "H„ngt" eine Textliste in ein Fenster ein. Die Lib passt den Dokumentbereich automatisch an und kmmert sich selbstst„ndig um Redraw- und Scroll-Operationen. Dabei ist win_id die Id des Fensters und text ein Zeiger auf den Text, der als erste Zeile im Fenster erscheinen soll. Es wird ein Zeiger zurck- geliefert, wo der Text anschliežend zu finden ist. Das [0] Element des Strings ist dabei zur freien Verfgung. ist der Wert >= 0, bernimmt SysGem den Wert nach vst_effects. Es k”nnen also einzelne Zeilen Fett, Unterstrichen usw. darge- gestellt werden. Ist [0] < 0, ignoriert SysGem den Wert. Man kann dann eigene Flags einsetzten. - Neue Funktion: BYTE *AddToList ( LONG win_id, BYTE *text ); H„ngt den Text an die bereits existierende Liste des Fensters Win_id an. Rckgabe siehe LinkText. - Neue Funktion: BYTE *ChgInList ( LONG win_id, INT line, BYTE *text ); Ersetzt den Text in zeile 'line' durch 'text' im Fenster 'win_id' Ist 'text' == NULL, liefert die Funktion den Zeiger auf das [0] Element des bestehenden Textes. - Neue Funktion: VOID ChangeButton ( OBJECT *tree, INT obj, BYTE *text, BOOL draw ); Ersetzt den Buttontext im Baum 'tree' durch 'text' und zeichnet, wenn draw == TRUE, den Button auch gleich wieder neu. Da die Verwaltung der Buttons in SysGem >= 1.10 eine andere als in den Vorg„ngerversionen ist, muž ein Buttontext ber diese Funktion ge„ndert werden. - Neue Verwaltung: Bei Sliderboxen werden nun auch Nachrichten verschickt, damit evtl. Selektionen richtig bearbeitet werden k”nnen (hi Jan!). Dazu gibt es folgende Nachrichten: SG_SLID_UP SG_SLID_DN SG_SLID_MV SG_SLID_PGUP SG_SLID_PGDN 'button' enth„lt dabei die neue oberste Zeile in der Slider- box, dialog_info.special enth„lt die objektnummer der Box, damit bei mehreren Sliderboxen im Dialog unterschieden werden kann, welche gemeint ist. Nach Rckkehr dieser Nachricht werden die Eintr„ge dann neu gezeichnet. - Neue Funktion: BYTE wgetchar ( LONG win_id, INT x, INT y, INT *effect ); Liefert das Zeichen, daž sich im Fenster 'win_id' an der Position x, y befindet. Ist 'effect' != NULL, enth„lt sie nach dem Aufruf eventuell gesetzte Stati (fett etc.) - Neue Funktion: Display (...); L„dt eine Datei und stellt diese im Fenster dar. - Die Eintr„ge in den Listboxen werden nun wie auch bei den PopUp's selektiert. - Neue Funktion: CountLines ( LONG win_id ); Liefert die Anzahl der Textzeilen in einem Fenster (s. LinkList) - Neue Funktion: DelInList ( LONG win_id, UINT line ); L”scht die Zeile 'line' aus der Textliste. - Neue Funktion: do_qsort ( LONG win_id, CPROC compare ); Sortiert die Textzeilen ohne Bercksichtigung der Stati (fett etc). Vordefiniert sind fr 'compare': cmp_strings_up - Aufsteigend sortieren cmp_strings_dn - Absteigend sortieren - Neue Funktion: Cycle (...) Nun sind auch die Cycle-Buttons drin, ohne die wahrscheinlich niemand leben kann (bei den Anfragen...) - So, das war's. Bis die n„chsten Wnsche und Bugreports (hoff- entlich nicht...) kommen. -------------------------------------------------------------------------- 11-05 Version 1.10 -------------------------------------------------------------------------- Die Funktionen: - RedrawArea - RedrawDialog - RedrawWindow - IsMenuKey sind irgendwie verschtt gegangen. Jetzt sind sie wieder da! -------------------------------------------------------------------------- Ende der Datei.