EVENT-Abfrage

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
Ray65
Foriker
Beiträge: 115
Registriert: Fr 3. Okt 2008, 15:00
Wohnort: Uttenweiler, Ba-Wü
Kontaktdaten:

EVENT-Abfrage

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!"

Benutzeravatar
Honsek
Foriker
Beiträge: 424
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: EVENT-Abfrage

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
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

Ray65
Foriker
Beiträge: 115
Registriert: Fr 3. Okt 2008, 15:00
Wohnort: Uttenweiler, Ba-Wü
Kontaktdaten:

Re: EVENT-Abfrage

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:

Re: EVENT-Abfrage

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:

Re: EVENT-Abfrage

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:

Re: EVENT-Abfrage

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! :D

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

Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 1 Gast