Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
-
Ray65
- Foriker
- Beiträge: 115
- Registriert: Fr 3. Okt 2008, 15:00
- Wohnort: Uttenweiler, Ba-Wü
-
Kontaktdaten:
Beitrag
von Ray65 » Mo 2. Jan 2012, 20:52
Hallo,
Ich habe folgende Klasse:
Code: Alles auswählen
' Gambas class file
Inherits ToolButton
Public $myToolBar As ToolBar
Public $btn1 As ToolButton
Public $btn2 As ToolButton
Public Sub _new(Parent As Container, Width As Integer, Height As Integer)
$myToolBar = New ToolBar(Parent) As "myToolBar"
$btn1 = New ToolButton($myToolBar) As "Button1"
$btn2 = New ToolButton($myToolBar) As "Button2"
With $myToolBar
.Background = Color.White
.Move(1, 0, Width, Height)
End With
With $btn1
.Move(0, 0, 32, 32)
.Tooltip = "Button1"
End With
With $btn2
.Move(0, 0, 32, 32)
.Tooltip = "Button2"
End With
End
Und wird wie folgt aufgerufen:
Code: Alles auswählen
' Gambas class file
Private myToolBar As myToolBar
Public Sub _new()
myToolBar = New myToolBar(Me, Me, 200, 40)
End
Public Sub Form_Open()
Me.Center
End
Wie kann ich nun im Hauptprogramm einen Click-Event abfangen? Das Beispiel unter Gambas-Doc habe ich probiert, komme aber damit nicht ganz zurecht.
Grüße Raymond
"Man kann kein Programm idiotensicher machen, weil die Idioten so erfinderisch sind!"
-
Honsek
- Foriker
- Beiträge: 424
- Registriert: Do 4. Okt 2007, 17:01
-
Kontaktdaten:
Beitrag
von Honsek » Di 3. Jan 2012, 19:29
Guten Tag Raymond,
vielen Dank für die guten Wünsche zum neuen Jahr, die ich herzlich erwidere. Endlich - nach vielen Mühen und mit großartiger Unterstützung von Freunden, die ich auf der UBUCON 2011 zu meinem Workshop zu GAMBAS traf - spielen die für mein Online-Buch zu GAMBAS die eingesetzte Software Dokuwiki, alle Plugins und das verwendete Template ohne Fehler zusammen. Jetzt kann ich mit dem Einpflegen des Inhalts anfangen.
Ist myToolBar = New myToolBar(Me, Me, 200, 40) ein Schreibfehler? Werden 4 Parameter erwartet?
Mit freundlichem Gruß
Honsek
-
Ray65
- Foriker
- Beiträge: 115
- Registriert: Fr 3. Okt 2008, 15:00
- Wohnort: Uttenweiler, Ba-Wü
-
Kontaktdaten:
Beitrag
von Ray65 » Di 3. Jan 2012, 21:44
Hallo Hans,
schön mal wieder was von Dir zu hören, respektive zu lesen. Ich habe eine etwas längere Gambas-Abstinenz hinter mir. Hoffe das ich jetzt wieder etwas mehr Zeit habe.
Zum Thema: Nein ist kein Schreibfehler. Das 2x ME stammt von Inherits. Wenn ich 'INHERITS ToolButton' weglasse komme ich mit 1x ME aus. Die andere beiden habe ich selber definiert (Breite und Höhe). Allerdings funktioniert es ohne Inherits genauso wenig.
Ich habe herausgefunden dass ich innerhalb meiner Klasse problemlos Click-Events per 'Public Sub Button1_Click()' abfangen und bearbeiten kann. Aber vom Hauptprogramm aus klappt es leider nicht, und finde auch keine Ansatzpunkt zum weitermachen.
Apropos UBICON; wie ist dein Workshop angekommen? In der Ubuntu-Wochenrückblick habe ich zwar was gelesen, aber dein Workshop wurde leider nicht erwähnt. Ich wollte auch kommen, fand aber leider aus zeitlichen- und familiären Gründen keinen Möglichkeit. Und der Strecke Bodensee - Leipzig ist auch nicht gerade ohne. Dieser bin ich mal beruflich sechs Wochen lang gefahren. Nicht gerade um der Hausecke.
Schöne Grüßen,
Raymond
"Man kann kein Programm idiotensicher machen, weil die Idioten so erfinderisch sind!"
-
tux_
- Moderator
- Beiträge: 950
- Registriert: Di 11. Nov 2008, 20:05
-
Kontaktdaten:
Beitrag
von tux_ » Do 5. Jan 2012, 02:16
Hi,
ich denke, du meinst ein Click-Event eines der ToolButtons (die Public-Variablen)? Auch, wenn es nicht zur Lösung des Problems beiträgt, muss doch fragen, was für eine Klasse es ist, die auf ToolButton basiert und selbst eine ToolBar und 2 ToolButtons als Public-Variablen deklariert...
Zum Problem:
Es muss einen Observer dieser Steuerelemente in der betreffenden Klasse geben.
Class1:
Code: Alles auswählen
PUBLIC $hBtn AS Button
PUBLIC SUB _new()
DIM hObs AS Observer
$hBtn = NEW Button(FMain)
hObs = NEW Observer($hBtn) AS "Btn"
END
PUBLIC SUB Btn_Click()
PRINT "Click in Class1"
END
FMain:
Code: Alles auswählen
PRIVATE h AS Class1
PUBLIC SUB Form_Open()
DIM hObs AS Observer
h = NEW Class1
hObs = NEW Observer(h.$hBtn) AS "FMainBtn"
END
PUBLIC SUB FMainBtn_Click()
PRINT "Click in FMain"
END
Wenn ich mich recht entsinne, gibt es bereits mindestens eine Anfrage (von mir) in der Mailingliste diesbezüglich.
MfG,
tux_
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
-
tux_
- Moderator
- Beiträge: 950
- Registriert: Di 11. Nov 2008, 20:05
-
Kontaktdaten:
Beitrag
von tux_ » Do 5. Jan 2012, 02:25
Hi,
tatsächlich, ist es leicht zu finden. Dort wird von Fabien auch Folgendes vorgeschlagen, das nicht einmal einen Observer erfordert, sondern den Standard-Observer der Klasse verwendet (dabei ist zu beobachten, dass ein Object.Attach() das Objekt vom vorigen Event-Observer entfernt):
Class1 benötigt den Observer weiterhin (sofern wir den folgenden Code in FMain verwenden).
FMain:
Code: Alles auswählen
PRIVATE h AS Class1
PUBLIC SUB Form_Open()
h = NEW Class1
Object.Attach(h.$hBtn, ME, "FMainBtn")
END
PUBLIC SUB FMainBtn_Click()
PRINT "Click in FMain"
END
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
-
Ray65
- Foriker
- Beiträge: 115
- Registriert: Fr 3. Okt 2008, 15:00
- Wohnort: Uttenweiler, Ba-Wü
-
Kontaktdaten:
Beitrag
von Ray65 » Do 5. Jan 2012, 18:07
Hi tux_,
genau dass habe ich gesucht! Zwar habe ich auch mit Observer und Object.Attach experimentiert, aber irgendwie hat irgendwo etwas gefehlt und nichts wollte funktionieren. Und nach einer gewisse Zeit sah ich vor lauter Bäume den Wald nicht mehr. Jetzt komme ich endlich wieder ein Stück vorwärts. Danke!
Gruß Raymond
"Man kann kein Programm idiotensicher machen, weil die Idioten so erfinderisch sind!"
Mitglieder in diesem Forum: Bing [Bot] und 1 Gast