Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   In einer ListBox einen Eintrag suchen bzw. Eintrag ändern (https://www.delphipraxis.net/63563-einer-listbox-einen-eintrag-suchen-bzw-eintrag-aendern.html)

jeany06 20. Feb 2006 21:25

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Flink studiert und gefunden, ist sehr sehr sehr sehr sehr.... weit weg,aber nette Stadt-Page.
Werde nun die Änderungsfunktion probieren. Habe nochmals recht vielen lieben Dank!!! :wink:

jeany06 20. Feb 2006 21:59

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Kleine Verständnisfrage, bei der Änderungsfunktion, lasse ich doch die Listbox nur nach einer selektierten Zeile suchen, die ich dann in das Editfeld legen lasse um Änderungen vornehmen zu lassen oder muss sie wieder komplett durchsucht werden?

leddl 20. Feb 2006 22:12

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Zitat:

Zitat von jeany06
Kleine Verständnisfrage, bei der Änderungsfunktion, lasse ich doch die Listbox nur nach einer selektierten Zeile suchen, die ich dann in das Editfeld legen lasse um Änderungen vornehmen zu lassen oder muss sie wieder komplett durchsucht werden?

Hast du denn inzwischen MultiSelect deaktiviert? Dann kannst du direkt per ListBoxText.ItemIndex auf das markierte Item zugreifen (ListBoxText.Items[ListBoxText.ItemIndex]).
Sollte MultiSelect noch aktiviert sein, mußt du tatsächlich die Items in der ListBox durchgehen und mit ListBoxText.Selected[index] prüfen, ob das entsprechende Item ausgewählt ist. Allerdings dürfte für eine Änderungsfunktion wie du sie hast MultiSelect relativ unsinnig sein, da du ja nie wissen kannst, welches Element als letztes markiert wurde (und damit in deinen Editfeldern angezeigt wird)

Aber wie gesagt: Ich würde dir für die Darstellung sehr zur ListView raten, damit kannst du sehr einfach die einzelnen Datenkomponenten trennen (mußt also nicht diese Stringfrimeleien machen) und damit auch eine effektivere Suche (zB nach einzelnen Kriterien) realisieren.

jeany06 21. Feb 2006 20:27

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Hi,

also MultiSelected habe ich deaktiviert. Deinen Ratschlag bereits gestern umgesetzt. Über ListView konnte ich mich noch nicht schlau lesen, in der Schule hatte ich es nicht. Ist daher völlig neu, und das 'Stringfrimeleien' hat uns unsere Lehrerin beigebracht. Zudem habe ich diese göttliche Programmiersprache weder ordentlich beigebracht noch studiert, daher werden noch eine Lücken zu füllen sein. Werde mal sehen wei weit ich heute komme, evt. hast du mich dann morgen wieder an der Backe...sorry.... lg jeany

leddl 21. Feb 2006 20:36

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Kein Problem, stell deine Fragen, wenn du welche hast. Dafür is das Forum ja da. :lol:

jeany06 21. Feb 2006 22:16

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Also ich habe jetzt erstmal die procedure bereinigt, Schleife entfernt und nebenbei versucht ListView zu erlesen. Zudem deinen Befehl eingefügt und Programm ausgeführt : Button kann betätigt werden führt aber nicht den Effekt aus, dass die markierte Zeile im Editfeld landet. Muss ich etwas weiteres beachten?

leddl 21. Feb 2006 22:24

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Na gut, das mußt du natürlich selber erledigen. Woher sollen deine Editfelder denn wissen, daß sie gefüllt werden sollen, geschweige denn mit was. :zwinker:
Das war es, was ich mit "Stringfrimeleien" meinte, du mußt nämlich jetzt das markierte Element der ListBox auseinandernehmen und die Einzelteile in die entsprechenden Editfelder einfügen.
Dafür solltest du dir Delphi-Referenz durchsuchenPos, Delphi-Referenz durchsuchenCopy und evtl. Delphi-Referenz durchsuchenDelete genauer anschauen.

jeany06 21. Feb 2006 22:30

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Danke, das mit den Editfeldern ist mir bewusst, bin ja nicht ganz b...,
was ich gestern von dir gelernt hatte konnte ich heute gleich einem Mitschüler vermitteln, der hatte das gleiche Problem und ist nun glücklich....
Also, ich werde nun tüffteln.
Besten Dank :thumb:

jeany06 23. Feb 2006 16:23

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Hallo leddl, ich bin fast fertig. Bräuchte aber für eine Kleinigkeit deine Hilfe. Die Änderungsfunktion habe ich so abgeändert, dass wenn der Benutzer eine gewünschte Zeile in der ListBox anklickt, diese zurück in die obigen Editfelder gelegt wird. Dann können Änderungen vorgenommen werden. Wenn man danach den Änderungsbutton drückt gehen die Daten zurück in die Listbox. Jetzt meine Frage: beim zurückschreiben wird anstelle die markierte Zeile zu überschreiben eine neue eingefügt. Was müsste geändert werden, damit die geänderten Daten die alten überschreibt, sprich in der Zeile landet welche zuvor angeklicht wurde? Lg jeany

leddl 23. Feb 2006 16:27

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Na du darfst natürlich nicht den selben Button benutzen. ;) Denn hinter dem steht ja Code, der eben ein neues Element einfügt. Um ein vorhandenes zu aktualisieren, mußt du ihm einfach deinen String zuweisen.
Delphi-Quellcode:
ListBox1.Items[IrgendeinIndex] := IrgendeinString;

jeany06 23. Feb 2006 16:36

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Verstehe nicht ganz,ich fordere den Benutzer auf per Klick auf eine Zeile in der Listbox für das Ändern zu markieren. Ist das passiert, wird über die procedure Listbox, die Zeile in die Editfelder gelegt. Dann wird vom Benutzer geändert und erst dann wird der Button Ändern benutzt. Der die Zeile dann in die Listbox zurück führt. Jedoch als neue Zeile und nicht die alte markierte überschreibt.

Matze 23. Feb 2006 16:37

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Moin, nur ein kleiner ergänzender Tipp, mhr verrate ich nicht, denn man lernt am besten durch Herumprobieren. :stupid:

Du fügst ja per Items.Add beim Ändern ein Item hinzu, das darfst du natürlich dann nicht machen, da du keinen neuen Eintrag hinzufügen, sondern einen bestehenden ändern möchtest. Merke dir den ItemIndex (evtl. ändert er sich auch nicht) und überschreibe diesen beim Ändern wieder, wie es Axel geschrieben hat:

Delphi-Quellcode:
ListBox.Items[IndexVar] := 'Geänderter Text';

jeany06 23. Feb 2006 18:03

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
So die Herren, Programm ist fertig. :dance: + :party: Ging aber einfacher, ohne eure Vorschläge über das Löschen der markierten Zeile nach Einlagerung in die Editfelder.
Möchte mich jetzt nochmals recht herzlich bei euch bedanken. Macht weiter so!!!! :thumb: Lg jeany
Bye :hi:

leddl 23. Feb 2006 18:09

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
:lol: Das ist aber mit Kanonen auf Spatzen geschossen. ;) Stell dir vor, der User markiert nur eine Zeile, um sich den Inhalt anzuschauen und beschließt danach, einen neuen Eintrag hinzuzufügen. Er ändert also die Daten entsprechend und will sie hinzuügen und *schwuppdi* ist der alte Eintrag weg. Und so viel komplizierter ist der Weg über einen 2. Button auch nicht. ;)

jeany06 23. Feb 2006 18:18

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Ok, du hast gewonnen. Nicht überlegt, aber nach deiner Schilderung und erfolgter Probe logisch und einsichtlich. Bin aber mit meinem 'Delphi-Latein' echt am Ende. Zudem ist ja jeztt auch durch die OnKlick-Eigenschaft ein Hindernis für das Löschen einer Zeile aufgetreten, weil jetzt springen ja alle Elemente in die Editfelder sobald nur eine Zeile in der Listbox markiert ist.
Da war wohl die Freude ein wenig zu früh, ärgerlich.... nun gut, gebe nicht auf!!!

leddl 23. Feb 2006 18:23

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Zitat:

Zitat von jeany06
Bin aber mit meinem 'Delphi-Latein' echt am Ende.

Warum? Du mußt doch einfach nur einen 2. Button einfügen, der dann eben ein bereits vorhandenes Item updatet.

jeany06 23. Feb 2006 18:39

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Mir fehlt echt das Verständnis, weil, vielleicht beschreibe ich es auch zu blöd...
Ich habe die Listbox auf OnClick gestellt, beim anklicken gehen alle Elemente aus der Zeile in die oberen Editfelder, dann kann der User ändern, ohne bis hierher einen Button gedrückt zu haben. Erst wenn er alle Korrekturen vorgenommen hat drückt er den Button um die Elemente der Zeile zurück in die Listbox zu bringen. Was soll der zweite Button nun????? :wall: Daher dachte ich und es klappte ja auch, dass im gleichen Atemzug wo der Button gedrückt wird die alte markierte Zeile gelöscht wird.
Deshalb 'am Ende'.

leddl 23. Feb 2006 18:48

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Aber der User soll doch gleichzeitig auch die Möglichkeit haben, neue Elemente hinzuzufügen, oder? Daher mußt du eben beide Fälle (markiertes Element ändern, neues Element hinzufügen) gesondert betrachten.
Wenn du jetzt also einfach in deinem OnClick das Löschen des markierten Elements auschaltest, sollte doch alles funktionieren.
Ein Klick auf ein Item -> Editfelder werden gefüllt
Klick auf Ändern -> Übernahme der Daten in das markierte ListBox-Item
Klick auf Hinzufügen -> Neues Element mit den Daten aus den Editfeldern.

Das Problem beim Arbeiten mit nur einem Button für Ändern/Hinzufügen besteht darin, daß du ja eigentlich nur über ein markiertes Item erkennst, ob geändert oder hinzugefügt werden soll. Aber wer sagt denn, daß ein User nicht ein Element markiert hat, aber trotzdem ein neues hinzufügen will? :zwinker:

Sollte ich dein Programm falsch verstanden haben, korrigiere mich, aber so wie ich es gesehen habe, soll das ganze so eine Art Adressverwaltung sein, oder? Daher braucht der User eben beide Funktionalitäten. Wenn du eine einfachere Lösung findest, die auch narrensicher ist, verrate es mir, das könnte ich auch immer gut gebrauchen :mrgreen:

jeany06 23. Feb 2006 18:54

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Aber der Hinzufügen-Button existiert und funktioniert allein sowie im Programm. Der Änderungsbutton, räumt doch auch gleich, wenn die Zeile zurück aus den Editfeldern in die Listbox geht die Editfelder, so dass der Benutzer dann sofort wieder neue Daten eingeben kann, also hinzufügt. Der einzige Nachteil ist, das blöde onklick der Listbox, weil so keine separate Zeile mehr gelöscht werden kann, da bei jedem klick, die Zeile in die Editfelder nach oben wandert, ohne die Möglichkeit einer sinnlichen Betrachtung.
Und dich zu toppen ist schier unmöglich!!!!! Glaube solch geniales Meisterstück gelingt mir nicht....

leddl 23. Feb 2006 19:03

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Zitat:

Zitat von jeany06
Aber der Hinzufügen-Button existiert und funktioniert allein sowie im Programm. Der Änderungsbutton, räumt doch auch gleich, wenn die Zeile zurück aus den Editfeldern in die Listbox geht die Editfelder, so dass der Benutzer dann sofort wieder neue Daten eingeben kann, also hinzufügt. Der einzige Nachteil ist, das blöde onklick der Listbox, weil so keine separate Zeile mehr gelöscht werden kann, da bei jedem klick, die Zeile in die Editfelder nach oben wandert, ohne die Möglichkeit einer sinnlichen Betrachtung.

Du könntest natürlich auch über onDblClick (also bei einem Doppelklick) lösen. Allerdings finde ich es dem User ggü nicht richtig, schon alleine durch Klick oder Doppelklick ein Element zu löschen. Sowas passiert auch mal aus Versehen. ;)
Zitat:

Zitat von jeany06
Und dich zu toppen ist schier unmöglich!!!!! Glaube solch geniales Meisterstück gelingt mir nicht....

:lol: Glaub mir, so gut bin ich nun auch wieder nicht :lol:

jeany06 23. Feb 2006 19:10

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
DU BIST GENIAL !!!!!!!!!
Die Lösung war so EASY!!!!!!!!
Ich setze die Listbox auf Doppelklick, damit kann ich zuvor einzelne Zeilen per OneKlick löschen. Klar, den Benutzer werde ich noch per Caption warnen, aber so ist es jetzt echt schick und super toll!!!!!
Könnte vor Freude in die Luft springen!!!!!!!!
DDDDDDDDDDDDDDDDDAAAAAAAAAAAAAAAAAAAAAANNNNNNNNNNN NNNNNNNNNNNNNNKKKKKKKKKKKKKKKKKKKKKEEEEEEEEEEEEEEE EEEE :-D

leddl 23. Feb 2006 19:18

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Dir ist aber schon klar, daß du so, wie du es jetzt beschrieben hast, wieder vor einem Problem stehen wirst? ;)
Aber vielleicht hast du dich ja nur verschrieben.
Deeeeenn:
Bei jedem Doppelklick wird auch automatisch das onClick-Ereignis ausgelöst. ;) Das heißt für dich: Wenn du weiterhin im onClick die Items löschst, bist du genauso schlau wie zuvor :zwinker:

jeany06 23. Feb 2006 19:26

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Diess Mal nicht. Denn der User bekommt per Label die Aufforderung zum Ändern beschrieben, d. h. 'zum ändern entsprechende Zeile per Doppelklick markieren', dann läuft erst die Listboxprocedure, der Transport der markieten Zeile in die Editfelder. Benutzer ändert, drückt dann den Button ändern, alte Zeile wird gelöscht neue Zeile springt in die Listbox, Editfelder werden zugleich geräumt und Daten werden im Verzeichnis gespeichert. Jetzt kann Benutzer sofort wieder Daten hinzufügen oder per OneKlick, ebenso per Label erklärt, eine Zeile löschen ohne das die Listboxprocedure anspringt und die Zeile in die Editfelder bringt. Daher TOLL bleibt, und dickes dickes Danke und hoffentlich kein ABER mehr, ich bin so froh fertig zu sein. Alle Ehre für deine Geduld und Hilfeleistungen. :dancer:
lg jeany

leddl 23. Feb 2006 19:39

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Um deine Erklärung zusammenzufassen (ich habs nich so recht verstanden):
Bei einem einfachen Klick löschst du eine Zeile, bei einem Doppelklick gibst du dem User die Möglichkeit, die Zeile zu ändern? :gruebel:

jeany06 23. Feb 2006 19:53

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
LANGSAM:

Die Listbox wird geladen per Button.
Dann kann, wenn der Benutzer mag eine Zeile per Klick markieren, drückt Button 'Zeile löschen' = Zeile gelöscht.
Will Benutzer Daten ändern, dann soll Benutzer einen Doppelklick auf die entsprechende Zeile ausführen, Elemente springen in dei Editfelder, er ändert, drückt Button 'Einträge ändern', Zeile springt zurück in LIstbox, Editfelder werden gelöscht, neues Verzeichnis wird gespeichert.
Möchte Benutzer weitere Daten in das Verzeichnis bringen, füllt er die Eidtfelder oben aus, drückt dann Button 'HInzufügen' und Elemente springen in die Liste, Editfelder leeren sich.
Alles prima!!!
Eins wäre noch, wenn bei der Suchfunktion das Element was eingegeben wurde nicht in der Listbox ist, werde ich noch per ShowMessage oder auf einem Label ausgeben lassen, Element im Verzeichnis nicht vorhanden.
So hoffe alle Unklarheiten beseitigt zu haben. Bin manchmal echt ein Chaot, sorry für dies....
lg jeany

leddl 23. Feb 2006 20:01

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Zitat:

Zitat von jeany06
LANGSAM:

Die Listbox wird geladen per Button.
Dann kann, wenn der Benutzer mag eine Zeile per Klick markieren, drückt Button 'Zeile löschen' = Zeile gelöscht.
Will Benutzer Daten ändern, dann soll Benutzer einen Doppelklick auf die entsprechende Zeile ausführen, Elemente springen in dei Editfelder, er ändert, drückt Button 'Einträge ändern', Zeile springt zurück in LIstbox, Editfelder werden gelöscht, neues Verzeichnis wird gespeichert.
Möchte Benutzer weitere Daten in das Verzeichnis bringen, füllt er die Eidtfelder oben aus, drückt dann Button 'HInzufügen' und Elemente springen in die Liste, Editfelder leeren sich.
Alles prima!!!

Ah, du hast also doch einen Button fürs Ändern und einen fürs Hinzufügen. Aber OK, ich habs jetzt verstanden. ;)
Zitat:

Zitat von jeany06
Eins wäre noch, wenn bei der Suchfunktion das Element was eingegeben wurde nicht in der Listbox ist, werde ich noch per ShowMessage oder auf einem Label ausgeben lassen, Element im Verzeichnis nicht vorhanden.
So hoffe alle Unklarheiten beseitigt zu haben. Bin manchmal echt ein Chaot, sorry für dies....
lg jeany

In der Suchfunktion wird ja der ItemIndex der ListBox auf das gefundene Item gesetzt. Wird nichts gefunden, ist der ItemIndex -1. Das müßtest du also nach der Schleife nur abfragen und deine Message ausgeben.

jeany06 23. Feb 2006 20:15

Re: In einer ListBox einen Eintrag suchen bzw. Eintrag änder
 
Mir fehlen die Worte um auszudrücken, wie glücklich ich gerade bin! Sofort umgesetzt, funktioniert. HAPPY hoch 10. .... gibt nicht mal Smileys welche gerade platzen, daher :firejump:
Einfach supi, irre......


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz