Autor Beitrag
Webkommissar
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 12.02.03 19:28 
Hi Leute!

Bin immer noch ein neuer in der Programmierszene, deshlab bitte wegen meiner Frage nicht lachen:
Ich hab eine Listbox und drei Editfelder, über die ich in die Listbox Namen einfügen kann. Jetzt will ich, dass ein Name, den man in der Listbox anklickt, wieder oben in den Editfledern angezeigt wird.
Ich benutzte für die Nennung mehrer Namen einen array, vielleicht kann man das ja mit einbinden. Wäre über eure Hilfe sehr glücklich!!!


Gruss..

_________________
Bald ist es geschafft - ABI `03 - juuhuuu!!!
Webkommissar Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 12.02.03 19:59 
Hier noch mein Quellcode:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    ListBox1: TListBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
  Type Tperson= Record
                   Nachname:string[20];
                   Vorname:string[15];
                   Alter:string;
                 End;


var
  Form1: TForm1;
  person:array[1..20] of Tperson;
  i:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  i:=i+1;
  person[i].Nachname:=Edit1.Text;
  person[i].Vorname:=Edit2.Text;
  person[i].Alter:=Edit3.Text;
  Listbox1.Items.Add(person[i].Nachname+', '+person[i].Vorname+' ('+person[i].Alter+')');
  Edit1.Clear;
  Edit2.Clear;
  Edit3.Clear;
  end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin

end;

end.


Ich muss nämlich die einzelnen Sachen (Nachname,Vorname,Alter) wieder in die passenden Editfenster bringen. Aber wie??

_________________
Bald ist es geschafft - ABI `03 - juuhuuu!!!
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Mi 12.02.03 20:11 
Also prinzipiell gehst du so vor:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.ListBox1Click(Sender: TObject);
var
  i: Integer;
begin
  i := ListBox1.ItemIndex;
  Edit1.Text := ListBox1.Items[i];
end;

Du musst das halt auf 3 Edit Felder ausweiten.

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
Webkommissar Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 12.02.03 20:28 
So bekommich zwar alles ins Edit1 oder 2 oder 3 Fenster. Aber ich will ja den Nachnamen ins Fenter1, den Vornámen ins Fenster2 und das alter ins fenster3 zurück haben!

_________________
Bald ist es geschafft - ABI `03 - juuhuuu!!!
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Mi 12.02.03 20:42 
Dazu musst du dann den Text, den du von der ausgewählten Spalte bekommst zerschneiden, also bis ', ' und ' (' jeweils alle Zeichen in einen anderen String kopieren.

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 12.02.03 21:39 
So lange die Reihenfolge der Items in der Listbox immer mit der Reihenfolge der Personen im Array übereinstimmt, geht das einfacher:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
i:=ListBox1.ItemIndex+1; //+1, weil die Listbox bei 0 beginnt, das Array aber bei 1.
with person[i] do
begin
  edit1.text:=nachname;
  edit2.text:=vorname;
  edit3.text:=alter;
end;


Oder habe ich da jetzt irgendwo krumm gedacht?

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 21:50 
Es wäre, glaube ich, zu überlegen, ob man nicht besser einen Listview nimmt. Denn dann hat man alles schön in Spalten.
Webkommissar Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 16.02.03 21:37 
Erstmal danke, die Lösung von Peter hat super geklappt.
Leider stehe ich vor einem erneuten Problem:

Nachdem ich die Einträge wieder in den Edit-Fenstern stehen und verändert habe und dann wieder auf den Button klicke, erscheint in der Liste ein neuer Eintrag. Wie kann ich den alten Überschreiben oder einfach löschen???

_________________
Bald ist es geschafft - ABI `03 - juuhuuu!!!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 16.02.03 21:53 
Löschen und dann neu einfügen.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 16.02.03 21:55 
Dafür würde ich einen zweiten Button nehmen, denn der erste ist ja dazu da, Einträge hinzuzufügen. Wenn Du dann einen neuen Button "Aendern" hast, kannst Du das Ganze so machen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.AendernClick(Sender: TObject); 
begin 
  i:=ListBox1.ItemIndex+1;
  person[i].Nachname:=Edit1.Text; 
  person[i].Vorname:=Edit2.Text; 
  person[i].Alter:=Edit3.Text; 
  ListBox1.Items[i-1]:=person[i].Nachname+', '+person[i].Vorname+' ('+person[i].Alter+')';
end;


Ohne Gewähr, denn den Code habe ich nicht getestet.

Finde ich besser als Löschen, weil dann auch die Reihenfolge gewahrt bleibt. Könnte den Benutzer stören, wenn der geänderte Eintrag plötzlich nach unten rutscht.

MfG,
Peter

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



BeitragVerfasst: Mo 17.02.03 20:20 
Super, hat geklappt.
Jetzt meine allerletzte Frage zu diesem Thema:
Wenn ich ein Eintrag in der Liste markiert habe, und dann auf einen Button klicke, will ich, dass diese auf den davor bzw. den danchstehenden Eintrag in der Liste kommt. Es soll dann also z.B. nur der zeite Eintrag in der Liste markiert sein, wenn vorher der dritte markiert war.

_________________
Bald ist es geschafft - ABI `03 - juuhuuu!!!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 17.02.03 21:27 
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure TForm1.nachobenClick(Sender: TObject);
begin
  if ListBox1.ItemIndex > 0 then //Geht's noch nach oben?
  ListBox1.Itemindex:=ListBox1.ItemIndex-1; //wenn ja, dann gehe eins nach oben
end;


Etwas abgewandelt geht's dann auch noch unten.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".