Aeval über Childlist()

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Aeval über Childlist()

Beitrag von Manfred »

Moin,

das hier klappt:

Code: Alles auswählen

AEval(::childlist(), {|x,i| ::childlist()[i]:setInputFocus := {|y,nI| oSleHilfe:setcaption(::aKonfigButton[nI,1])}})
warum klappt sowas nicht:

Code: Alles auswählen

AEval(::childlist(), {|x,i| ::childlist()[i]:caption := "Test"})
Childlist ist aus einem Pushbutton Objekt. Die Buttons bleiben leer.

das hier klappt auch nicht:

Code: Alles auswählen

AEval(::childlist(), {|x,i| ::childlist()[i]:tabStop := .T.})
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Beitrag von Sören »

Hallo Manfred,

wenn ich Dich richtig verstanden habe, gibt der Aufruf von ::childList() innherhalb der AEval()-Funktion Pushbutton-Objekte zurück?!

Und für die Pushbutton wurde bereits ::create() ausgeführt?!

Wenn dem so ist, kannst Du die Caption nur noch mit der Methode ::setCaption( "Test" ) ändern.

So sollte es funktionieren:

Code: Alles auswählen

AEval( ::childList(), { |o| iif( IsMethod( o, "setCaption" ), o:setCaption( "Test" ), NIL ) } )
Beste Grüße,
Sören
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Sören,

das hier klappt ja,

Code: Alles auswählen

  ::oPbNeu:caption       := ::aKonfigButton[ 1,2]
  ::oPbFinden:caption    := ::aKonfigButton[ 2,2]
  ::oPbEdit:caption      := ::aKonfigButton[ 3,2]
  ::oPbSkipminus:caption := ::aKonfigButton[ 4,2]
  ::oPbSkipPlus:caption  := ::aKonfigButton[ 5,2]
  ::oPbAnfang:caption    := ::aKonfigButton[ 6,2]
  ::oPbEnde:caption      := ::aKonfigButton[ 7,2]
  ::oPbSichern:caption   := ::aKonfigButton[ 8,2]
  ::oPbLoeschen:caption  := ::aKonfigButton[ 9,2]
  ::oPBBeenden:caption   := ::aKonfigButton[10,2]
deshalb bin ich ja so verwirrt. Ich habe zunächst den normalen Weg gewählt um zu sehen, ob alles so klappt, wie ich es mir vorstelle. Dann wollte ich "vereinfachen".
Es ist alles noch vor dem :create().
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
vor dem :Create() können die Objekte ja noch nicht in der ::childlist stehen, da sie ja noch nicht existieren!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

sollte so sein, aber in meinem 1.Beitrag war eine Zeile, die klappte und die ist genau vor der anderen, die nicht klappt. Beides mit Aeval und ::childlist() und vor dem :create() (Setinputfocus). Ich dachte das auch, aber im Debugger sah ich dann, dass es einen Eintrag gab.

Watt sachse nu?

Ich bin genauso verwirrt, wie damals, als ich erfuhr, dass es kein Christkind gibt.....

PS: Ok, das mit der Caption habe ich jetzt hinter Create als setcaption() gepackt, das ist jetzt kein Problem mehr, aber das andere verwirrt mich jetzt immer noch.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

also das Dingen sieht genau so aus:

Code: Alles auswählen

CLASS rahmenButton FROM XbpStatic
      EXPORTED:

      VAR aKonfigButton,;
          nBreite,;
          nHoehe,;
          nLinks,;
          nPbBreite,;
          nPbHoehe,;
          oPbNeu,;
          oPbFinden,;
          oPbEdit,;
          oPbSkipMinus,;
          oPbSkipPlus,;
          oPbAnfang,;
          oPbEnde,;
          oPbSichern,;
          oPbLoeschen,;
          oPBBeenden

      METHOD init
      METHOD create
      METHOD destroy
      METHOD erzeugeButton
      METHOD konfigButton
ENDCLASS
********************************************************************************
METHOD rahmenButton:init(oParent, oOwner, aPos, aSize, aPresParam, lVisible)
       ::xbpStatic:init(oParent, oOwner, aPos, aSize, aPresParam, lVisible)
       ::type          := XBPSTATIC_TYPE_GROUPBOX
       ::aKonfigButton := {;
                           {"Neuerfassung von Datensätzen (aktivieren mit Leertaste, oder Mausklick)"         ,"~Neu"},;
                           {"Suchen von Datensätzen (aktivieren mit Leertaste, oder Mausklick)"               ,"~Finden"},;
                           {"Editieren des angezeigten Datensatzes (aktivieren mit Leertaste, oder Mausklick)","~Ändern"},;
                           {"vorherigen Datensatz anspringen (aktivieren mit Leertaste, oder Mausklick)"      ,"~<"},;
                           {"nächster Datensatz anspringen (aktivieren mit Leertaste, oder Mausklick)"        ,"~>"},;
                           {"Anfang der Datenbank anspringen (aktivieren mit Leertaste, oder Mausklick)"      ,"~Anfang"},;
                           {"Ende der Datenbank anspringen (aktivieren mit Leertaste, oder Mausklick)"        ,"~Ende"},;
                           {"Speichern von Datensätzen (aktivieren mit Leertaste, oder Mausklick)"            ,"~Speichern"},;
                           {"Löschen des angezeigten Datensatzes (aktivieren mit Leertaste, oder Mausklick)"  ,"~Löschen"},;
                           {"Beenden der Maske (aktivieren mit Leertaste, oder Mausklick)"                    ,"~Beenden"};
                          }
       ::nLinks        := 5
       ::nPbBreite     := (::currentSize()[1]-5-5)/10                           // steht hier schon zur Verfügung.
       ::nPbHoehe      := ::currentSize()[2]-5-15                               // merkwürdig
RETURN self
********************************************************************************
METHOD rahmenButton:create(oSleHilfe, aPbActivate )
       ::xbpStatic:create()
       ::erzeugeButton()
       ::konfigButton(oSleHilfe)
       AEval(::childList(),{|x,i| ::childlist()[i]:activate := aPbActivate[i,1]})
RETURN self
********************************************************************************
METHOD rahmenButton:destroy()
       ::XbpStatic:destroy()
RETURN self
********************************************************************************
METHOD rahmenButton:erzeugeButton()
       ::oPbNeu       := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbFinden    := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbEdit      := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbSkipMinus := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbSkipPlus  := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbAnfang    := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbEnde      := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbSichern   := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbLoeschen  := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
       ::nLinks += ::nPbBreite

       ::oPbBeenden   := XbpPushButton():new(self,,{::nLinks,5},{::nPbBreite,::nPbHoehe})
RETURN self
********************************************************************************
METHOD rahmenButton:konfigButton(oSleHilfe)
       AEval(::childlist(), {|x,i| ::childlist()[i]:setInputFocus := {|y,nI| oSleHilfe:setcaption(::aKonfigButton[nI,1])}})

       ::oPbNeu:tabStop       := .T.
       ::oPbFinden:tabStop    := .T.
       ::oPbEdit:tabStop      := .T.
       ::oPbSkipMinus:tabStop := .T.
       ::oPbSkipPlus:tabStop  := .T.
       ::oPbAnfang:tabStop    := .T.
       ::oPbEnde:tabStop      := .T.
       ::oPbSichern:tabStop   := .T.
       ::oPbLoeschen:tabStop  := .T.
       ::oPbBeenden:tabStop   := .T.

       ::oPbNeu:create():setName(1)
       ::oPbFinden:create():setName(2)
       ::oPbEdit:create():setName(3)
       ::oPbSkipMinus:create():setName(4)
       ::oPbSkipPlus:create():setName(5)
       ::oPbAnfang:create():setName(6)
       ::oPbEnde:create():setName(7)
       ::oPbSichern:create():setName(8)
       ::oPbLoeschen:create():setName(9)
       ::oPbBeenden:create():setName(10)

       AEval(::childlist(), {|x,i| ::childlist()[i]:setcaption(::aKonfigButton[i,2])})
RETURN self
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Beitrag von Sören »

Hallo Manfred,

Deine Methode ::konfigButton() könntest Du folgendermaßen vereinfachen:

Code: Alles auswählen

METHOD rahmenButton:konfigButton( oSleHilfe )

  AEval( ::childlist(), { |o,i| o:setInputFocus := { |y,nI| oSleHilfe:setcaption( ::aKonfigButton[nI,1] ) }, ;
                                o:tabStop := .T., ;
                                o:caption := ::aKonfigButton[i,2], ;
                                o:create(), ;
                                o:setName( i ) } ) 
RETURN self 
Beste Grüße,
Sören
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Sören,

das habe ich ja vor, aber alles one after the other. Im Moment quält mich der Gedanke, warum es so nicht klappt.

PS: Mir fällt gerade noch ein: Wie Du siehst, klappt es so ja nicht.....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Aeval über Childlist()

Beitrag von brandelh »

Manfred hat geschrieben: warum klappt sowas nicht:

Code: Alles auswählen

AEval(::childlist(), {|x,i| ::childlist()[i]:caption := "Test"})
Childlist ist aus einem Pushbutton Objekt.
2 Ideen hätte ich :

1. Dein Aufruf ist nach :create(), somit nützt es nichts :caption zu ändern, man muss :SetCaption() aufrufen:

Code: Alles auswählen

AEval(::childlist(), {|x,i| ::childlist()[i]:setCaption("Test")})
2. Wenn du die childlist() eines Buttons aufrufst, hat dieser denn überhaupt Childs ?

Normalerweise liegen Buttons auf der :drawingArea oder einem XbPart der Static Klasse ...
Gruß
Hubert
Antworten