Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ListBox Namen hoch-und runterscrollen (https://www.delphipraxis.net/171577-listbox-namen-hoch-und-runterscrollen.html)

delphinee 13. Nov 2012 13:18


ListBox Namen hoch-und runterscrollen
 
Hallo, meine Aufgabe war es ein Programm zu erstellen, in welchem man Namen in die Listbox eintragen und beliebig hoch-bzw runterscrollen kann. Das hochscrollen und eintragen in die Liste habe ich schon bewältigt.. bei dem Rest bräuchte ich allerdings Hilfe! Hilfeee :O

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Original: array [0..9] of string;
  zaehler: integer;
 
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  If zaehler < 10 then
    begin
     ListBox1.Items[zaehler]:= Edit1.Text;
     zaehler := zaehler+1;
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var counter: integer;
    speicher: string ;
    i: integer;
 begin
  Speicher:= Listbox1.Items[0];


 For i:= 0 to 8 do
 ListBox1.Items[i]:=ListBox1.Items[i+1];


 ListBox1.Items[9]:=speicher;


end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 zaehler:= 0;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var counter :integer;
begin

  Button2.Visible:= false;
  Button3.Visible:=false;
  Button4.Visible:=false;
 
  Edit1.SetFocus;

   If Edit1.Text = '' then
   begin
    Edit1.Visible:= false;
    Button1.Visible:=false;
    Button2.Visible:= true;
    Button3.Visible:=true;
    Button4.Visible:=true;


    end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var counter: integer;
    speicher: string ;
    i: integer;
begin




          ???






 end;

procedure TForm1.Button4Click(Sender: TObject);
begin




   ???







end;

end.

Perlsau 13. Nov 2012 14:02

AW: ListBox Namen hoch-und runterscrollen
 
Zitat:

Zitat von delphinee (Beitrag 1190977)
Hallo, meine Aufgabe war es ein Programm zu erstellen, in welchem man Namen in die Listbox eintragen und beliebig hoch-bzw runterscrollen kann. Das hochscrollen und eintragen in die Liste habe ich schon bewältigt.. bei dem Rest bräuchte ich allerdings Hilfe! Hilfeee :O

Ein paar Hinweise gefällig?

1. Benutze doch bitte die Delphi-Tags, wenn du Code ins Forum stellst (das Icon mit dem Delphi-Helm).

2. Verwende aussagekräftige Variablen-Bezeichner, so daß jeder, der deinen Code sieht, sofort weiß, was Button1 oder Button2 tun sollen.

3. Welcher Rest? Was ist dein Problem?

stahli 13. Nov 2012 14:09

AW: ListBox Namen hoch-und runterscrollen
 
Eine vorerst etwas unscharfe Anmerkung:

Schau Dir mal an
- ListBox.Items.Count
- ListBox.Items.Add
- ListBox.Items.Delete
genauer an.

Damit solltest Du schon weiter kommen...

PS. Herzlich willkommen noch!

delphinee 13. Nov 2012 14:22

AW: ListBox Namen hoch-und runterscrollen
 
Vielen Dank erstmal. Edit1 ist das Eingabefeld in welches man Namen einträgt, mit Button1 wird der Name per Klick in die Listbox eingetragen, Button2 ist für das verschieben der Namen nach oben und Button3 für das Verschieben der Namen nach unten.

Ich benötige Hilfe beim Programmieren von Button 3...

Perlsau 13. Nov 2012 14:50

AW: ListBox Namen hoch-und runterscrollen
 
Als erstes: Dort kannst du ein Einsteiger-Tutorial runterladen, das dir hilft, die ersten Schritte mit Delphi zu bewältigen.

Zitat:

Zitat von delphinee (Beitrag 1190987)
Vielen Dank erstmal. Edit1 ist das Eingabefeld in welches man Namen einträgt, mit Button1 wird der Name per Klick in die Listbox eingetragen, Button2 ist für das verschieben der Namen nach oben und Button3 für das Verschieben der Namen nach unten.

Dann benenne doch besser:
Edit1 ist Edit_Name
ListBox1 ist ListBox_Namen
Button1 ist But_NameEintragen
Button2 ist But_NachOben
Button2 ist But_NachUnten

Dann weißt du gleich, was dieser Button machen soll, wenn du deinen Code später mal wieder anschaust. Aber auch beim Orientieren im Quellcode ist es äußerst hilfreich, die eingesetzten Komponenten mit aussagekräftigen Bezeichnern zu versehen

Zitat:

Zitat von delphinee (Beitrag 1190987)
Ich benötige Hilfe beim Programmieren von Button 3...

Bevor ich dir weiterhelfe, sollten wir erstmal deinen bisherigen Code durchgehen:

Delphi-Quellcode:
procedure TForm1.But_NameEintragenClick(Sender: TObject);
begin
  If zaehler < 10 then
    begin
     ListBox1.Items[zaehler]:= Edit1.Text;
     zaehler := zaehler+1;
    end;
end;
Mit dieser Methode, Strings in eine Listbox einzufügen, hagelt es Fehlermeldungen, weil der Eintrag mit dem Index [zaehler] mit großer Sicherheit noch nicht existiert. Man fügt Items hinzu, indem man die Procedure Append oder die Function Add aufruft:

Delphi-Quellcode:
ListBox_Namen.Items.Append(Edit_Name.Text);
Mit Append wird einfach ein neuer Eintrag unten angehängt. Add liefert den Index des neuen Eintrags zurück. Count liefert die Anzahl aller Einträge. Hast du noch keine Einträge in der Listbox, gibt's eine Fehlermeldung, wenn du z.B. ListBox_Namen.Items[0] ansprechen willst. Um die Zählung der Einträge brauchst du dich nicht zu kümmern, das macht die Listbox automatisch.

Möchtest du die Bedingung umsetzen, daß Einträge in die Listbox nur möglich sind, solange die Anzahl der Einträge kleiner als 10 ist, schreibst du besser:

Delphi-Quellcode:
IF ListBox_Namen.Count < 10 THEN
BEGIN
...
END;
oder gleich am Anfang:

Delphi-Quellcode:
IF ListBox_Namen.Count > 9
THEN EXIT;
Damit verläßt du die Procedure, wenn die Anzahl der Einträge größer als 9 ist. Sinnvoll wäre hier auch sicher eine Message für den Anwender, damit er weiß daß und warum sein Eintrag nicht übernommen wurde:

Delphi-Quellcode:
IF ListBox_Namen.Count > 9 THEN
BEGIN
     ShowMessage('Nur 9 Einträge erlaubt!');
     EXIT;
END;

delphinee 13. Nov 2012 14:55

AW: ListBox Namen hoch-und runterscrollen
 
Danke !! Das Programm läuft ohne Fehlermeldungen.. aber dennoch danke für deine Hilfe!

Perlsau 13. Nov 2012 15:07

AW: ListBox Namen hoch-und runterscrollen
 
Zitat:

Zitat von delphinee (Beitrag 1190999)
Danke !! Das Programm läuft ohne Fehlermeldungen.. aber dennoch danke für deine Hilfe!

Das glaube ich dir nicht! Ich hab deinen Code eben 1:1 umgesetzt und das kommt dabei heraus, wenn ich Button2 drücke:

Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Delphinee.exe ist eine Exception der Klasse EStringListError mit der Meldung 'Listenindex überschreitet das Maximum (8)' aufgetreten.
---------------------------
Anhalten  Fortsetzen  Hilfe  
---------------------------
Ich mag es nicht, angelogen zu werden. Unter diesen Umständen bin ich nicht bereit, dir weiterhin behilflich zu sein. Vielleicht mag dir ja ein anderer helfen ...

delphinee 13. Nov 2012 15:12

AW: ListBox Namen hoch-und runterscrollen
 
mhm dann scheinst du irgend etwas falsch gemacht zu haben... bei mir läuft das Programm! Button2 funktioniert einwandfrei! Mein Sorgenkind ist Button3!

EWeiss 13. Nov 2012 15:14

AW: ListBox Namen hoch-und runterscrollen
 
Zitat:

Ich mag es nicht, angelogen zu werden. Unter diesen Umständen bin ich nicht bereit, dir weiterhin behilflich zu sein. Vielleicht mag dir ja ein anderer helfen ...
Immer diese überreaktionen.. Dann lass es doch einfach es zwingt dich niemand dazu.
Sorge einfach dafür das der "Maximale" Listenindex beim verschieben nicht überschritten wird.

gruss

delphinee 13. Nov 2012 15:20

AW: ListBox Namen hoch-und runterscrollen
 
Danke EWeiss! :))


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

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