Listbox manipulieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Listbox manipulieren

Re: Listbox manipulieren

von hawe » Di, 11.12.2012 21:15

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

Re: Listbox manipulieren

von juetho » Di, 11.12.2012 17:53

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:

Code: Alles auswählen

oShape = oForms.getByName("Tabelle3")
Jürgen

Re: Listbox manipulieren

von hawe » Di, 11.12.2012 17:47

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

von Stephan » Di, 11.12.2012 15:46

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

von hawe » Di, 11.12.2012 15:13

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

von Stephan » Di, 11.12.2012 14:08

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

von hawe » Di, 11.12.2012 13:49

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

von Stephan » Di, 11.12.2012 13:30

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

Listbox manipulieren

von hawe » Di, 11.12.2012 12:18

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

Nach oben