AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Delphi _ Button öfter benutzen

Ein Thema von remo.lieb · begonnen am 30. Nov 2015 · letzter Beitrag vom 1. Dez 2015
Antwort Antwort
remo.lieb

Registriert seit: 30. Nov 2015
2 Beiträge
 
Delphi 7 Personal
 
#1

Delphi _ Button öfter benutzen

  Alt 30. Nov 2015, 23:05
Hallo,

zurzeit benutze ich Delphi 7 mit freier Lizenz. Ich interessiere mich sehr für Programmieren, doch stoße gerade an meine Grenzen. Ich habe heute versucht ein Programm zu schreiben, welches Daten wie Kosten, Name der Zahlung aufnimmt und diese in einer Tabelle ausgibt. Ich habe einen Button benutzt, den ich als "Hinzufügebutton" benutze (er soll thoeretisch immer in der nächsten Zeile den neuen Eintrag dranhängen). Ich kann zwar die erste Reihe in der Tabelle hinzufügen und diese durch Veränderungen in den Edit-Feldern verändern, aber komme NIE in die zweite Zeile meiner Tabelle um dort die zweite "Abbuchung" hinzuzufügen. Hier der Quelltext:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit2: TEdit;
    StringGrid1: TStringGrid;
    Label5: TLabel;
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
Tabrechnung = RECORD
  name : string;
  kosten : real;
  quit : string;
end;
var
  Form1: TForm1;
  abrechnung : Tabrechnung;
  i,n,c : integer;
implementation

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.RowCount := 2;
StringGrid1.ColCount := 4;

StringGrid1.Cells[0,0] := 'Nummer';
StringGrid1.Cells[1,0] := 'Name';
StringGrid1.Cells[2,0] := 'Kosten';
StringGrid1.Cells[3,0] := 'Quittung';

end;

procedure TForm1.Button1Click(Sender: TObject);

begin
i := 1;
n := 1;
c := 0;



abrechnung.name := Edit2.Text;
abrechnung.kosten := strtofloat(Edit1.Text);
abrechnung.quit := Edit3.Text;

StringGrid1.Cells[0,n] := inttostr(n);
StringGrid1.Cells[i,n] := abrechnung.name;
i := i+1;
StringGrid1.Cells[i,n] := floattostr(abrechnung.kosten);
i := i+1;
StringGrid1.Cells[i,n] := abrechnung.quit;
n := n+1;
i := i-2;

Label5.Caption := inttostr(n);
StringGrid1.
end;




end.
Ich würde mich über hilfreiche Antworten sehr freuen. Vielen Dank!

Geändert von Daniel ( 1. Dez 2015 um 07:37 Uhr) Grund: Code in Delphi-Tags gesteckt.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Delphi _ Button öfter benutzen

  Alt 30. Nov 2015, 23:52
Deine Variablen n und i sind lokale Variablen der Prozedur "Button1Click", und werden bei jedem Mal Button klicken neu erstellt. (Edit: Jo, verguckt. Das kommt von den Namen, die man in der Kürze idR wenn überhaupt nur als lokale Variablen nimmt.) Du weist ihnen ja sogar selbst noch (richtigerweise) einen Startwert zu - dies passiert bei JEDEM Mal klicken. Klar, denn der Code n := 1; steht ja auch in der Prozedur, in der du beschrieben hast, was bei einem Klick passieren soll. Das passiert dann auch

Du musst dir die aktuell zu beschreibende Zeile daher ausserhalb deriner "Button2Click" Prozedur merken. Zum Beispiel als Variable des Formulars, eine gute Stelle wäre im Private-Abschnitt davon.


In den Zeilen
Delphi-Quellcode:
n := n+1;
i := i-2;
dürfte der Compiler auch Hinweise geben, dass die hier zugewiesenen Werte niemals benutzt werden. (Es wird vor Prozedurende nicht mehr von ihnen gelesen, somit verfallen die Werte. Da ja beim nächsten Klick die Variablen wieder taufrisch sind.)
Edit: Ok, kommt bei dir in dem Fall nicht, da die Variablen ja global sind*. Da ist dann das Setzen auf 1 im Click das einzige Problem. Zumindest funktional.


Es ist i.A. schon meist sehr sehr hilfreich einige Fehler zu finden, wenn man die Warnungen und Hinweise des Compilers beachtet und zusieht, diese auf 0 zu bekommen. Das ist sogar nicht nur eine leere Predigt, mir hat das auch eine nötige Portion Selbstdisziplin gebracht, die mir definitiv besseren und besser handhabbaren Code gebracht hat.

Drei andere Dinge noch:
1) Wenn du deinen Code in [ delphi] [ /delphi] Tags (ohne die Leerzeichen) packst, wird er schön formatiert hier dargestellt und ist viel leichter zu lesen.
2) Bitte gewöhne dir schnellstmöglich an deinen Komponenten aussagekräftige Namen zu geben. Mit Edit1 und Button4 kannst du selbst schon nach ein paar Wochen nichts mehr anfangen, und andere die deinen Code lesen erst recht nicht. (Ähnlich wie die Warnungen und Hinweise. Man tut sich einfach selbst einen gewaltigen Gefallen damit, auch wenn es erst wie "zu viel" gemachte Arbeit aussieht. Ist es nie!)
3) Du setzt in deinem Stringgrid anfangs zwei Zeilen fest. Dies musst du natürlich auch erhöhen, wenn mehr Zeilen dazu kommen.

*) Und warum globale Variablen sehr böse sind, findet sich durch eine schnelle Forensuche auch hier.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium ( 1. Dez 2015 um 00:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: Delphi _ Button öfter benutzen

  Alt 30. Nov 2015, 23:53
Schau mal, was beim Klick auf den Button mit der Variablen n passiert: sie wird immer auf 1 gesetzt.

Ein wichtiger genereller Hinweis: Wähle aussagekräftige Bezeichner für deine Variablen, Komponenten & Co! Leider werden selbst heutzutage teilweise noch einbuchstabige Variablennamen von Lehrkräften benutzt, bei denen sich mir die Fußnägel aufrollen (weniger wegen der Lehrkräfte als wegen der Variablen ). Wenn du später mal in den Code schaust, weißt du mit hoher Wahrscheinlichkeit nicht auf Anhieb, was denn nun i, n und c sind oder Edit1, Edit2 usw.

[EDIT] Zu langsam [/EDIT]

MfG Dalai
  Mit Zitat antworten Zitat
remo.lieb

Registriert seit: 30. Nov 2015
2 Beiträge
 
Delphi 7 Personal
 
#4

AW: Delphi _ Button öfter benutzen

  Alt 30. Nov 2015, 23:58
Viele Dank ! Ich habe die Werte in der Startprozedur auf 1 gesetzt dann passt alles. Danke!
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Delphi _ Button öfter benutzen

  Alt 1. Dez 2015, 00:00
Schau dir dennoch bitte mein Edit an, dass ich zwischenzeitlich in meinem alten Beitrag gemacht habe.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Delphi _ Button öfter benutzen

  Alt 1. Dez 2015, 07:54
zurzeit benutze ich Delphi 7 mit freier Lizenz.
Wot?
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.757 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Delphi _ Button öfter benutzen

  Alt 1. Dez 2015, 08:14
zurzeit benutze ich Delphi 7 mit freier Lizenz.
Wot?
Der Teil beschäftigt mich auch mehr als alles andere...

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#8

AW: Delphi _ Button öfter benutzen

  Alt 1. Dez 2015, 09:04
Hab's nicht mehr im Kopf, da ich diese grauenhafte Komponente nicht mehr benutze.
RowCount und ColCount ändern nur den sichbaren Anzeigebereich,
aber die Größe des internen Datenspeichers mußte man zusätzlich auch noch anpassen.


[OT und dann Schluß] "Personal" (lag z.B. mal gratis einigen Zeitschriften bei und wird immernoch oft in Schulen weitergegeben ... D5 oder D7 Personal)
Ist fast wie die "Explorer"-Editionen, die es mal gab.

Und tut mir Leid, aber SSL/Edu-Editionen kann man vergessen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Dez 2015 um 09:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Delphi _ Button öfter benutzen

  Alt 1. Dez 2015, 13:25
[OT und dann Schluß] "Personal" (lag z.B. mal gratis einigen Zeitschriften bei und wird immernoch oft in Schulen weitergegeben ... D5 oder D7 Personal)
Ist fast wie die "Explorer"-Editionen, die es mal gab.

Und tut mir Leid, aber SSL/Edu-Editionen kann man vergessen.
kommt darauf an was Du tun willst. Die DB-Anbindung gibt es nicht, dafür benötigt man die Prof. Version. Aber der Debugger ist dabei (wenn ich mich richtig erinnere)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#10

AW: Delphi _ Button öfter benutzen

  Alt 1. Dez 2015, 13:35
Debugger ist da, aber es ist im Prinzip verboten "benutzbare" Programme zu schreiben.
Man darf damit erstellte Programme/Quellcodes praktisch nicht weitergeben und "produktiv" benutzen darf man die damit erstellten Programme auch nicht.
> die "Lehr"-Editionen sind nur zum Lernen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 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