Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Adressbuch mit Stringgrid. (https://www.delphipraxis.net/186130-adressbuch-mit-stringgrid.html)

frankyboy1974 6. Aug 2015 10:50

AW: Adressbuch mit Stringgrid.
 
Hallo lieber Te,

falls ich an deinem Problem vorbei geantwortet habe, verzeihe mir dies!!

Wenn du etwas mehr als einmal ausführen möchtest, schreibst du eine Schleife.
Der Programmierer kennt nun drei (zwei) Arten von Schleifen.

Die Kopf-, die Fuss- und die (Zählschleife/Die Zählschleife ist ein Spezialfall der Kopfschleife),

Bei der Kopfschleife prüfst du erst, ob der Schleifenrumpf überhaupt durchlaufen wird. Bei der Fussschleife wird erst durchlaufen und dann wird geprüft, ob ein Zweites mal durchlaufen wird. Der Unterschied liegt also darin, dass eine Fussschleife zumindestens einmal durchlaufen wird.

hier ein Beispiel für eine Kopfgesteuerte Schleife

Delphi-Quellcode:
WHILE i <= 100 //Solange i<= 100 wird der Schleifenrumpf ausgeführt
begin
    Summe := Summe + i;
    i := i + 1;
end;
und hier für eine Fussgesteuerte Schleife
Delphi-Quellcode:
repeat
  ...
until Zahl >= 10; // Solange Zahl <10 wird diese Schleife ausgeführt
Bei einer Zählschleife (als Spezialfall für eine Kopfgesteuerte Schleife) würde das jetzt so aussehen,

Delphi-Quellcode:
for i := 0 to 4 do begin // Zähle von 0 bis 4 und tue irgendetwas
  Writeln(i);
end;

GroZ 6. Aug 2015 10:54

AW: Adressbuch mit Stringgrid.
 
So habe es jetzt schonmal hinbekommen die erste Zeile zu befüllen mit den Infos.
Hier mal mein quellcode:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Grids, StdCtrls, ComCtrls, Menus;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Name: TLabeledEdit;
    Alter: TLabeledEdit;
    Wohnort: TLabeledEdit;
    Tel: TLabeledEdit;
    HinzuBtn: TButton;
    LoeschenBtn: TButton;
    AdresseGrid: TStringGrid;
    BeendenBtn: TButton;
    MonthCalendar1: TMonthCalendar;
    Panel3: TPanel;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Speichern1: TMenuItem;
    Speichernunter1: TMenuItem;
    Nochnichtfertig1: TMenuItem;
    procedure BeendenBtnClick(Sender: TObject);
    procedure HinzuBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Name, Wohnort: string;
  Alter, Tel: integer;

implementation

{$R *.dfm}

procedure TForm1.BeendenBtnClick(Sender: TObject);
begin
//sleep(1000);
close;
end;

procedure TForm1.HinzuBtnClick(Sender: TObject);
begin
  AdresseGrid.Cells[1,1]:= Name.Text;
  AdresseGrid.Cells[2,1]:= Alter.Text;
  AdresseGrid.Cells[3,1]:= Wohnort.Text;
  AdresseGrid.Cells[4,1]:= Tel.text;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;

begin
  AdresseGrid.Cells[1,0]:= 'Name';
  AdresseGrid.Cells[2,0]:= 'Alter';
  AdresseGrid.Cells[3,0]:= 'Wohnort';
  AdresseGrid.Cells[4,0]:= 'Telefon';
    for i := 1 to 20 do
    begin
      AdresseGrid.Cells[0,i]:= IntToStr(i);
    end;
 
end;

end.

GroZ 6. Aug 2015 11:08

AW: Adressbuch mit Stringgrid.
 
Eine Frage. Muss ich das er ne neue Zeile anfängt wenn ich neue Kontaktdaten eingebe ne schleife einbauen?

Jumpy 6. Aug 2015 11:17

AW: Adressbuch mit Stringgrid.
 
Jain. Wenn du nur soviele Zeilen hast, wie du bisher Namen/Personen erfasst hast, dann musst du das Grid nur um eine Zeile erweitern und in diese Zelle schreiben.

Wenn das Grid aber schon 100 Zeilen oder so hat, von denen nur die ersten 5 befüllt sind, dann müsstest du in einer Schleife durch die Zeilen gehen, bis du die erste leere findest und da dann deine Werte reinschreiben.

Ich möchte dir aber auch den Einwand von BUG bezüglich saubererer Datenhaltung ans Herz legen.

GroZ 6. Aug 2015 11:27

AW: Adressbuch mit Stringgrid.
 
Ich habs hingekriegt das er den namen komplett bis runter schreibt also in jede Zeile vom Header "Namen" aber halt immer der gleiche...
Delphi-Quellcode:
procedure TForm1.HinzuBtnClick(Sender: TObject);
var i : integer;
begin
    for i := 1 to 20 do
    begin
      AdresseGrid.Cells[1,i] := Name.Text;
  AdresseGrid.Cells[1,i]:= Name.Text;
  AdresseGrid.Cells[2,i]:= Alter.Text;
  AdresseGrid.Cells[3,i]:= Wohnort.Text;
  AdresseGrid.Cells[4,i]:= Tel.text;
    end;
end;

p80286 6. Aug 2015 11:38

AW: Adressbuch mit Stringgrid.
 
Wenn Du nur einen Namen hast, den Du 20 mal schreibst, dann ist das zwangsläufig so.
Wenn Du das beherzigst was BUG geschrieben hat, dann hast Du ungefähr folgenden Ablauf
  1. Namen erfassen
  2. Inhalt des Namensfeld in Liste speichern
  3. vollständige Liste in StringGrid ausgeben
Beim letzten Punkt kannst Du dann Deine Kenntnisse über Schleifen einsetzen.
vorher solltest Du Dir aber Gedanken über das Abspeichern, ggf. in einer Datei, machen.

Gruß
K-H

Perlsau 6. Aug 2015 11:51

AW: Adressbuch mit Stringgrid.
 
@GroZ:

Offensichtlich fehlt es dir völlig an den grundlegendsten Kenntnissen der Programmierung mit Delphi. Das ist weder ein Vorwurf noch sonst irgendwie schlimm, denn schließlich haben wir alle einmal damit angefangen, in Pascal zu programmieren. Diesem Mangel kannst nur du selbst abhelfen, jedoch auf mehrere Arten. Die gebräuchlichste und erfolgversprechendste Möglichkeit besteht darin, einige Anfänger-Tutorials durchzuarbeiten, um so ein grundlegendes Verständnis dafür, wie Programme in Delphi aufgebaut sind, zu entwickeln. Als Einstieg empfehle ich stets die Grundlagen-Tutorials vom Delphi-Treff, da sie sehr einfach gehalten und daher leicht verständlich sind. Dort findest du auch weitere Tutorials zu spezielleren Themen.

Vor einiger Zeit hab ich ein Video-Tutorial für Anfänger zum Programmieren einer Adreßverwaltung erstellt, das in 5 Teilen bei YouTube zu finden ist. Im jeweiligen Text zu den Videos findest du auch einen Download-Link für den Quellcode.

Videotutorial Adressverwaltung Teil 1
Videotutorial Adressverwaltung Teil 2
Videotutorial Adressverwaltung Teil 3
Videotutorial Adressverwaltung Teil 4a
Videotutorial Adressverwaltung Teil 4b

In diesen Videos erkläre ich ausführlich, wie man als Anfänger eine Adreßverwaltung entwickelt. Ich denke, damit solltest du klarkommen und eine Weile beschäftigt sein.

GroZ 6. Aug 2015 12:12

AW: Adressbuch mit Stringgrid.
 
ok danke werde es mir mal anschauen :)

BUG 6. Aug 2015 12:20

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von p80286 (Beitrag 1311259)
vorher solltest Du Dir aber Gedanken über das Abspeichern, ggf. in einer Datei, machen.

Damit bist du imho schon einen Schritt zu weit. Der erste Gedanke sollte hier sein, wie die Daten im Programm repräsentiert werden. Ob die Daten dann gespeichert oder anderweitig ausgegeben werden, macht dann ja nicht so den Unterschied.

Die Gretchenfrage ist also: Sollen die Daten nur im Stringgrid* gehalten werden oder in einer Liste von Objekten**? :wink:

* Wenn es nur darum geht mit dem Stringgrid zu spielen ... vielleicht akzeptabel.
** In die Richtung gibt eine Menge spannendes Zeug zu lernen: Was sind Objekte? Wie verwalte ich meinen Speicher? Was für Datenstrukturen kann ich am besten für die Verwaltung der Daten benutzen?

GroZ 6. Aug 2015 12:25

AW: Adressbuch mit Stringgrid.
 
Ich wollte die Tabelle in einer .txt Datei speichern. In etwa nach diesem Code:
Delphi-Quellcode:
procedure SaveStringGridToFile(StringGrid: TStringGrid; const FileName: String);
var
  F: TStringList;
  i: Integer;
begin
  F := TStringList.Create;
  try
    F.Add(IntToStr(StringGrid.RowCount));
    F.Add(IntToStr(StringGrid.ColCount));
    for i := 0 to (StringGrid.RowCount - 1) do
      F.Add(StringGrid.Rows[i].CommaText);
    F.SaveToFile(FileName);
  finally
    F.Free;
  end;
end;
Das ist natürlich nur ein Beispiel. Was ich jedoch nicht weiß in welche Datei die Tabelle gespeichert werden soll. ist .txt möglich?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr.
Seite 2 von 5     12 34     Letzte »    

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