Löschen aller XbpPushbuttons [erledigt]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Bruno
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 103
Registriert: So, 16. Apr 2023 23:11
Wohnort: Lauterbach
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

Löschen aller XbpPushbuttons [erledigt]

Beitrag 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 ?
Zuletzt geändert von Bruno am So, 23. Apr 2023 19:29, insgesamt 1-mal geändert.
Gruss Bruno
Xbase++ 1.9.355 ohne eExpress
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Löschen aller XbpPushbuttons

Beitrag 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
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Löschen aller XbpPushbuttons

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
Bruno
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 103
Registriert: So, 16. Apr 2023 23:11
Wohnort: Lauterbach
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

Re: Löschen aller XbpPushbuttons

Beitrag 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.
Gruss Bruno
Xbase++ 1.9.355 ohne eExpress
Benutzeravatar
Bruno
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 103
Registriert: So, 16. Apr 2023 23:11
Wohnort: Lauterbach
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

Re: Löschen aller XbpPushbuttons

Beitrag 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
Gruss Bruno
Xbase++ 1.9.355 ohne eExpress
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Löschen aller XbpPushbuttons

Beitrag 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()}
Herzlich,
Tom
Antworten