Hinweise zum neuen Forum
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Array mit Objecten -> Collection() ?

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10381
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Array mit Objecten -> Collection() ?

Beitrag von AUGE_OHR » Mo, 27. Aug 2012 0:01

hi,

ich bin bei der "native" Toolbar. Die hat ja Buttons welche man mit o:AddItem() hinzufügen kann

Code: Alles auswählen

METHOD DXE_Toolbar:Additem(cCaption, xImage, xDisabledImage, xHotImage, cDLL, nStyle, cKey)
   AADD(::aTBitems,{ cCaption,xImage, xDisabledImage, xHotImage, cDLL, nStyle, cKey })
ich nehme nun alle Parameter in ein Array auf.

wenn ich mir nun den oToobar:buttonClick Callbackslot ansehe finde ich oButton "im Codeblock"

Code: Alles auswählen

:buttonClick := {| oButton,uNil,self | ... }
ich muss also ein Object haben was ich als oButton zurückgeben kann.

Code: Alles auswählen

CLASS DXE_ToolBarButton 
EXPORTED:

   VAR bottom
   VAR caption
   VAR description
   VAR disabledImage
   VAR enabled
   VAR height
   VAR hotImage
   VAR image
   VAR index
   VAR key
   VAR left
   VAR mixedState
   VAR pressed
   VAR style
   VAR tooltipText
   VAR top
   VAR visible
   VAR width

   METHOD init()
   METHOD addItem()
   METHOD clear()
   METHOD delItem()
   METHOD getItem()
   METHOD numItems()
ENDCLASS

METHOD DXE_ToolBarButton:init(p1,p2,p3,p4,p5,p6)
METHOD DXE_ToolBarButton:addItem( cCaption, cKey )
METHOD DXE_ToolBarButton:clear()
METHOD DXE_ToolBarButton:delItem( xItem )
METHOD DXE_ToolBarButton:getItem( xItem )
METHOD DXE_ToolBarButton:numItems()
nun hab ich also mein Object ... und mein Array ::aTBitems

wie bekomme ich nun beides zusammen ?
gruss by OHR
Jimmy

Benutzeravatar
andreas
Foren-Moderator
Foren-Moderator
Beiträge: 1610
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Kontaktdaten:

Re: Array mit Objecten -> Collection() ?

Beitrag von andreas » Mo, 27. Aug 2012 19:35

In dem du evtl. Array nach der Caption des Objektes durchsuchst?
Gruß,

Andreas
VIP der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6734
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Array mit Objecten -> Collection() ?

Beitrag von Tom » Mo, 27. Aug 2012 21:25

Hallo, Jimmy.

Ich muss zugeben, ich verstehe Deine Frage nicht ganz. Die Toolbar hat eine AddItem-Methode, die Buttons hinzufügt (!). Der Toolbar-Callback "buttonClick" verfügt als Referenz über einen Verweis auf das Button-Objekt, das mit AddItem hinzugefügt wurde, so dass das Objekt im Slot greifbar ist. Du sammelst die Parameter, die Du der AddItem-Methode übergibst, in einem Array. Wozu? Und warum willst Du im Callback auf dieses Array zugreifen? Du hast doch das ganze Objekt zur Verfügung.

Oder willst Du folgendes tun? Alle möglichen Buttons bzw. deren Eigenschaften werden in einem Array gesammelt, und dieses Array soll dann von AddItems abgearbeitet werden (wofür die Methode nur leicht adaptiert werden müsste). In "buttonClick" möchtest Du wiederum wissen, welcher Arrayindex sich auf den geklickten Button bezöge, welches Item Deines Arrays also relevant ist. Meinst Du das?
Herzlich,
Tom

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10381
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Array mit Objecten -> Collection() ?

Beitrag von AUGE_OHR » Fr, 31. Aug 2012 1:10

hi,

@Tom : ich habe meine eigene "native" Toolbar geschrieben siehe http://www.xbwin.com
AUGE_OHR
30. August 2012
ot4xb.public
"native" Toolbar v0.12
In dem du evtl. Array nach der Caption des Objektes durchsuchst?
YUP so was in der Art mache ich ja noch mit Array ... aber ich möchte Objecte ;)

mir ging es um die "allgemeine" Frage wie ich aus einem Array ein Object mache.
bei XbpToolBar():AddItem() erhält man als Rückgabe ein Object.

wenn ich

Code: Alles auswählen

CLASS DXE_ToolBarButton
schreibe ohne ein FROM dann hat das Object praktische nur die IVar und keine weiteren geerbten Eigenschaften.

aber irgendwo muss ich die "Rückgabe" Objecte doch "verwalten", also nehme ich die im Array auf.
um eine Button aus einer Toolbar zu bekommen gibt es oToolbar:getItem() was ich so umgesetzt habe

Code: Alles auswählen

METHOD DXE_Toolbar:getItem( xItem )
LOCAL nNo
LOCAL oBtn  := NIL
LOCAL cCaption := ""
LOCAL pBtnArray

   IF VALTYPE(xItem) = "N" // suche nach INDEX No.
      nNo := ASCAN(::aItems,{|x| x[_nItemCount] = xItem })
      IF nNo > 0
         oBtn := ::aItems[nNo][_oAddBtn]
      ENDIF

   ELSEIF VALTYPE(xItem) = "C" // suche nach KEY
      nNo := ASCAN(::aItems,{|x| x[_cKey] = xItem })
      IF nNo > 0
         oBtn := ::aItems[nNo][_oAddBtn]

      ELSE                              // suche nach Caption
         nNo := ASCAN(::aItems,{|x| x[_cCaption] = xItem })
         IF nNo > 0
            oBtn := ::aItems[nNo][_oAddBtn]
         ENDIF
      ENDIF
   ENDIF

RETURN oBtn
Ein Array kann das zwar aber für ActiveX gibt es ja für solche Zwecke "Collation".

Frage : wie macht macht eine "Collation" als Object statt eines Array für Objecte ?

... ich suche so was wie "FROM XbpCollation"
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10381
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Array mit Objecten -> Collection() ?

Beitrag von AUGE_OHR » Fr, 31. Aug 2012 6:47

angenommen :

Code: Alles auswählen

FOR 1 := 1 TO 10
   oXbp := XbpStatic():New():Create()
   oXbp :Property := xxx
   AADD(aButton,oXbp)
NEXT
ich verwende hier extra "kein o:Cargo" !
wenn ich nun eine Button ansprechen will müsste ich es mit

Code: Alles auswählen

oXbp := aButton[nNummer]
dann holt er mir aus dem Array wieder das Object.

und so stelle ich mir den Code vor

Code: Alles auswählen

oButton := DXE_ArrayObject():New()

FOR 1 := 1 TO 10
   oButton:Property := xxx
   oButton:Next()
NEXT

oXbp := oButton:Index(nNummer)
wie bekommt man so etwas hin ?
gruss by OHR
Jimmy

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast