Delphi-PRAXiS

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/)
-   -   aus listbox in edit einschreiben (https://www.delphipraxis.net/88371-aus-listbox-edit-einschreiben.html)

Bruce86 14. Mär 2007 19:59


aus listbox in edit einschreiben
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi leute also folgendes problem stellt sich mir gerade: ich schreibe von edits in eine listbox! Um z.b. einen wert zu ändern oder wenn was falsch geschrieben sein sollte, soll aus der listbox wieder in die edits zurückgelesen werden! funktioniert auch irgendwie, aber bei mir wird nur der Name zurückgegeben nicht der vorname mehr! hinterlege euch mal den quellcode und nen screenshot fällt euch vllt ein was da falsch ist?

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject); //Hinzufügen
begin
ListBox1.Items.Add( NameEdit.Text+', '+VornameEdit.Text);
NameEdit.Text         := '' ;
VornameEdit.Text      := '' ;
privatEdit.Text       := '' ;
mobilEdit.Text        := '' ;
NameEdit.SetFocus;
end;

procedure TForm1.Button2Click(Sender: TObject); //Ändern
begin
if ListBox1.ItemIndex <> -1
   then
      begin
        ListBox1.Items.Insert(ListBox1.ItemIndex, NameEdit.Text+', '+VornameEdit.Text);
        ListBox1.Items.Delete(ListBox1.ItemIndex);
      end
   else ShowMessage('Es wurde kein Eintrag zum Ändern markiert');
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var s: string;
    p: integer;
begin
  if ListBox1.ItemIndex >-1
     then
       begin
         s := ListBox1.Items[ListBox1.ItemIndex];
         p := Pos (',' , s);
         NameEdit.Text := Copy(s,1,p-1);
         Delete (s,1,p+1);
         p := Pos (',',s);
         VornameEdit.Text := Copy(s,1,p-1);
       end;
end;
Vielen dank für eure hilfe

Bruce86

bitsetter 14. Mär 2007 20:17

Re: aus listbox in edit einschreiben
 
Hi,

geht es so besser?

Delphi-Quellcode:
  s := ListBox1.Items[ListBox1.ItemIndex];
  p := Pos (',' , s);
  NameEdit.Text := Copy(s,1,p-1);
  VornameEdit.Text := Copy(s,p+ 1,length(s)- p);

hoika 14. Mär 2007 20:22

Re: aus listbox in edit einschreiben
 
een machteburjer ;)

was sagt denn der Debugger ?

der Fehler liegt hie rim Delete.
Delphi-Quellcode:
         s := ListBox1.Items[ListBox1.
         p := Pos (',' , s);
         NameEdit.Text := Copy(s,1,p-1);
         Delete (s,1,p+1);
         p := Pos (',',s);
         VornameEdit.Text := Copy(s,1,p-1);
Das Delete kann eh ganz raus.

Mit Pos ermittelst du die Positon des Kommas.
Das erste Copy (p-1) kopiert bis vor das Komma (also den Namen),
das zweite Copy änderst du in Copy(s, p+1, Length(s));


Delete nicht vergessen zu löschen.

Generell ist es keine gute Idee, aus dem Komma auf Name/Vorname
zu schliessen.
Was wenn einer im Editor selbst ein Komma eingibt ???

Ich würde die Daten in einer eigenen Klasse (TList) halten,
jede Person erhält eine eigenen Klasseneintrag (TPerson = class)
mit seinen Daten.
Die Objekte selber könnten in ListBiox.Objects hinterlegt werden
oder du nimmst nen TListView (dort gibt es ListIte,Data).


Heiko

Bruce86 14. Mär 2007 20:37

Re: aus listbox in edit einschreiben
 
Der debugger hat ja beben net gemeckert das war ja das problem!

Heiko du hast sicherlich recht dass es mit Klassen besser wäre würde ich ja sonst auch so machen aber wenn der lehrer das net will genauso wie das speichern nicht mit datenbanken geschehen soll was wesentlich einfacher wäre muss man es eben dem anpassen was der lehrer will aber danke für die info!

Funktioniert übrigens jetzt! vielen dank!!!!

DP-Maintenance 15. Mär 2007 09:55

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Es geht um Delphi. ;)

hoika 15. Mär 2007 09:59

Re: aus listbox in edit einschreiben
 
Hallo,

ein Debugger meckert ja auch nicht,
eher der Compiler.

Was ich meinte war das zeilenweise Debuggen +watch
(F5, Strg+F5, F7, F8).
Dann hättest du den Fehler gesehen,


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 Uhr.

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