xbp_listview

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

xbp_listview

Beitrag von peternmb »

Hallo,

ich habe durch Zufall einige Bilder von diesem Control, das auf ot4xb bzw. der DXE-Lib basiert, gesehen.
Wäre vermutlich ein prima Ersatz für eine "normale" Listbox, wo ich immer Probleme mit dem Setzen der Tabulatoren habe.

Nur finde ich dazu weder einen Beispielcode noch eine Beschreibung.

Setzt das jemand unter der 1.90.355 ein und kann kann mir weiterhelfen?
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: xbp_listview

Beitrag von AUGE_OHR »

hi,
peternmb hat geschrieben: Fr, 08. Mär 2019 12:17 Nur finde ich dazu weder einen Beispielcode
beim Wrapper von Pablo ist doch ein Demo Source dabei ?
ot4xb.public
Sonntag, 29. Mai 2011 23:35
playing with the listview control
TestListView01.zip
(42.28 KiB) 291-mal heruntergeladen
in dem Thread gibt es noch weiter Upgrades
peternmb hat geschrieben: Fr, 08. Mär 2019 12:17 ... noch eine Beschreibung.
wenn du dir den Wrapper Code ansiehst wirst du nur LVM_* Konstanten finden.
https://docs.microsoft.com/en-us/window ... e-messages
Pablo hat nun die Method geschrieben für die man die Konstante benötigt mit dem "richtigen" Parameter Aufrufen ... nicht "mehr".


wie nun ein Listview funktioniert und was es kann erfährt man hier
https://docs.microsoft.com/en-us/window ... s-overview

---

4 Schritte sind notwendig

1.) Konfiguration des Control :dwLvStyle mit LVS_* Konstanten
2.) Column per LVCOLUMN() Structure anlegen. Info vorher in die Structure "schreiben"
3.) Daten Bereich per LVITEM() Structure füllen ( ähnlich AddItem() )
4.) Maus/Keyboard Notify Event abfangen auf die man reagieren will z.b. NM_CLICK

bei Interesse kann ich den Demo Code von Pablo näher erläutern

---

p.s. schon mal an XbpQuickbrowse gedacht ?
gruss by OHR
Jimmy
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: xbp_listview

Beitrag von peternmb »

vielen Dank, das Beispiel hatte ich nicht gefunden - damit kann ich etwas anfangen.
Damit ist ja die Wochenend-Beschäftigung gesichert :blob8:
p.s. schon mal an XbpQuickbrowse gedacht ?
ja schon - aber ich hatte gehofft, dass ich den vorhandenen Code mit der ListBox auf relativ einfache Art verbessern könnte.
bei Interesse kann ich den Demo Code von Pablo näher erläutern
werde ich bei Bedarf gerne darauf zurückkommen, aber ich beschäftige mich erstmal mit dem Beispiel
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: xbp_listview

Beitrag von peternmb »

Hallo,

die Anzeige des Listviews mit den Überschriften und dem Füllen aus einer DBF habe ich problemlos hinbekommen.
Was ich nicht schaffe ist es, den Klick auf einen Eintrag auszuwerten.

Ich erhalte mit der Funktion "OnListViewClick" die Zeilennummer - soweit ist das auch OK, das würde mir genügen.
Wenn ich allerdings dann versuche mit dieser Zeilennummer als recno() einen Datensatz in der Datenbank anzuzeigen erhalte ich diese mir nicht verständliche Fehlermeldung. Die Datenbank ist definitiv geöffnet, ich lese ja vorher die Einträge ein.
Es gibt nur einen select-Bereich und auch nur den einen Thread.
listview.png
listview.png (125.64 KiB) 10853 mal betrachtet
Außerdem würde ich gerne noch über die Überschriften eine entsprechnde Sortierung hinbekommen.
In irgendeinem Beispiel habe ich das gesehen, war allerdings nur die EXE ohne Quellcode.
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: xbp_listview

Beitrag von AUGE_OHR »

hi,

hier erst mal die Function für den Zugriff auf eine "Cell"

Code: Alles auswählen

METHOD DXE_ArrayView:GetItem(nSel,nSub)
LOCAL cItem := ""
   DEFAULT nSub TO 0                            // Zero based Columne No
   cItem := ::lv_GetItemText(nSel,nSub)
RETURN cItem
einen Datensatz in der Datenbank anzuzeigen erhalte ich diese mir nicht verständliche Fehlermeldung
nun ... das liegt daran das du in einem anderen Thread bist als die DBF ...
die Controls laufen im GUI-Thread während deine App die DBF im normalen Thread öffnet.

der Trick besteht nun in der Verwendeung eines Callback Slot mit einem Codeblock
in Xbase++ hat man z.b. o:ItemSelect
wenn man einen Codeblock ausfüllt wird der im GUI-Thread ausgeführt mit den Daten aus dem normalen Thread.

Code: Alles auswählen

INLINE METHOD MySelect(mp1,mp2)
   IF VALTYPE(Itemselect) = "B"
      EVAL(Itemselect, mp1,mp2,Self)
   ENDIF
RETURN
---
Außerdem würde ich gerne noch über die Überschriften eine entsprechnde Sortierung hinbekommen.
das ist im ersten Schritt ganz einfach

Code: Alles auswählen

 ::SortOrder    := LVS_SORTDESCENDING  // oder LVS_SORTASCENDING
damit wird beim Start die Sortierung festgelegt

Code: Alles auswählen

METHOD DXE_ArrayView:Headersort( n )             // xbeP_Keyboard Menu headerLbDown
LOCAL nOldSort := ::nSubScript

   IF ::SortOrder == LVS_SORTASCENDING
      ::SortOrder := LVS_SORTDESCENDING
   ELSE
      ::SortOrder := LVS_SORTASCENDING
   ENDIF

   // Zero based so add +1
   ::nSubScript   := n+1
   // diese Zeile ist extra in meinem Source
   ::SortColumne(ACLONE(::aSource),::nSubScript)

RETURN NIL
im Grund muss man "nur" den Sort Flag ändern denn das Listview hat ja die Daten.
es ist also wie ein internes ASORT() was auf die entsprechende Spalte ausgeführt wird

hier die Steuerung über das Keyboard ( o:AktiveList ist ein von mehreren Listview )

Code: Alles auswählen

         CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_CTRL_F3
            // sort Name
            oDlg:AktiveList() :Headersort( LV_NAME - 1 )
         CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_CTRL_F4
            // sort Extension
            oDlg:AktiveList() :Headersort( LV_EXT - 1 )
         CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_CTRL_F5
            // sort Date
            oDlg:AktiveList() :Headersort( LV_DATE - 1 )
         CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_CTRL_F6
            // sort Size
            oDlg:AktiveList() :Headersort( LV_SIZE - 1 )
hier per Toolbar (kann man auch für ein Menu nutzen)

Code: Alles auswählen

   oToolbar1:addItem( "Name", VIEW_IMAGE_SORTNAME,,,,,,,, { || oSelf:AktiveList():Headersort( LV_NAME - 1 ),IF(oSelf:nActive=1,SP_SortLeft(LV_NAME-1),SP_SortRight(LV_NAME-1)) } )
   oToolbar1:addItem( "Type", VIEW_IMAGE_SORTTYPE,,,,,,,, { || oSelf:AktiveList():Headersort( LV_EXT  - 1 ),IF(oSelf:nActive=1,SP_SortLeft(LV_EXT -1),SP_SortRight(LV_EXT -1)) } )
   oToolbar1:addItem( "Size", VIEW_IMAGE_SORTSIZE,,,,,,,, { || oSelf:AktiveList():Headersort( LV_SIZE - 1 ),IF(oSelf:nActive=1,SP_SortLeft(LV_SIZE-1),SP_SortRight(LV_SIZE-1)) } )
   oToolbar1:addItem( "Date", VIEW_IMAGE_SORTDATE,,,,,,,, { || oSelf:AktiveList():Headersort( LV_DATE - 1 ),IF(oSelf:nActive=1,SP_SortLeft(LV_DATE-1),SP_SortRight(LV_DATE-1)) } )
---

um das per Klick auf den Column Header auszulösen muss man zunächst den LVN_COLUMNCLICK Notify Event abfangen.

Code: Alles auswählen

   ::SetLvNotifyCB( LVN_COLUMNCLICK, ;
                    { | xbp, code, lp, st | st := NMITEMACTIVATE():New(), st:_write_( lp, 0, - 1 ), ;
                    PostAppEvent( xbeMyLv_COLUMNCLICK, st:iSubItem, st, Self ), NIL } )
den leitet man nun weiter an HandleEvent

Code: Alles auswählen

METHOD DXE_ArrayView:HandleEvent( nEvent, mp1, mp2 )
   DO CASE
      CASE nEvent == xbeMyLv_COLUMNCLICK
         RETURN ::OnColumnClick( mp1, mp2 )
bist zur Method die den Codeblock enthält

Code: Alles auswählen

METHOD DXE_ArrayView:OnColumnClick(nCol, oNmLv )
   IF VALTYPE( ::headerLbDown  ) == "B"
      eval(  ::headerLbDown , nCol, oNmLv , Self)
   ENDIF
RETURN NIL // default processing
 
erreichen tut man es nun aus Main Modul mit

Code: Alles auswählen

  ::oLW1:headerLbDown  := { | n, st | ::oLW1:Headersort( n ), SP_SortLeft(::oLW1:nSubScript) }
ich hoffe das ich das ich das einigermassen verständlich erkläre.
es ist nun mal ein Control was Xbase++ nicht hat also kommt einen das alles ungewohnt vor.

Alaska liefert uns mit den XbPart schon "fertige" Controls wo z.b. die Callback Slot alle schon definiert sind.
bei den native Controls muss ich alles erst definieren und einbauen also wenn was fehlen sollte ...

Rückmeldung erwünscht.
gruss by OHR
Jimmy
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: xbp_listview

Beitrag von peternmb »

Hallo Jimmy,

vielen Dank für deine sehr ausführliche Erklärung.
Leider reichen meine Xbase-Kenntnisse nicht aus, um das wirklich zu verstehen :( - vielleicht können wir etwas einfacher beginnen.
Ich habe das Codebeispiel leicht abgewandelt in mein Programm eingebaut.

Bisher werden in meinem Programm in einer Listbox alle Einträge meiner Datenbank in der unteren Bildschirmhälfte angezeigt, in der oberen Hälfte werden die Editierfelder (SLEs) zu der jeweiligen Zeile beim Klick darauf gefüllt.
Ich habe jetzt statt der Listbox das Listview dafür verwendet, das klappt hervorragend - die Anzeige ist genauso wie ich es gerne hätte.
Die Spaltenbreiten berechne ich prozentual, was bei allen Skalierungen super passt und ich mich darum nicht weiter kümmern muss.

Die Verknüpfung des Klicks auf eine Zeile mit dem Füller der SLEs bringe ich allerdings nicht hin.
Ich merke mir beim Füllen des Listviews zusätzlich die recno() des Datensatzes in einem kleinen Array (slv_array), um über die Zeile des Listviews direkt auf den betreffenden Datensatz zu kommen.

Ich verwende diesen Code, um die Zeilennummer bzw. die recno() des gewünschten Datensatzes zu erhalten, nur wie geht es weiter?

Code: Alles auswählen

// ---------------------------------------------------------------------------
static function OnListViewClick(oLv,lp)
local st := NMITEMACTIVATE():New()
st:_link_(lp,.F.)
//
satz=slv_array[st:iItem+1]
msgbox("Datensatz: "+str(satz,5,0))
//				
return NIL // default processing
Ich weiß nicht wie/wo ich deine Methoden einbinden soll.
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: xbp_listview

Beitrag von AUGE_OHR »

hi,
peternmb hat geschrieben: So, 10. Mär 2019 11:45 Die Verknüpfung des Klicks auf eine Zeile mit dem Füller der SLEs bringe ich allerdings nicht hin.
aus dem Grund habe ich die Function am Anfang der letzten Msg gehabt ;)

bei einer Listbox() bekommt man mit o:GetData() doch ein Array mit Nummern
nun nimmt man die Nummer aus dem Array und o:GetItem(nNr) um an den "Text" zu kommen.

---

die NMITEMACTIVATE Structure gibt dir ja nur Zahlen aber nichts an Buchstaben.
https://docs.microsoft.com/en-us/window ... emactivate

mit ::lv_GetItemText(nSel,nSub) holt man sich nun den "Inhalt" von einer Cell was ein String ist.
es bezieht sich dabei auf die Member ( VAR )

Code: Alles auswählen

  int    iItem;
  int    iSubItem;
die man vorher aufgefüllt hat.
für die "ROW" brauchst du nur das Ergebnis von o:iItem +1, die iSubItem haben die selbe "ROW"

! Note : Windows arbeitet Zero-based d.h. 0 ist der erste Eintrag

---

ich muss zugeben das ein "StableBlock" als Callback Slot fehlt.
Damit synchronisiere ich die ober Hälfte mit den XbpSLE wenn ich mich in einem XbpBrowse() bewege.

Code: Alles auswählen

   ::oBrowse:stableblock := { || Ref2Gets( ::aEditControls ) }
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: xbp_listview

Beitrag von Wolfgang Ciriack »

Wenn ich das ganze hier sehe, und dazu das Ergebnis, frage ich mich, warum man nicht ein XbpBrowse dafür nimmt ?
Gibt es Vorteile einer Listbox gegenüber einem Browse ????
Viele Grüße
Wolfgang
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: xbp_listview

Beitrag von AUGE_OHR »

moin,
Wolfgang Ciriack hat geschrieben: So, 10. Mär 2019 18:49 ... warum man nicht ein XbpBrowse dafür nimmt ?
ich hatte ja XbpQuickBrowse() erwähnt ...

wie schon gesagt ist der grosse Unterschied bei einem native Control das man alles selber machen muss.

der Vorteil von Listview ist das man viel mehr damit machen kann und es ein Original Windows Control ist.
das Listview wird nun von allen Sprachen unterstützt ... nur eben nicht von Xbase++

Nachteil : man muss alles erst mal lernen und eine eigene CLASS daraus machen.
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: xbp_listview

Beitrag von Jan »

Für mich ist ganz praktisch gesehen der Unterschied, das eine Listbox im Aufbau langsamer ist. Weil dort erst alle Elemente hinzugefügt werden müssen, was bei längeren Listen schon mal dauern kann. Während bei einem Browse auf eine vorhandene Datenquelle (dbf, Array) zugegriffen wird. Außerdem kann ich in einem Browse mehrere Spalten verwalten und unterschiedlich einfärben. Der Nachteil eines Browses ist das der wegen der größeren Flexibilität etwas umfangreicher zu konfigurieren ist.

Ob das jetzt ein natives Windows-Element ist oder nicht ist mir letztendlich vollkommen egal. Hauptsache es funktioniert und macht Einstellungen in der Windows-Konfiguration mit (z. B. Themes).

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: xbp_listview

Beitrag von AUGE_OHR »

Jan hat geschrieben: Mo, 11. Mär 2019 7:16 Für mich ist ganz praktisch gesehen der Unterschied, das eine Listbox im Aufbau langsamer ist. Weil dort erst alle Elemente hinzugefügt werden müssen, was bei längeren Listen schon mal dauern kann.
das macht Alaska mit o:AddItem() so und weil viele nichts anderes kennen wird das als Tatsache hingestellt [-X

siehe dir meine Session "pimp my Xb" an und du wirst sehen das man einer XbpListbox() auch "on-fly" ein ganzen Ordner Inhalt mit > 100000 Dateien (max. 32Kb für die Name) zuordnen kann.
Jan hat geschrieben:Während bei einem Browse auf eine vorhandene Datenquelle (dbf, Array) zugegriffen wird.
der DbSkipper() für DBF ist einfach nur Mist. Vor/Zurück bis man einen Datensatz findet ... das ist (ISAM) Steinzeit :roll:
Für Array / SQL ResutSet gibt es zum Glück XbpQuickBrowse() ... und die Konfiguration reicht meistens völlig aus.
Jan hat geschrieben:Ob das jetzt ein natives Windows-Element ist oder nicht ist mir letztendlich vollkommen egal. Hauptsache es funktioniert und macht Einstellungen in der Windows-Konfiguration mit (z. B. Themes).
wie schon gesagt sollte man über den Tellerrand von Alaska schauen und betrachten was die "anderen" als Datenquellen und "List"-Objecten verwenden.

---

ich finde es gut das Peter sich damit beschäftigt.
ich versuche auch ihn langsam an das Thema ran zuführen und nicht abzuschrecken.

Wir arbeiten mit Windows und alle XbParts (ausser XbpBrowse) beruhen auf Windows Controls.
Xbase++ "schirmt" und ja mit vielen von Windows ab ... aber da draussen gibt es noch viel mehr :!:
gruss by OHR
Jimmy
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: xbp_listview

Beitrag von peternmb »

Hallo,

ich muss ehrlich sagen "es ist mir zu kompliziert und ich werde es deshalb nicht weiter verfolgen".
Als Clipper-Hobbyprogrammierer denke ich da vermutlich immer noch zu prozedural. Da ich bisher in meinen eher kleinen Programmen ohne Klassencode ausgekommen bin, verstehe ich auch einfach das Zusammenspiel der verschiedenen Abläufe zu wenig.

Das listview kenne ich aus meinen Versuchen in der Android-Programmierung und setzte es dort sehr gerne zur schnellen und übersichtlichen Anzeige von Daten ein. Ich hatte gefofft, dass dieses Control unter Xbase ähnlich der normalen Listbox recht einfach zu verwenden wäre.
Da das nicht der Fall ist steht der notwendige (Lern-)Aufwand in keiner Relation zum Ergebnis.

Vielen Dank - vor allen Dingen an Jimmy - für die tolle Hilfe.
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: xbp_listview

Beitrag von Tom »

Hallo, Peter.

Wenn Du mit Clipper-Syntax arbeiten, Dir dennoch die GUI-Welten erobern willst, dann schau Dir mal Roger Donnays eXpress++ an. Das ist ein in Xbase++ verfasstes Framework, das die Verwendung aller XbParts und vieler anderer Dinge mit Clipper-ähnlicher Syntax erlaubt, und dabei quasi durch die Hintertür etwas über Klassen und Objekte vermittelt, ohne dass man (direkt) damit arbeiten muss.

Hallo, Jimmy.
und alle XbParts (ausser XbpBrowse) beruhen auf Windows Controls
Quatsch! Selbstverständlich beruht auch das XbpBrowse auf Windows Controls (bzw. -Elementen). Es gibt nur kein Browse als Windows-Control. Deshalb muss man es aus diversen Objekten zusammensetzen - wie hier geschehen. Einfach mal den Quellcode anschauen, der ist ja bei der ProfSub dabei.
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: xbp_listview

Beitrag von AUGE_OHR »

hi Tom,
Tom hat geschrieben: Di, 12. Mär 2019 11:22
und alle XbParts (ausser XbpBrowse) beruhen auf Windows Controls
Quatsch! Selbstverständlich beruht auch das XbpBrowse auf Windows Controls (bzw. -Elementen). Es gibt nur kein Browse als Windows-Control. Deshalb muss man es aus diversen Objekten zusammensetzen - wie hier geschehen. Einfach mal den Quellcode anschauen, der ist ja bei der ProfSub dabei.
Natürlich hast du Recht das es aus XbpStatic zusammen gestellt ist was ja Windows Controls sind.

Es ist aber, wie auch XbpTabpage(), eine CLASS die selbst gebaut ist und eben kein "echtes" Windows Control deren Beschreibung man bei MSDN findet.

---
@Peter

mit prozeduralem Cl*pper Style kommt man bei Windows nicht weit ...
Eine Windows App "agiert" nicht sondern "reagiert".

als Programmierer legt man nun fest "worauf" man reagiert und was für eine "Aktion" erfolgen soll.
das passiert meisten mit einem Codeblock mit dem man den passenden Callback Slot bestückt.

das Demo von Pablo ist leider mit Function aufgebaut und schlecht zu erweitern.
man sollte alle Function zur Method machen und eine CLASS daraus bauen.

die Function (und den Aufruf) OnListViewClick() würde ich zur Method o:GetData() machen was der Xbase++ Syntax entspricht.

Code: Alles auswählen

INLINE METHOD GetData(oLv,lp)
LOCAL aRow := {}
local st := NMITEMACTIVATE():New()
   st:_link_(lp,.F.)
   nRow := st:iItem +1 // für Xbase++
   AADD(aRow,nRow) 
RETURN  aRow
das würde wie eine Listbox() ein Array zurück geben.

bei dieser Version wäre das "o:GetItem" schon eingebaut

Code: Alles auswählen

INLINE METHOD GetItemText(oLv,lp)
LOCAL nRow,nCol, cRet := ""
local st := NMITEMACTIVATE():New()
   st:_link_(lp,.F.)
   nRow := st:iItem
   nCol := st:iSubItem
   // als zero-based übernehmen
   cRet := oLV:GetItem(nRow,nCol)
 RETURN cRet
hiermit bekommt man den "Inhalt" der Cell als String zurück.

p.s. Das Beispiel von Pablo ist NICHT für Multi-Select, also mehrere markierten Elemente, ausgelegt.
gruss by OHR
Jimmy
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: xbp_listview

Beitrag von peternmb »

Das Auswerten des listviews war nicht mein eigentliches Problem, ich hatte ja schon die recno() des markierten Datensatzes auf den ich zugreifen möchte. Mein Problem war dann der Zugriff auf die Datenbank.
mit prozeduralem Cl*pper Style kommt man bei Windows nicht weit ...
Eine Windows App "agiert" nicht sondern "reagiert".
Ja, das ist mir schon klar - mit den normalen Xbase-Controls komme ich mittlerweile auch ganz gut zurecht.
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: xbp_listview

Beitrag von AUGE_OHR »

hi,
peternmb hat geschrieben: Di, 12. Mär 2019 17:16 Das Auswerten des listviews war nicht mein eigentliches Problem, ich hatte ja schon die recno() des markierten Datensatzes auf den ich zugreifen möchte. Mein Problem war dann der Zugriff auf die Datenbank.
hast du deine XbpSLE() "gesammelt" ?

wenn man mit dem Formdesigner eine Maske mit XbpSLE() erzeugt wird jedes XbpSLE() in ein Array aufgenommen

Code: Alles auswählen

AADD(::aEditControls, oSLE1 )
das Array kann man nun benutzen um alle XbpSLE zu füllen/Upzudaten

Code: Alles auswählen

AEVAL(::aEditControls,{|o| o:SetData() } )
was bei mir das selbe ist wie

Code: Alles auswählen

Ref2Gets( ::aEditControls )
---

bei Listview hab ich eine Statusbar wo jeweils der aktuelle Name angezeigt wird ähnlich dem Explorer.
Der Notify Event dazu heisst LVN_ITEMCHANGED. daraus könnte man nun den "Stableblock" machen"
gruss by OHR
Jimmy
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: xbp_listview

Beitrag von peternmb »

Hallo,

ich muss dieses Thema erst einmal komplett zurückstellen da ich nach einer Netzhautablösung meine Aktivitäten am Rechner in der nächsten Zeit auf das Wichtigste beschränken muss.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: xbp_listview

Beitrag von Jan »

Autsch! Nicht gut.

Gute Besserung, und bloß keine Komplikationen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: xbp_listview

Beitrag von Martin Altmann »

Baldige Genesung!

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.
Antworten