Statusbar-Klasse

Eigene oder Gemeinschaftsprojekte, Klassen, Module, Codeschnipsel, HowTos, ...
Antworten
Benutzeravatar
Ray65
Foriker
Beiträge: 113
Registriert: Fr 3. Okt 2008, 15:00
Wohnort: Königseggwald, Ba-Wü
Kontaktdaten:

Statusbar-Klasse

Beitrag von Ray65 » Sa 19. Mär 2011, 23:09

Hallo Community,

In Gambas gibt es keinen Statusbar (in Gambas 3 übrigens auch nicht, wie ich auf dem erste Blick gesehen habe). Was bleibt also...; selbst ist der Mann. Ich möchte Euch hier mein "selbst gebastelte" Statusbar vorstellen. Im Prinzip ist das ganze recht Einfach aufgebaut. Als Grundlage dient ein Panel, quasi als Statusbar-Hintergrund. Auf dieser werden dann Panels in Form von Labels abgelegt. Das erste Panel wird automatisch mit NEW erzeugt. Das letzte Panel wird in der Breite automatisch am Elternfenster-Breite angepasst. Das linke Panel ist immer Id 1. Von dort aus nach rechts weiter zählen.
Hier eine kleine Übersicht über die vorhandene Methoden:
Add - Neues Panel einfügen
Add(Width AS Integer, [Text AS String]) - Width: Panelbreite, Text: Paneltext (Optional)

Alignment - Schrift in Panel ausrichten
Alignment(Id AS Integer, Alignment AS Integer) - Id: Panelnummer, Alignment: Alignmentnummer (Kann auch in Form von z.B. 'Align.Right' angegeben werden)

Border - Fensterrahmen definieren
Border(Id AS Integer, Border AS Integer) - Id: Panelnummer, Border: Rahmennummer (Kann auch in Form von z.B. 'Border.Sunken' angegeben werden)

Resize - Statusbar wird neugezeichnet
Resize()

Text - Paneltext
Text(Id AS Integer, Text AS String) - Id: Panelnummer, Text: Paneltext

ToolTip - Panel-ToolTip
ToolTip(Id AS Integer, Text AS String) - Id: Panelnummer, Text: ToolTip-Text

Als Readonly-Eigenschaften stehen noch 'Version' und 'Count' zur Verfügung.

Zum testen ein Fenster anlegen auf ca. 700 x 500 Rahmengröße ziehen und folgender Code über copy & paste im Editor eingeben.

Code: Alles auswählen

' Gambas class file

PRIVATE myStatusbar AS Statusbar

PUBLIC SUB _new()

  myStatusbar = NEW Statusbar(ME, 50, "KW " & Week(Now()))
  WITH myStatusbar
    .ToolTip(1, "Kalenderwoche")
    .Add(100)
    .Add(200, "Rechtsbündig")
    .Alignment(3, Align.Right)
    .Add(200, "Rahmenstil veränderbar")
    .Border(4, Border.None)
    .Alignment(4, Align.Center)
    .Add(100, "Mit ToolTip")
    .ToolTip(5, "Auch mit ToolTip")
  END WITH

END

PUBLIC SUB Form_Resize()

  myStatusbar.Resize

END


Auch hier wie immer: Benutzung auf eigener Gefahr, für Schäden übernehme ich keine Haftung.
Viel Spaß damit!

Gruß Raymond
Dateianhänge
Statusbar.class.tar.gz
(1.39 KiB) 375-mal heruntergeladen
Ubuntu 12.04 - Gnome 3.4.1 - Gambas 3.3.3

"Man kann kein Programm idiotensicher machen, weil die Idioten so erfinderisch sind!"

Benutzeravatar
Ray65
Foriker
Beiträge: 113
Registriert: Fr 3. Okt 2008, 15:00
Wohnort: Königseggwald, Ba-Wü
Kontaktdaten:

Re: Statusbar-Klasse

Beitrag von Ray65 » So 8. Jul 2012, 14:18

Hallo Community,

hier die Version 0.0.2. Die Fehler bei Programmende (circular references) wurde beseitigt. Dank _tux können jetzt auch Panels angeklickt werden.
Ich musste der Syntax etwas ändern damit alles fehlerfrei funktioniert. Hier eine kleine Referenzübersicht:

Eingebaut wird ein StatusBar mit:

Code: Alles auswählen

Private myStatusBar As Statusbar
myStatusBar = New Statusbar(Parent, Width, OPTIONAL Text)

Parent: Elternfenster (i.d.R 'ME')
Width: Breite des erten Panels
Text: Text in erste Panel (Optional)

Beacht: 1. Panel hat Id 1
Methoden:
=========

Code: Alles auswählen

Add - Neues Panel einfügen
Add(hParent As Container, Width AS Integer, [Text AS String]) - hParent: Elternfenster (i.d.R. 'ME'), Width: Panelbreite, Text: Paneltext (Optional)

Alignment - Schrift in Panel ausrichten
Alignment(Id AS Integer, Alignment AS Integer) - Id: Panelnummer, Alignment: Ausrichtung (z.B. Alignment.Right)

Background - Hintergrundfarbe
Background(hParent As Container, Panel_Id As Integer, Value As Integer) - hParent: Elternfenster, Panel_Id: Panelnummer, Value: Farbwert

Border - Fensterrahmen definieren
Border(Id AS Integer, Border AS Integer) - Id: Panelnummer, Border: Rahmenstyle (z.B. 'Border.Sunken')

Resize - Statusbar wird neugezeichnet
Resize(hParent As Container) - hParent: Elternfenster

Text - Paneltext
Text(Id AS Integer, Text AS String) - Id: Panelnummer, Text: Paneltext

ToolTip - Panel-ToolTip
ToolTip(Id AS Integer, Text AS String) - Id: Panelnummer, Text: ToolTip-Text

Eigenschaften:
==============

Code: Alles auswählen

Version: Versionsnummer
Count: Anzahl vorhandene Panels

Events:
=======

Code: Alles auswählen

Ein Event wird mit StatusPanel + Id-Nummer sowie _Event aufgerufen.
z.B. Klick-Event wird wie folgt aufgerufen: 'Public Sub StatusPanel1_DblClick()' (In diesem Falle Doppelklick-Event)
Dateianhänge
StatusBar-0.0.2.tar.gz
(6.39 KiB) 296-mal heruntergeladen
Ubuntu 12.04 - Gnome 3.4.1 - Gambas 3.3.3

"Man kann kein Programm idiotensicher machen, weil die Idioten so erfinderisch sind!"

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste