DCBROWSE mit Array und Skip [ERLEDIGT]

Moderator: Moderatoren

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

DCBROWSE mit Array und Skip [ERLEDIGT]

Beitrag von Manfred »

wie skipped man eigentlich ein Array, bzw. wie springt man einen bestimmten Satz im Array an um ihn dann anzuzeigen?
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBROWSE mit Array und Skip

Beitrag von Tom »

oBrowse:ArrayElement direkt besetzen.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSE mit Array und Skip

Beitrag von Manfred »

Tom,
das klingt für mich jetzt so, als wenn Du auf eine Frage wie man zu Bahnhof kommt antwortest: "Hingehen". :roll:
Ich hatte mir schon gedacht, das es so gemacht wird, aber ich weiß nicht wie das geht. Ein Goto, gibt es ja wohl beim Array 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
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DCBROWSE mit Array und Skip

Beitrag von AUGE_OHR »

moin,

ich weiss nicht wie es mit Express++ geht aber das \SOURCE\samples\basics\GuiBrow\FBROWSE.prg geht so

Code: Alles auswählen

   oBrowse:cargo[ ARR_NO ] := 7
   EVAL(oBrowse:posBlock,oBrowse)
   oBrowse:refreshAll()
siehe dir den o:PosBlock an was dort von wem (nRecno) zugewiesen wird.
dort setzt du nun die Element Nummer ein und evaluierst den Codeblock.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSE mit Array und Skip

Beitrag von Manfred »

Hi Jimmy,
ich habe Deinen Beitrag dazu aus 2008 gefunden und arbeite ihn gerade ab. So richtig hinbekommen habe ich es noch nicht, aber ich bastel noch. :lol:
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBROWSE mit Array und Skip

Beitrag von Tom »

Du musst oBrowse:ArrayElement mit der Nummer des Elements (=Position im zweidimensionalen Array) besetzen, zu dem Du springen willst, und anschließend ggf. noch ein oBrowse:RefreshAll() auslösen, feddisch. Was ist daran so schwer zu verstehen? Außerdem findet man derlei ziemlich leicht in Rogers Code, etwa in den Beispielen.

Ein Skip gibt es nur in Tabellen, die aber nur indirekt Datenquellen sind - und ggf. synchronisiert werden müssen. In Arrays skippt man nicht.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSE mit Array und Skip

Beitrag von Manfred »

Hi Tom,
das hatte ich so nicht verstanden (kapiert) Mittlerweile bin ich ja schon so weit, mir im Objektinspektor alle Vars usw anzuschauen, um zu sehen was wo reingeschrieben werden kann. :ArrayElement hatte ich als pauschal angesehen und nicht erkannt, das es eine membervar ist. Jetzt ist alles klar. Es scheint genau so zu klappen. Das ist wirklich nicht schwer, man muß es nur erkennen. (Die Tomatenzeit scheint wohl wieder angebrochen zu sein hier auf dem Lande) :roll:
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBROWSE mit Array und Skip

Beitrag von Tom »

Hallo, Manfred.

Der Objektinspektor ist ein gutes Hilfsmittel, aber auch die Beispiele von Roger sind extrem hilfreich. Oder das Stöbern in seinem Quellcode - in diesem Fall in _DCXBROW.PRG.

Schön, dass es jetzt klappt.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DCBROWSE mit Array und Skip

Beitrag von AUGE_OHR »

Tom hat geschrieben: Sa, 16. Mär 2019 9:16 Ein Skip gibt es nur in Tabellen, die aber nur indirekt Datenquellen sind - und ggf. synchronisiert werden müssen. In Arrays skippt man nicht.
em, äh ... aber es gibt einen Skipper bei XbpBrowse() und Array

Code: Alles auswählen

Beispiel XbpBrowse Array

      aData    := { {"Magazine",   133, .T.},; 
                    {"Zeitungen",  15,  .T.},; 
                    {"Bücher",     32,  .T.},; 
                    {"Postkarten", 833, .F.} } 

      nLastRec := Len(aData)
      nRecno   := 1 

      oBrowse:SkipBlock     := {|nSkip,oBrowse| DoSkip(nSkip,oBrowse) } 
      oBrowse:GoBottomBlock := {|| nRecno := Len(aData) } 
      oBrowse:GoTopBlock    := {|| nRecno := 1 } 
      oBrowse:PosBlock      := {|| nRecno } 
      oBrowse:PhyPosBlock   := {|| nRecno } 
      oBrowse:LastPosBlock  := {|| Len(aData) } 
      oBrowse:FirstPosBlock := {|| 1 } 
es wäre hier die STATIC nRecno die man neu bestücken müsste und dann ein o:RefreshAll()
( hier wäre ein EVAL(oBrowse:PosBlock,oBrowse) nicht notwendig )


ich mag den externen DoSkip() nicht denn es geht auch so

Code: Alles auswählen

   oBrowse:skipBlock     := {|nSkip| -np + (np := MAX(1, MIN(LEN(aArray), np + nSkip))) }
   oBrowse:goTopBlock    := {|| np := 1}
   oBrowse:goBottomBlock := {|| np := LEN(aArray) }
   oBrowse:posBlock      := {|| np }
   oBrowse:phyPosBlock   := {|| np }
   oBrowse:lastPosBlock  := {|| Len( aArray ) }
   oBrowse:firstPosBlock := {|| 1  }
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBROWSE mit Array und Skip

Beitrag von Tom »

Ich meinte das Skippen im Sinne von DbSkip(), also dem Sprung in einer Tabelle. Das braucht man bei Arraybrowses nicht. Aber - geschenkt. Manfreds Problem ist ja gelöst. :wink:
Herzlich,
Tom
Antworten