Neuerungen in R-BASIC 1.01 / 1.02 / 1.03

1. Versionsübersicht

2. Tab-styled RadioButtonGroups

3. Erweiterte Konvertierungsfunktionen für macOS und Linux

4. Suchen in Text-Objekten


1. Versionsübersicht

Diese Übersicht enthält die wesentlichen Neuerungen, Änderungen und Bugfixes für die R-BASIC-Versionen, die nach der Version 1.0 (Dezember 2021) veröffentlicht wurden und die direkt das Programmieren betreffen. Kleine Anpassungen und Fehler­korrekturen, die es in jeder Version gibt, oder Ver­besserungen des Editor-Handlings, sind nicht explizit aufgeführt.
Falls erforderlich wurde jeweils die Handbücher angepasst.

Version 1.0.3 - Mai 2023

  • BugFix: Funktionsaufruf im RETURN-Statement konnte zu fehlerhaften Ergebnissen oder Systemabsturz führen

  • Handling beim Überschreiten des Zahlenbereichs von vorzeichen­behafteten Integer-Zahlen (Integer, LongInt) an das Vorgehen anderer Programmiersprachen angepasst: Keine Begrenzung auf Maximalwert mehr, sondern einfache Übertragsbildung.
Version 1.0.2 - November 2022
  • Tab-Styled ItemGroups bei RadioButtons ergänzt

  • Unterstützung macOS und Linux: Zeilentrenner LF und erweiterte Konvertierungsfunktionen

  • BugFix: Launcher (R-App) registriert sich bei Neustart wieder für das Clipboard.

  • Suche in Textobjekten implementiert

  • WizzardEditor: Helpfile verständlicher formuliert
Version 1.0.1 - Februar 2022
  • Bugfix bei Setzen der Tausender-Punkte

  • Bug in TxtObj.WriteToVMFile und WriteToFile bei leeren Texten beseitigt

  • Paragraph-Attribute von Memo/InputLine funktionierten nicht

^


2. Tab-styled RadioButtonGroups

... Tabs sind der übliche Weg, Informationen gruppiert darzustellen. Unter GEOS benötigen wir dafür die folgenden Objekte:

  • Eine RadioButtonGroup mit den entsprechenden RadioButton-Objekten. Diese Objekte bilden die eigentlichen Tabs. Dazu wird die Instancevariable look auf einen der unten erwähnten Werte gesetzt.

  • Ein Group-Objekt, TabsContent genannt, das die zu den verschiedenen Tabs gehörende UI verwaltet.

  • Ein Group-Objekt, TabsHolder genannt, das die Anordnung der RadioButtonGroup und des TabContent-Objekts organisiert.

  • Die eigentliche UI, mit der der Nutzer innerhalb der Tabs interagieren soll.

...

Einstellungen für die RadioButtonGroup

Die Einstellungen der RadioButtonGroup beschränken sich darauf, die Instancevariable look mit einem der Werte aus der folgenden Tabelle zu belegen und einen der Hints ExpandWidth oder ExpandHeight zu setzen. Außerdem muss ein Apply-Handler definiert werden, der die zum angewählten Tab gehörende UI sichtbar macht und die nicht dazu gehörende UI verbirgt.

Konstante Wert hex. Position der Tabs
LOOK_TABS_TOP 8 &h8 Über dem TabsContent
LOOK_TABS_LEFT 16 &h10 Links vom TabsContent
LOOK_TABS_RIGHT 32 &h20 Rechts vom TabsContent
LOOK_TABS_BOTTOM 64 &h40 Unter dem TabsContent

Hinweis: Wenn sich die Tabs links oder rechts vom TabsContent befinden, sollten Sie für die RadioButton-Objekte den Hint fixedSize setzen, weil sie sonst eventuell nicht bis an das TabsContent-Objekt heranreichen. Der Hint ExpandWidth funktioniert (in der aktuellen GEOS-Version) hier nicht.

Intern werden beim Belegen der Instancevariablen look zusätzliche Instancevariablen belegt, die im Folgenden aufgeführt sind.

Konstante  
LOOK_TABS_TOP ExpandWidth
orientChildren = ORIENT_HORIZONTALLY
LOOK_TABS_LEFT ExpandHeight
orientChildren = ORIENT_VERTICALLY
LOOK_TABS_RIGHT ExpandHeight
orientChildren = ORIENT_VERTICALLY
justifyChildren = J_RIGHT
LOOK_TABS_BOTTOM ExpandWidth
orientChildren = ORIENT_HORIZONTALLY
justifyChildren = J_BOTTOM

Codebeispiel. Den vollständigen Code finden Sie in der Beispieldatei "Tabs Tester" im Ordner "Beispiel\Objekte\Listen".

RadioButtonGroup TabsGroup
  Children = TabText, TabNumber, TabButton
  ApplyHandler = TabsChanged ' as ListAction
  selection = 1
  look = LOOK_TABS_TOP
   End OBJECT
LISTACTION TabsChanged

  TabsNumber.HideDelayed
  TabsMemo.HideDelayed
  TabsButton.HideDelayed

  ON selection SWITCH
  CASE 1:   TabsMemo.visible = TRUE : End CASE
  CASE 2:   TabsNumber.visible = TRUE : End CASE
  CASE 3:   TabsButton.visible = TRUE : End CASE
  End SWITCH

End ACTION


DontCenterTabbedChildren

In älteren GEOS-Versionen, die keine Tabs unterstützen, sieht es eventuell besser aus, wenn die RadioButton-Objekte, die statt der Tabs erscheinen, zentriert sind. Dazu müssen Sie die Instancevariable justifyChildren = J_CENTER setzen. Damit in diesem Fall die Tabs nicht auch zentriert werden, können Sie den Hint DontCenterTabbedChildren verwenden.
Syntax  UI- Code: DontCenterTabbedChildren

 

Einstellungen für den TabsHolder

Der TabsHolder muss die RadioButtonGroup und das TabsContent Objekt als Children haben. Die Reihenfolge und die Orientierung der Children hängt davon ab, wo sich die Tabs befinden:

LOOK_TABS_TOP orientChildren = ORIENT_HORIZONTALLY
Children = TabsGroup, TabsContent
LOOK_TABS_LEFT orientChildren = ORIENT_VERTICALLY
Children = TabsGroup, TabsContent
LOOK_TABS_RIGHT orientChildren = ORIENT_VERTICALLY
Children = TabsContent, TabsGroup
LOOK_TABS_BOTTOM orientChildren = ORIENT_HORIZONTALLY
Children = TabsContent, TabsGroup

Zusätzlich sollte der Hint MinimizeChildSpacing gesetzt werden, um einen Abstand zwischen TabsGroup und TabsContent zu verhindern.

Häufig ist es sinnvoll, die beiden Hints ExpandWidth und ExpandHeight zu setzen.

Codebeispiel:

Group TabsHolder
  Children = TabsGroup, TabsContent
  orientChildren = ORIENT_HORIZONTALLY
  MinimizeChildSpacing
  ExpandWidth : ExpandHeight
  End OBJECT

Einstellungen für das TabsContent-Objekt

Das TabsContent-Objekt sollte seine Größe nicht ändern, wenn die UI darin umgeschaltet wird. Das erreicht man durch setzen beiden Hints ExpandWidth und ExpandHeight oder durch Belegen der Instancevariablen fixedSize.

Sehr oft verwendet das TabsContent-Objekt einen hervorgehobenen Rahmen an drei Seiten, um das typische Aussehen zu erzeugen. Der Rahmen auf der Seite, auf der sich die Tabs befinden, sollte nicht hervorgehoben werden. Das erledigt das RadioButton-Objekt. Um das zu realisieren, unterstützen Group-Objekte die Instancevariable RaisedFrame. Ihr wird ein Zahlenwert übergeben, der bestimmt, auf welcher Seite ein hervorgehobener Rahmen gezeichnet wird.

RaisedFrame

RaisedFrame zeichnet einen hervorgehobenen Rahmen an einer oder mehreren Seiten des Objekts.
RaisedFrame ist ein Hint, d.h nicht alle GenericClass Abkömmlinge unterstützen diese Funktion. Er sollte nur für Groups verwendet werden.
Syntax UI- Code: RaisedFrame = numWert 
          Lesen: <numVar> = <obj>.RaisedFrame 
      Schreiben: <obj>.RaisedFrame = numWert

 
Zur Verwendung mit RaisedFrame sind die folgenden Konstanten definiert. Sie können mit + oder OR verbunden werden.

Konstante Wert hex. Wirkung
RF_TOP 32768 &h8000 Rahmen oben
RF_LEFT 8192 &h2000 Rahmen links
RF_RIGHT 4096 &h1000 Rahmen rechts
RF_BOTTOM 16384 &h4000 Rahmen unten

Hinweis: Wird die Instancevariable RaisedFrame verwendet, so wird der Hint DrawInBox ignoriert.

Codebeispiel:

Group TabsContent
  Children = TabsMemo, TabsNumber, TabsButton
  RaisedFrame = RF_TOP + RF_RIGHT + RF_BOTTOM
  justifyChildren = J_CENTER
  ExpandWidth : ExpandHeight
  End OBJECT

^

Weitere Listen-Objekte - OptionGroup, RadioButtonGroup, DynamicList

Weiter...