Avatar billede lolle Nybegynder
06. november 2000 - 22:11 Der er 2 kommentarer og
2 løsninger

Rediger tekst i ListBox...?

Hvordan kan man rediger tekst i en ListBox på denne måde som kode nedeunder viser ???

Koden kommer her...
->

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button3Click(Sender: TObject);
begin
ListBox2.Items.Delete(ListBox1.ItemIndex);
ListBox1.Items.Delete(ListBox1.ItemIndex);
Edit1.text := \'\';
Edit2.text := \'\';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Edit1.Text = \'\') OR (Edit2.Text = \'\') then begin
  Edit1.Text := \'\';
  Edit2.Text := \'\';
  end else begin
  ListBox1.Items.Add(Edit1.Text);
  ListBox2.Items.Add(Edit2.Text);
  Edit1.text := \'\';
  Edit2.text := \'\';
  end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
Edit1.Text := ListBox1.Items.Strings[ListBox1.ItemIndex];
Edit2.Text := ListBox2.Items.Strings[ListBox1.ItemIndex];
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
// Koden her til at redigere det tekst som stå i Edit1-2
// Det skal kunne overskrive det som stod der før i ListBox1-2
end;

end.
Avatar billede dj Nybegynder
06. november 2000 - 23:22 #1
ListBox1.Items.Strings[ListBox1.ItemIndex]:=Edit1.Text;
ListBox2.Items.Strings[ListBox1.ItemIndex]:=Edit2.Text;

Mvh. _DJ_

Avatar billede zogu Nybegynder
06. november 2000 - 23:40 #2
Læg mærke til at jeg har ændret i følgende:

Private delen af TForm classen.
ListBox1Click
Button2Click

Dette er den rigtige måde.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    // Global variabel til at gemme liste positionen.
    List_Index : Longint;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button3Click(Sender: TObject);
begin
  ListBox2.Items.Delete(ListBox1.ItemIndex);
  ListBox1.Items.Delete(ListBox1.ItemIndex);
  Edit1.text := \'\';
  Edit2.text := \'\';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Edit1.Text = \'\') OR (Edit2.Text = \'\') then begin
  Edit1.Text := \'\';
  Edit2.Text := \'\';
  end else begin
  ListBox1.Items.Add(Edit1.Text);
  ListBox2.Items.Add(Edit2.Text);
  Edit1.text := \'\';
  Edit2.text := \'\';
  end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  //Gem liste position som skal ændres.
  List_Index := ListBox1.ItemIndex;
  Edit1.Text := ListBox1.Items.Strings[List_Index];
  Edit2.Text := ListBox2.Items.Strings[List_Index];
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
  // Koden her til at redigere det tekst som stå i Edit1-2
  // Det skal kunne overskrive det som stod der før i ListBox1-2

  //Brug liste position fra ListBox1Click
  ListBox1.Items.Strings[List_Index] := Edit1.Text;
  ListBox2.Items.Strings[List_Index] := Edit2.Text;
  Edit1.Text := \'\';
  Edit2.Text := \'\';
end;
end.


En anden måde kunne være :
ListBox2.Items.Strings[ListBox1.ItemIndex]:=Edit2.Text;
ListBox1.Items.Strings[ListBox1.ItemIndex]:=Edit1.Text;

Med venlig hilsen
Zogu
Avatar billede zogu Nybegynder
07. november 2000 - 00:06 #3
Hej Igen

Jeg kom i tanke om at eksempel 2 også virker helt perfekt ved enkelt click, men brug eksempel 1 hvis du går over til dobbelt klik. Da du ellers vil gemme ændringerne i den sidst valgte i liste 1, som du kan ændre inden du trykker på Button2 uden at ændre edit1 og edit2.

------------------------------------------------

ListBox2.Items.Strings[ListBox1.ItemIndex]:=Edit2.Text;
ListBox1.Items.Strings[ListBox1.ItemIndex]:=Edit1.Text;

Bare lige en forklaring :
Grunden til at du skal opdatere liste2 først, er at Delphi sletter ItemIndex ved opdateringen.

Med venlig hilsen
Zogu
Avatar billede lolle Nybegynder
07. november 2000 - 14:43 #4
Det ver lige det som manglede

tak til jer begge ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester