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