Seite 1 von 1

Löschen aller XbpPushbuttons [erledigt]

Verfasst: So, 23. Apr 2023 12:00
von Bruno
Hallo Mitglieder

Habe die Frage, löschen aller XbpPushbuttons nachdem einer ausgewählt wurde. Wie kann ich sowas realisieren?
Bei meiner Lösung lösche ich immer nur den gewählten.

Code: Alles auswählen

      LOCAL oBtn, nEvent, mp1, mp2, oXbp

      oBtn := XbpPushButton():new(,, {10,20}, {200,40} )
      oBtn:caption  := " Daten ins Netz übertragen "
      oBtn:activate := {|| DatenAnfuegen(),DbfSicher(),NeuIndex(),Loeschen(),;
                            oBtn:destroy(),PostAppEvent( xbeP_Quit ) }
      oBtn:create()
      oBtn:show()

      oBtn := XbpPushButton():new(,, {400,20}, {200,40} )
      oBtn:caption  := " Daten nicht übertragen "
      oBtn:activate := {|| oBtn:destroy(),PostAppEvent( xbeP_Quit )  }
      oBtn:create()
      oBtn:show()

      SetMouse( .T. )                  // activate mouse events
      nEvent := xbe_None
                                       // terminate program with the
      DO WHILE nEvent <> xbeP_Quit    // event xbeP_Close
         nEvent := AppEvent( @mp1, @mp2, @oXbp, 0 )

         oXbp:handleEvent( nEvent, mp1, mp2 )
      ENDDO
Und bitte die Info, wie kann ich einen Thema hier als erledigt kennzeichnen ?

Re: Löschen aller XbpPushbuttons

Verfasst: So, 23. Apr 2023 12:36
von AUGE_OHR
hi Bruno,

normalerweise würde ich sagen so

Code: Alles auswählen

   aChild := oDlg:Childlist()  // Parent XbpDialog
   for ii := 1 TO LEN(aChild)
      oObj := aChild[ii]
      if oObj::isDerivedFrom("XbpPushButton")
         oObj:Destroy() 
nun gibst du keinen Parent an ... Hybrid-Modus :?:

---

alternative kann man ein Object in ein Array aufnehmen, dann geht mit der FOR / NEXT Schleife genau so

---

du kann einen Thread editieren und dann, in der Kopfzeile, der Vermerk [erledigt] einfügen

Re: Löschen aller XbpPushbuttons

Verfasst: So, 23. Apr 2023 13:49
von Tom
Eigentlich löscht man Pushbuttons in so einer Situation nicht, sondern man disabled sie. Dafür löst man für alle Pushbuttons, die nicht mehr genutzt werden können sollen, oButton:Disable() aus (Gegenmethode: Enable()). Alternativ kann man Pushbuttons auch mit oButton:Hide() verschwinden lassen und bei Bedarf mit oButton:Show() wieder anzeigen.

Wenn man Objekte zerstört, während der Parent noch aktiv ist, besteht Fehlergefahr.

Re: Löschen aller XbpPushbuttons

Verfasst: So, 23. Apr 2023 14:08
von Bruno
AUGE_OHR hat geschrieben: So, 23. Apr 2023 12:36 hi Bruno,


nun gibst du keinen Parent an ... Hybrid-Modus :?:
Hi Jimmy. richtig Hybrid, bis ich im GUI Modus ankomme, dauert noch etwas, da ich erstmal an diesem Programm für die lokale Dispoeingabe dran bin.
Ich will nur die Buttons da rein, das jeder der Eingaben macht, egal wieviele PC, beim pausieren (Mittagessen) oder ähnliches die Daten nicht gleich ins Netz schieben muss, sondern auswählen kann. Die Daten werden erst 2-4 Wochen nach Eingabe im Netz für die Auswertung usw. benötigt. Zumal so noch jeder eventuelle Korrekturen machen kann bevor die Daten ins Firmennetz gehen.

Re: Löschen aller XbpPushbuttons

Verfasst: So, 23. Apr 2023 14:15
von Bruno
Tom hat geschrieben: So, 23. Apr 2023 13:49 Eigentlich löscht man Pushbuttons in so einer Situation nicht, sondern man disabled sie. Dafür löst man für alle Pushbuttons, die nicht mehr genutzt werden können sollen, oButton:Disable() aus (Gegenmethode: Enable()).
Hi Tom,
wie kann ich alle Pushbuttons disabled machen, wenn ich einen auswähle?
Ich habe keine Ahnung von diesen Objekten, und die letzten 10 Jahre habe ich nicht ge-xbased :D

Re: Löschen aller XbpPushbuttons

Verfasst: So, 23. Apr 2023 14:20
von Tom
wie kann ich alle Pushbuttons disabled machen, wenn ich einen auswähle?
Zum Beispiel im Activate-Slot, aber auch an irgendeiner anderen beliebigen Stelle im Code, der ausgelöst wird, vorausgesetzt, man kennt die Variablen, in denen die Buttons stecken (weshalb es sinnvoll ist, unterschiedliche zu wählen):

Code: Alles auswählen

oButton3:activate := {||oPush1:Disable(),oPush2:Disable(),MachwasBestimmtes(),oPush1:Enable(),oPush2:Enable()}