Seite 1 von 1
Listbox manipulieren
Verfasst: Di, 11.12.2012 12:18
von hawe
Hallo zusammen,
ich hab mir einen Dialog mit einer Listbox zusammen gebaut. In die Listbox werden die Namen einiger Objekte(Grafiken, Textboxen) der Drawpage eingelesen und not Visible geschaltet. Der Benutzer klickt durch Auswahl in der Listbox diese Objekte sichtbar.
Ich möchte nun die abgearbeiten Objekte in der Listbox irgenwie kenntlich machen. Mein Plan war dem Nameneintrag zu verändern - ein Zeichen voran zu stellen. Das führt zu Fehlermeldungen.
Hat jemand einen Tipp für mich, wie das Kenntlichmachen von Listeneinträgen gebacken bekomme?
HW
Re: Listbox manipulieren
Verfasst: Di, 11.12.2012 13:30
von Stephan
Ich fürchte darauf kann man schwerlich anworten ohne das Du die 'Begleitumstände' genauer erklärst weil:
1.
augenscheinlich weist Du wie man prinzipiell eine Listbox mit Einträgen bestückt (ich denke auch per Code denn Du sprichst von "eingelesen")
2.
obwohl Du 1. weißt tritt ein Problem bei der Andersbestückung auf (mehr ist ja ein Vorherstellen bestimmter 'Markierungen' nicht), nur Welches soll das sein?
Gruß
Stephan
Re: Listbox manipulieren
Verfasst: Di, 11.12.2012 13:49
von hawe
Hm,
reicht es, wen ich sage, ich möchte die Listeneinträge, die geklickt oder ausgewählt wurden irgendwie Kennzeichnen.
Es soll erkennbar sein, welche Listeneinträge schon abgearbeitet wurden = Haken dran oder Farbe setzen oder...
Re: Listbox manipulieren
Verfasst: Di, 11.12.2012 14:08
von Stephan
reicht es, wen ich sage [...]
mir zumindest nicht, denn ich verstehe das grundsätzliche Problem nicht, denn nach Deiner eigenen Aussage ist doch klar das Du weißt wie mal Listeneinträge zuweist und es trotzdem eion Problem gibt, nur Welches?
z.B.:
Du hast die Listeneinträge
aaa
bbb
ccc
zugewiesen, nun ist offensichtlich überhaupt kein anderes Vorgehen nötig um z.B. die Listeneinträge
x_aaa
bbb
ccc
zuzuweisen, wobei "x_aaa" damit der markierte Eintrag wäre.
Also wo ist das Problem? Ohne das zu verstehen kann ich nichts Richtiges antworten.
Es sei denn Du willst wörtlich einen Haken setzen oder die Farbe der Einträge ändern, denn derartige 'Markierungen' gehen meines Wissens hier nicht (In z.B. VB ginge Haken setzen, das ist mir bekannt)
Allerdings schriebst Du ja bereits selbst:
Mein Plan war dem Nameneintrag zu verändern - ein Zeichen voran zu stellen. Das für zu Fehlermeldungen.
und das entspricht ja meinem Vorschlag ein "x_" voranzustellen, nur verstehe ich dann eben nicht welchen Fehler das auslösen sollte.
Gruß
Stephan
Re: Listbox manipulieren
Verfasst: Di, 11.12.2012 15:13
von hawe
Alles auf Null...
Ich habe eine Listbox mit Einträgen, ok?
Jetzt klickt der Anwender auf eine Eintrag der Listbox, ok?
Dieser Eintrag soll nun so verändert werden - dauerhaft, dass der Anwender sieht, dass er den Eintrag angeklickt hat, ok?
Code: Alles auswählen
oListboxModel.StringItemList(xx) = "oder was immer ich versucht habe ist scheibgeschützt"
Änderungen an den Items der Listbox werden schlicht ignoriert...
Ich bin jetzt dazu übergegangen einen Listeintrag raus zu nehmen und neu einzufügen. Allerdings gefällt mir der Code nicht, da eine Änderung der Liste einen neuen StatusEvent auslöst, denn ich nicht brauchen kann und mittels BreakEvent abbreche:
Code: Alles auswählen
Dim oDoc AS Object
Dim oForms AS Object
Dim oShape AS Object
Dim oDlg AS Object
Dim oCtrl AS Object
Dim oSheet AS Object
Sub Click_Listfeld( MouseEvt )
Dim j as Integer
If EventBreak then Exit Sub
' ps= myctrl.selectItemPos(0,true)
' oCtrl.selectedItemPos & " : " & oCtrl.selectedItem
oForms = oSheet.drawpage
for j = 0 to oForms.Count - 1
oShape = oForms.getByIndex(j)
if oShape.Name = box( oCtrl.selectedItemPos) then j=oForms.Count+1
next
'msgbox oCtrl.dbg_methods
oCtrl.Model.removeItem(MouseEvt.Selected,0)
oShape.visible = not oShape.visible
j = MouseEvt.Selected
if oShape.visible then
oCtrl.addItem(MARK & Box(j),j)
else
oCtrl.addItem(Box(j),j)
End If
EventBreak = true
oCtrl.selectItemPos(j, true)
EventBreak = false
End Sub
Re: Listbox manipulieren
Verfasst: Di, 11.12.2012 15:46
von Stephan
Ich habe eine Listbox mit Einträgen, ok?
Jetzt klickt der Anwender auf eine Eintrag der Listbox, ok?
Dieser Eintrag soll nun so verändert werden - dauerhaft, dass der Anwender sieht, dass er den Eintrag angeklickt hat, ok?
ja, so verstand ich das.
Änderungen an den Items der Listbox werden schlicht ignoriert...
weiß ich nicht, aber merkst Du das das eine völlig andere Aussage ist als bisher (oder nicht und es gibt doch eine Fehlermeldung?), da wahr nämlich die Rede von:
Das für zu Fehlermeldungen.
und darauf habe ich mich gestützt, denn ich habe das Ganze natürlich konkret durchprobiert ehe ich geantwortet habe:
Code: Alles auswählen
Dim MAK_bib As Object
Dim dialog As Object
Dim akt
Sub Start_Dia()
BasicLibraries.LoadLibrary("Standard")
DialogLibraries.LoadLibrary("Standard")
MAK_bib = DialogLibraries.Standard.Dialog1
dialog = CreateUnoDialog(MAK_bib)
eintraege = Array("aaa","bbb","ccc")
dialog.Model.getByName("ListBox1").StringItemList = eintraege()
dialog.execute()
End Sub
Sub selektieren()
if akt = 1 Then
akt = 0
Exit Sub
End if
x = dialog.Model.getByName("ListBox1").StringItemList
For i = 0 To Ubound(x())
If x(i) = dialog.getControl("ListBox1").selectedItem AND Left(dialog.getControl("ListBox1").selectedItem, 2) <> "x_" Then
x(i) = "x_" & x(i)
x1 = x(i)
akt = 1
End If
Next i
dialog.Model.getByName("ListBox1").StringItemList = x()
dialog.getControl("ListBox1").selectItem(x1, True)
End Sub
Ich bin jetzt dazu übergegangen einen Listeintrag raus zu nehmen und neu einzufügen.
ja, so dachte ich. (bzw. ich dachte, und nutze in meinem Code, die ganze Liste, das ist aber nur ein Detail, zumal Dein Weg der naheliegendere ist)
Allerdings gefällt mir der Code nicht, da eine Änderung der Liste einen neuen StatusEvent auslöst, denn ich nicht brauchen kann und mittels BreakEvent abbreche:
Dann kann ich Dir nicht weiterhelfen.
Gruß
Stephan
Re: Listbox manipulieren
Verfasst: Di, 11.12.2012 17:47
von hawe
Hm,
in meinem ersten Versuchen ListItems zu ändern gab es Fehler. Welchen Pfad ich da gebaut habe bring ich nicht mehr zusammen. Kann auch sein, dass ich von OO zu LO gewechselt hab. OO macht wieder neue Fehler an dem Code, wie er in LO gelaufen ist.
Dann lass ich das mal so...
BTW:
oForms = oSheet.drawpage
oShape = oForms.getByIndex(j)
würde ich noch einen Weg suchen die drawpage Items per name abzuholen.
Hast Du einen Vorschlag dazu?
Re: Listbox manipulieren
Verfasst: Di, 11.12.2012 17:53
von juetho
hawe hat geschrieben:würde ich noch einen Weg suchen die drawpage Items per name abzuholen.
Hast Du einen Vorschlag dazu?
Wie wäre es damit:
Jürgen
Re: Listbox manipulieren
Verfasst: Di, 11.12.2012 21:15
von hawe
Tja,
das wäre logisch, wenn es so wäre...
ist aber nicht so und ich hätte mir diese Frage gespart

BTW: Das ein DrawPage-ItemTabelle3 heißt wäre auch sehr ungewöhnlich...