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:
und hier für eine Fussgesteuerte Schleife
WHILE i <= 100 //Solange i<= 100 wird der Schleifenrumpf ausgeführt
begin Summe := Summe + i; i := i + 1; end;
Delphi-Quellcode:
Bei einer Zählschleife (als Spezialfall für eine Kopfgesteuerte Schleife) würde das jetzt so aussehen,
repeat
... until Zahl >= 10; // Solange Zahl <10 wird diese Schleife ausgeführt
Delphi-Quellcode:
for i := 0 to 4 do begin // Zähle von 0 bis 4 und tue irgendetwas
Writeln(i); end; |
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. |
AW: Adressbuch mit Stringgrid.
Eine Frage. Muss ich das er ne neue Zeile anfängt wenn ich neue Kontaktdaten eingebe ne schleife einbauen?
|
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. |
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; |
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
vorher solltest Du Dir aber Gedanken über das Abspeichern, ggf. in einer Datei, machen. Gruß K-H |
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. |
AW: Adressbuch mit Stringgrid.
ok danke werde es mir mal anschauen :)
|
AW: Adressbuch mit Stringgrid.
Zitat:
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? |
AW: Adressbuch mit Stringgrid.
Ich wollte die Tabelle in einer .txt Datei speichern. In etwa nach diesem Code:
Delphi-Quellcode:
Das ist natürlich nur ein Beispiel. Was ich jedoch nicht weiß in welche Datei die Tabelle gespeichert werden soll. ist .txt möglich?
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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