You are not logged in.

theuserbl

Intermediate

  • "theuserbl" started this thread

Posts: 436

Date of registration: Dec 20th 2008

  • Send private message

1

Wednesday, December 31st 2008, 1:15pm

Bugs & Co

In der Framwork-Datei PictureBox.jsrc wurde sich vertippt.
Dort steht unter Public Sub Line(x1 As Single, y1 As Single, x2 as Single, y2 as Single, Rect As Boolean, FillColor As Long)

Source code

1
Call my2DGraphics.fillRect(x1 +1, y1 + 1, x2 - x1 - 1,  y2 - x1 - 1)

gemeint war aber

Source code

1
Call my2DGraphics.fillRect(x1 +1, y1 + 1, x2 - x1 - 1,  y2 - y1 - 1)

(statt dem letzten x1 ein y1)

Und der ToggleButton, bei dem ist einmal geklickt, für immer gedrückt.

Ich denke mal, beide Bugs sind schon seit langem bekannt und in der neuen Version schon lange behoben. Aber leider gibt es hier auf der Webseite keinen Bereich wo steht "Known Bugs" und "Known Bugs fixed".

Ein weiteres Problem ist das Zeichnen von Linien, Kreisen und so generell.
Wird unter Frame_Load gezeichnet, dann zeichnet er es schnell und dann wird es direkt wieder gelöscht.
Sagt man, daß beim Klicken eines Buttons etwas gezeichnet werden soll, dann zeichnet er beim ersten Klick alles und löscht es direkt danach wieder. Erst ab dem zweiten Klick zeichnet er es und es bleibt auch da (sofern kein anderes Fenster drüber kommt etc).

Und existiert eigentlich soetwas wie INKEY$ für Jabaco?
Also Inkex$ selber kennt es jedenfalls nicht.
Manche Basic-Dialekte haben auch KEY_DOWN, KEY_PRESSED und so. FreeBasic kennt zusätzlich MULTIKEY. Damit ist möglich zu erkennen, wenn mehrere bestimmte Tasten gleichzeitig gedrückt werden.
Ich habe in der IDE gesehen, daß es

Source code

1
keyDown (a as Event, b as Integer) As Boolean
gibt. Ist das Teik von Jabaco oder Teil von Java?

Wäre jedenfalls schön, wenn es eine einfache Art für Tastaturabfragen gibt. Ob man gerade eine Cursertaste, eine Buchstabentaste, ALT, Strg oder so gedrückt hat oder eine Kombination davon.

Grüße
theuserbl

PS: Bin jetzt erst mal den ganzen Tag mit Freuden in das neue Jahr am Feiern. Guten Rutsch ins neue Jahr an alle hier.

Manuel

Administrator

  • "Manuel" is male

Posts: 256

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

2

Wednesday, December 31st 2008, 3:24pm

Quoted

Und der ToggleButton, bei dem ist einmal geklickt, für immer gedrückt.
ist das ein fehler? du musst einfach 2 togglebuttons erstellen ...

Quoted

Ich denke mal, beide Bugs sind schon seit langem bekannt und in der neuen Version schon lange behoben. Aber leider gibt es hier auf der Webseite keinen Bereich wo steht "Known Bugs" und "Known Bugs fixed".
was ist langfristig die beste lösung für dieses problem? hast du einen guten vorschlag? momentan schwanke ich noch zwischen bugzilla und trac ...

Quoted

Ein weiteres Problem ist das Zeichnen von Linien, Kreisen und so generell.
Wird unter Frame_Load gezeichnet, dann zeichnet er es schnell und dann wird es direkt wieder gelöscht.
ja - du könntest "autoredraw" auf true stellen, dann wird das im hintergrund gespeichert...

Quoted

Und existiert eigentlich soetwas wie INKEY$ für Jabaco?
Also Inkex$ selber kennt es jedenfalls nicht.
dafür gibt es mehr als eine methode. per stdin geht das zb so: MsgBox in.read()

Quoted

Manche Basic-Dialekte haben auch KEY_DOWN, KEY_PRESSED und so. FreeBasic kennt zusätzlich MULTIKEY. Damit ist möglich zu erkennen, wenn mehrere bestimmte Tasten gleichzeitig gedrückt werden.
es kommt ganz drauf an wo / wie du das abfragen möchtest. einige jabaco-controls geben dir ein event zurück. zb.

Jabaco Source

1
2
3
Public Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
   MsgBox KeyCode
End Sub


alternativ kannst du das auch java-like mit einem observer machen. zum beispiel:

Quoted

Public Sub Form_Load()
Call Text1.Parent.addKeyListener(Me)
End Sub
noch eine methode:

Quoted

Winapi Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
es gibt da noch einige weitere möglichkeiten, wobei du meistens die jabaco-methode verwenden kannst...

Quoted

Jabaco Source

1
keyDown (a as Event, b as Integer) As Boolean

Ist das Teil von Jabaco oder Teil von Java?
schwer zu sagen - wo hast du das gefunden?

theuserbl

Intermediate

  • "theuserbl" started this thread

Posts: 436

Date of registration: Dec 20th 2008

  • Send private message

3

Friday, January 2nd 2009, 9:01pm

Quoted

Und der ToggleButton, bei dem ist einmal geklickt, für immer gedrückt.
ist das ein fehler? du musst einfach 2 togglebuttons erstellen ...
Oh, danke stimmt. Dachte der ToggleButton sei wie eine Checkbox. Aber es ist wie bei einem Radiobutton.
Bleibt dann nur die Frage, wie man mehrere von denen gruppiert. Wenn ich in einem Form einmel drei ToggleButton habe und einmal zwei, von denem man jweils einen auswählen soll, dann geht es nicht zu trennen. Dann kann man nur einen von fünf auswählen.
Oder es gibt eine Möglichkeit dafür und ich weiß es nicht. Freu mich schon auf die Dokumentation.

Quoted

Und existiert eigentlich soetwas wie INKEY$ für Jabaco?
Also Inkex$ selber kennt es jedenfalls nicht.
dafür gibt es mehr als eine methode. per stdin geht das zb so: MsgBox in.read()

Quoted

Manche Basic-Dialekte haben auch KEY_DOWN, KEY_PRESSED und so. FreeBasic kennt zusätzlich MULTIKEY. Damit ist möglich zu erkennen, wenn mehrere bestimmte Tasten gleichzeitig gedrückt werden.
es kommt ganz drauf an wo / wie du das abfragen möchtest. einige jabaco-controls geben dir ein event zurück. zb.

Jabaco Source

1
2
3
Public Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
   MsgBox KeyCode
End Sub
Danke bei der TextBox und dem CommandButton funktioniert es tatsächlich.
Aber für die PictureBox gibt es das nicht.
Die PictureBox wäre das Gegenstück zum normalen Fenster der anderen Basic-Dialekte (QBasic, FreeBasic, BlitzMax, GLBasic, ...) die alle ohne GUI einherkommen. Dort kann man z.B. mit den Cursertasten eine Figur steuern oder so.

Quoted

alternativ kannst du das auch java-like mit einem observer machen. zum beispiel:

Quoted

Public Sub Form_Load()
Call Text1.Parent.addKeyListener(Me)
End Sub
noch eine methode:

Quoted

Winapi Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
es gibt da noch einige weitere möglichkeiten, wobei du meistens die jabaco-methode verwenden kannst...
Hmmm... irgendwie hat Jabaco mit dem Java Code-Abschnitt bei mir Probleme....
Und auf eine Windows-Funktion zuzugreifenb ist nicht gerade plattformunabhängig.

Quoted

Quoted

Jabaco Source

1
keyDown (a as Event, b as Integer) As Boolean

Ist das Teil von Jabaco oder Teil von Java?
schwer zu sagen - wo hast du das gefunden?


In der IDE. Wenn ich dort irgendwo ein
keyDown(
eingeben, öffnet sich ein Tooltip
1/1 keyDown(arg2 As Event, arg3 As Integer) As Boolean

Manuel

Administrator

  • "Manuel" is male

Posts: 256

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

4

Friday, January 2nd 2009, 9:51pm

Quoted

Bleibt dann nur die Frage, wie man mehrere von denen gruppiert.
Die werden automatisch gruppiert. Verwende einen Frame, oder eine PictureBox, wenn du mehr als eine Gruppe hast...

Quoted

Aber für die PictureBox gibt es das nicht.
Das Framework kann von jedem modifiziert und erweitert werden :)

Quoted

Die PictureBox wäre das Gegenstück zum normalen Fenster der anderen Basic-Dialekte (QBasic, FreeBasic, BlitzMax, GLBasic, ...)
Du könntest natürlich auch StdIn abfragen ...

Quoted

Hmmm... irgendwie hat Jabaco mit dem Java Code-Abschnitt bei mir Probleme....
Du musst das passende Interface implementieren.

Quoted

Und auf eine Windows-Funktion zuzugreifenb ist nicht gerade plattformunabhängig.
Das war auch nur eine Möglichkeit. Mit der Windows-Funktion kannst du das systemweit abfragen. Es kommt ganz drauf an was du tun möchtest.

Rate this thread
WoltLab Burning Board