aGetlist: GetObjekt nach Namen suchen?

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

aGetlist: GetObjekt nach Namen suchen?

Beitrag von satmax »

Wahrscheinlich finde ich es nur nicht in der Doku...
Ich erstelle mir eine aGetlist mit:

tdDEget(1,1,fieldblock("FELDNAME") ...
aadd(aEditGets,oGet)

und habe so am Ende alle oGet Objekte in aEditGets.

von einzelen oGet kann ich per

oGet:editbuffer()

einen Wert abfragen, aus aEditGets dann Sinngemäß so

aEditGets[1]oGet:editbuffer()

für das erste Feld in der Getlist. Ich möchte nun aber nicht per 1,2,3... auf die einzelnen GetFelder zugreifen sonder per Name. Jedes oGet Object wurde wie folgt erstellt:

tdDEget(1,1,fieldblock("FELDNAME1") ...
aadd(aEditGets,oGet)
tdDEget(2,1,fieldblock("FELDNAME2") ...
aadd(aEditGets,oGet)
...
(tdDEGet() ist von zwar TopDown, ich denke aber hier geht es im wesentlichen um das normale oGetObjekt)

Also müsste doch in jedem oGet und somit auch in meiner aGetList jeweils der Name des "verbunden" Datenbankfeldes zu finden sein, nur wie?

So in etwa würde ich das gerne machen
myGet := AScan(aEditGets, "FELDNAME")

Gruß
Markus
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: aGetlist: GetObjekt nach Namen suchen?

Beitrag von satmax »

Ich habe mir jetzt #DEFINES geamcht, das finde ich noch ganz praktikabel:

Code: Alles auswählen

...
#DEFINE GET_ARTCODE 3
...
#DEFINE GET_EH 12
...
aEditGets[GET_ARTCODE]:getData()
* oder
aEditGets[GET_EH]:setData(ARTIKEL->EH         )
...
Die Defines erhalten einfach das Prefix GET_, finde ich noch praktikabel und lesbar.
Gruß
Markus
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: aGetlist: GetObjekt nach Namen suchen?

Beitrag von AUGE_OHR »

satmax hat geschrieben:Wahrscheinlich finde ich es nur nicht in der Doku...
...
So in etwa würde ich das gerne machen
myGet := AScan(aEditGets, "FELDNAME")
siehe mal in der Xbase++ Hilfe nach der Get-Class.
es gibt die iVar o:name und du hast Objecte in deinem Array dann müsste so was sein

Code: Alles auswählen

nPosi := AScan(aEditGets, {|o| o:name = "FELDNAME" } )
gruss by OHR
Jimmy
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: aGetlist: GetObjekt nach Namen suchen?

Beitrag von AUGE_OHR »

satmax hat geschrieben:

Code: Alles auswählen

...
#DEFINE GET_ARTCODE 3
...
#DEFINE GET_EH 12
...
aEditGets[GET_ARTCODE]:getData()
* oder
aEditGets[GET_EH]:setData(ARTIKEL->EH         )
...
YUP das ist schon viel besser lesebar und man könnte es noch weiter treiben

Code: Alles auswählen

#DEFINE GET_ARTCODE aEditGets[3]
...
#DEFINE GET_EH aEditGets[12]
nun ist das ganze aber "nur" 2-Dim ...
wenn man nun mehrere Fenster und mehrere GET Objecte hätte kann man so vorgehen

Code: Alles auswählen

#xtranslate GET_KDNR                => Stack\[SP,1]
...
#xtranslate GET_ARTCODE             => Stack\[SP,3]
...
#xtranslate GET_EH                  => Stack\[SP,12]

STATIC Stack := {}
STATIC SP    := 0

FUNCTION _STACKINIT
   // Anzahl Elemente mit #xtranslate
   AADD( Stack, ARRAY( 12 ) )
   // n-Dim für MDI
   SP ++
  // vorbelegen 
  GET_KDNR := SPACE(5)
  ...
RETURN (SP)

FUNCTION _STACKEXIT(nThread)
   Aremove(Stack,nThread)
   SP := LEN(Stack)
   // other Action
RETURN (SP)
Diese Methode stammt noch aus Cl*pper Zeiten womit man die vielen PUBLIC Variabeln in ein Array gestopft hat.
Man kann aber in einem Array "alles mögliche" unterbringen z.b. das Object von einem XbPart.

btw. XbParts haben eine iVar o:Cargo wo man auch "alles mögliche" unterbringen kann.
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: aGetlist: GetObjekt nach Namen suchen?

Beitrag von satmax »

Das mit den defines geht schon ganz gut,

#define aEditGets aSpcl[4]
#define aGenGets aSpcl[5]

habe ich mit von TopDown abgschaut. :) Cargo ist auch kein Problem, die TD Dialoge stellen cargo1-cargo5 zur Verfügung. cargo5 habe ich meinerseits wieder als Array angelegt und dient meinem "Fenstermanager". Auch habe ich die Cargo schon verendet um mir eine Recordnummer zu übergeben,...

Mit Xtranslate habe ich noch nichts gemacht, kommt irgendwann sicher....

o:name habe ich jetzt in der Hilfe gefunden, aber, gibt bei mir immer nil zurück:

Code: Alles auswählen

FUNCTION XY(dG, aSpcl)
LOCAL nGet
nGet := AScan(aEditGets,{|o|o:name="STEUERSATZ"})      // -> nil
test := oG:name                             // -> nil
test :=aEditGets[GET_ARTTEXT]:name                    // -> nil
Gruß
Markus
Gruß
Markus
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: aGetlist: GetObjekt nach Namen suchen?

Beitrag von AUGE_OHR »

satmax hat geschrieben:o:name habe ich jetzt in der Hilfe gefunden, aber, gibt bei mir immer nil zurück:
hm ... sprechen wir nun vom GET Object oder einem @X,Y GET ?
alternative wäre es dann ReadVar()
gruss by OHR
Jimmy
Antworten