XboListBox() Zeile markieren [Erledigt]
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
XboListBox() Zeile markieren [Erledigt]
Hallo,
ich baue eine Listbox auf, und habe den :itemMarked() mit einer Anzeige zusätzlicher Details belegt. Sobald man sich in der Liste bewegt werden passend zu dem jeweils markierten Satz die Details angezeigt.
Dumm ist nur, das direkt nach dem Aufbau der Liste zwar der erste Satz markiert ist, der Fokus liegt auch dadrauf (ich kann mich direkt mit den Cursortasten bewegen). Aber die Details werden nicht angezeigt. Dazu muß ich mich erstmal in der Liste bewegen. Das ist natürlich ärgerlich.
Wie bekomme ich das hin der Liste nicht nur zu sagen wo die stehen soll, und das die auch den Fokus hat, sondern dem Eintrag auch zu sagen "Fühl Dich bitte markiert und mache, was in :itemMarked() steht"?
Jan
ich baue eine Listbox auf, und habe den :itemMarked() mit einer Anzeige zusätzlicher Details belegt. Sobald man sich in der Liste bewegt werden passend zu dem jeweils markierten Satz die Details angezeigt.
Dumm ist nur, das direkt nach dem Aufbau der Liste zwar der erste Satz markiert ist, der Fokus liegt auch dadrauf (ich kann mich direkt mit den Cursortasten bewegen). Aber die Details werden nicht angezeigt. Dazu muß ich mich erstmal in der Liste bewegen. Das ist natürlich ärgerlich.
Wie bekomme ich das hin der Liste nicht nur zu sagen wo die stehen soll, und das die auch den Fokus hat, sondern dem Eintrag auch zu sagen "Fühl Dich bitte markiert und mache, was in :itemMarked() steht"?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 99 Mal
- Danksagung erhalten: 13 Mal
Re: XboListBox() Zeile markieren
Hallo, Jan -
aus dem Ärmel geschüttelt wurde ich auf :setData() tippen.
aus dem Ärmel geschüttelt wurde ich auf :setData() tippen.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: XboListBox() Zeile markieren
Hallo Georg,
:setData() hab ich da längst drin. Das stellt sicher das ich zum Start richtig stehe. Ändert aber leider nichts daran das :setMarked() beim Start nicht greift.
Jan
:setData() hab ich da längst drin. Das stellt sicher das ich zum Start richtig stehe. Ändert aber leider nichts daran das :setMarked() beim Start nicht greift.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: XboListBox() Zeile markieren
was vermutlich dein Problem ist wenn das o:SetData vor der Event Schleife ist ...Jan hat geschrieben::setData() hab ich da längst drin. Das stellt sicher das ich zum Start richtig stehe.
IMHO wird xbeLB_ItemMarked erst bei einer Änderung des 1st. Zustand gesendet wenn sich die Auswahl des Items ändert.
ich würde versuchen, per verzögerten Thread, die Markierung zu setzten.
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: XboListBox() Zeile markieren
Mach doch einfach ein Eval(oXbpListbox:ItemMarked) direkt vor dem Aufruf des Handlers.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: XboListBox() Zeile markieren
das Eval führt zwar aus was als Codeblock hinterlegt ist, aber optisch ändert es nicht.
Das habe ich mit Pushbuttons auch schon versucht ...
Es hilft nur ein PostAppEvent() aufzurufen, nachdem der Aufbau steht, aber bei einer Listbox müsste man auch markieren wo genau geklickt wurde.
Beim Button war das einfach.
Das habe ich mit Pushbuttons auch schon versucht ...
Es hilft nur ein PostAppEvent() aufzurufen, nachdem der Aufbau steht, aber bei einer Listbox müsste man auch markieren wo genau geklickt wurde.
Beim Button war das einfach.
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 99 Mal
- Danksagung erhalten: 13 Mal
Re: XboListBox() Zeile markieren
Hallo, Jan -
ich habe Dein Problem mal nachgestellt, und kann Dein Problem nicht nachvollziehen:
Das PostAppEvent() vor dem Event-Loop sorgt dafür, dass der Callback :itemMarked ausgeführt wird.
ich habe Dein Problem mal nachgestellt, und kann Dein Problem nicht nachvollziehen:
Code: Alles auswählen
#INCLUDE "AppEvent.ch"
#INCLUDE "Xbp.ch"
FUNCTION Main()
Local aPos, aSize, aEntries
Local mp1, mp2
Local nEvent
Local oXbp
aEntries := {}
aPos := {50, 50}
aSize := {200, 100}
oXbp := XbpLIstBox():new(, , aPos, aSize)
oXbp:tabStop := .T.
oXbp:itemMarked := {|uNIL1, uNIL2, self| ShowAddInfo(self, aEntries)}
oXbp:create()
oXbp:addItem("Eins")
oXbp:addItem("Zwei")
oXbp:addItem("Drei")
AAdd(aEntries, oXbp)
oXbp:setData(1)
aPos[1] += 10 + aSize[1]
aSize[2] := 40
oXbp := XbpStatic():new(, , aPos, aSize)
oXbp:type := XBPSTATIC_TYPE_TEXT
oXbp:create()
oXbp:configure()
AAdd(aEntries, oXbp)
PostAppEvent(xbeLB_ItemMarked, NIL, NIL, aEntries[1])
nEvent := xbe_None
WHILE nEvent <> xbeP_Close
nEvent := AppEvent(@mp1, @mp2, @oXbp)
oXbp:handleEvent(nEvent, mp1, mp2)
END
RETURN(.T.)
FUNCTION ShowAddInfo(oList, aEntries)
Local aItem
Local cText
aItem := oList:getData()
IF Empty(aItem)
aEntries[2]:caption := Space(50)
aEntries[2]:configure()
RETU(.F.)
ENDIF
cText := oList:getItem(aItem[1])
aEntries[2]:caption := PadR(cText, 50)
aEntries[2]:configure()
RETURN(.T.)
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: XboListBox() Zeile markieren
Hallo Tom und Georg,
danke für die Tipps. Werd ich heute Abend testen und dann Bescheid geben.
Jan
danke für die Tipps. Werd ich heute Abend testen und dann Bescheid geben.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: XboListBox() Zeile markieren
So, hab das mal ausprobiert.
Der Vorschlag von Tom gibt mir leider einen Laufzeitfehler in dem Codeblock von :itemMarked.
Der Vorschlag von Georg klappt. Ich hatte sowas auch schon getestet gehabt, aber nicht mit xbeLB_ItemMarked, sondern mit Cursortasten - weil die Anzeige eben dann passte wenn ich damit gearbeitet hab. Nur im PostAppEvent klappte das nicht.
Danke für all Eure Gedanken und Vorschläge.
Jan
Der Vorschlag von Tom gibt mir leider einen Laufzeitfehler in dem Codeblock von :itemMarked.
Der Vorschlag von Georg klappt. Ich hatte sowas auch schon getestet gehabt, aber nicht mit xbeLB_ItemMarked, sondern mit Cursortasten - weil die Anzeige eben dann passte wenn ich damit gearbeitet hab. Nur im PostAppEvent klappte das nicht.
Danke für all Eure Gedanken und Vorschläge.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.