Autor Beitrag
nooK!E
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 19.12.03 19:09 
hallo!

ich habe folgendes problem, ich möchte aus einer TListBox abfragen, welches item markiert ist, um den entsprechenden eintrag x in ein Edit-Feld zu übernehmen.
ich weiß bisher nur, wie ich den eintrag an einer bestimmten stelle in das edit feld übernehmen kann (Edit1.Text:=Listbox1.Items [0]).

danke schon im voraus!
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 19.12.03 19:12 
Hallo,

also, schau dir mal in der hilfe die eigenschaft TCustomListBox.Selected an. Das sollte dir eigentlich weiterhelfen.

Gruß und frohes Fest
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 19.12.03 19:17 
Hallo und herzlich Willkommen im DF!

Wenn bei der ListBox MultiSelect=False ist, dann wird Dir auch die Eigenschaft ItemIndex sicher weiterhelfen!

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
nooK!E Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 19.12.03 19:27 
danke schon mal, ich hab mir die hilfethemen mal durchgelesen, aber verstanden hab ich sie nicht so ganz... (ich programmier noch nicht lange mit delphi)

könnt ihr mir mal konkret das entsprechende stück im quelltext schreiben bitte?

also ich habe eine ListBox1 und eine ListBox2 und ein Edit1 und ein Edit2. aus ListBox1 soll ausgelesen welcher eintrag markiert ist und der eintrag dann in Edit1 übernommen werden und der eintrag in der ListBox2 mit der entsprechenden nummer soll in Edit2 stehen.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 19.12.03 19:50 
Hallo!

Der Lerneffekt, wenn man etwas selbst programmiert, ist sehr viel höher, als wenn man etwas vorgesetzt bekommt. Daher hier erst einmal nur eine Erklärung:

  1. zu ItemIndex: die Items in einer ListBox sind durchnummeriert. Von 0 bis Anzahl-1. ItemIndex gibt die Nummer des markierten Items zurück. Dies macht nur Sinn, wenn die ListBox so eingestellt ist, dass nur ein Item markiert sein kann: MultiSelect=False
  2. zu Selected: dies ist ein Array (wenn nicht bekannt, siehe bei den Tutorials hier im Forum), welches genauso viele Elemente hat, wie die ListBox Einträge hat. Selected speichert, welche Einträge der ListBox markiert sind. Ist z.B. das 3. Item markiert, dann gilt: Selected[2] = true (da die Nummerierung bei 0 beginnt).

Mfg
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
nooK!E Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 19.12.03 20:30 
wenn ich jetzt selected mit einer variable belege (muss ich das überhaupt machen??)

Listbox1.Selected [m];

wie kann ich die variable dann zur ausgabe in einem edit feld verwenden?

oder ist der ansatz komplett falsch?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 19.12.03 20:50 
Hallo!

Selected ist bereits deklariert. Aber der Ansatz mit dem Selected[m] ist schon richtig. Du könntest z.B. so abfragen, ob das Item mit Index m markiert ist.
ausblenden Delphi-Quelltext
1:
if listbox1.selected[m] then ShowMessage('Markiert!');					

oder Du kannst es dann in ein Edit schreiben
ausblenden Delphi-Quelltext
1:
if listbox1.selected[m] then edit1.text := listbox1.items[m]					


Aber mal 'ne andere Frage: wenn Du ein Edit-Feld verwendest, dann kann man in Deiner Listbox doch sowieso nur ein Item markieren (mehr geht in ein Edit ja nicht rein). Dann versuch es doch mal mit ItemIndex. Das ist in dem Fall viel besser.

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
nooK!E Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 19.12.03 20:55 
wie funktioniert das denn genau damit?
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Fr 19.12.03 20:57 
ausblenden Delphi-Quelltext
1:
showmessage(listbox1.items[listbox1.itemindex]);					
nooK!E Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 19.12.03 21:05 
supi, vielen vielen dank, damit klappts!
nooK!E Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 19.12.03 22:46 
Hab jetzt noch ein Problem... nämlich mit einem button der den markierten eintrag in der ListBox1 löscht und den eintrag mit der entsprechenden nummer in der ListBox2. mit folgendem code funktioniert das irgendwie nicht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button2Click(Sender: TObject);
begin
  ListBox1.Items.Delete(listbox1.ItemIndex);
  ListBox2.Items.Delete(Listbox1.ItemIndex);
end;
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 19.12.03 22:50 
Es macht wenig Sinn, dass Du in ListBox2 den Eintrag löschst, der die Nummer des in ListBox1 markierten Eintrags hat.

(Ich habe nicht den Eindruck, dass Du Dich wirklich mit dem Ganzen beschäftigt hast.)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
nooK!E Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 19.12.03 22:52 
doch, genau das will ich damit bezwecken.
die zweite listbox ist für den benutzer unsichtbar und deswegen kann er nicht separat einträge daraus löschen. die nicht mehr gebrauchten einträge sollen aber trotzdem gelöscht werden, deswegen hab ich das so versucht...
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 19.12.03 22:58 
Okay. Dann überleg' dochmal:

Du möchtest, dass wenn in LB1 der Eintrag Nr.5 markiert ist, in beiden LBs der Eintrag mit Nummer 5 gelöscht wird.
Nun löschst Du aber den Eintrag zuerst in LB1 und fragst hinterher nochmal den Eintrag mit ItemIndex ab (wenn Du ihn in LB2 löschen willst). Klar, dass dann nicht mehr der richtige Eintrag markiert ist: er ist gar nicht mehr da.

//edit: eine unsichtbare LB ist nur selten sinnvoll. Würde es nicht auch eine StringList tun?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
nooK!E Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 19.12.03 23:00 
stimmt... klingt logisc :D h danke.
wie gesagt, ich bin noch anfänger und es fällt mir manchmal schwer auf die richtige reihenfolge zu achten... :oops:
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 19.12.03 23:24 
Kein Problem. Mal über 'ne StringList nachgedacht?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
nooK!E Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Sa 20.12.03 00:18 
würde sicherlich auch gehen, aber ich habs jetzt schon mit der versteckten zweiten listbox gemacht und das funktioniert jetzt auch problemlos.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 20.12.03 11:43 
Das ist aber sehr ... unelegant. Eine StringList könntest Du doch im Prinzip genauso nutzen. Und schöner wäre es allemal.
Außerdem sollte man mit solchen Sachen, grafische Komponenten für nicht-grafischen Dinge zu entfremden, gar nicht erst anfangen. Hinterher gewöhnt man sich dran.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
kab
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 23.11.04 11:08 
Dieser Treat hat mir soweit geholfen das ich diesen Code entwickelt habe.
ieleicht bringt es Jemanden mal weiter

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
var i:word;
begin
For i := 0 To UserListe.Items.Count-1 Do
    if UserListe.selected[i] then ShowMessage(UserListe.Items.Strings[i]);
end;