AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi StrinGrid (goRowSelect) zelleneintrag in ein form laden
Thema durchsuchen
Ansicht
Themen-Optionen

StrinGrid (goRowSelect) zelleneintrag in ein form laden

Ein Thema von dopeline · begonnen am 9. Mai 2003 · letzter Beitrag vom 13. Mai 2003
Antwort Antwort
Seite 2 von 4     12 34      
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#11
  Alt 10. Mai 2003, 10:52
irgentwie geht das nicht. also so hab ich es bisher geregelt, dass immer die näschste zeile beschrieben wird:
"anzahl" wird zum programmstart auf 0 gesetzt und immer, wenn man einen neuen eintrag erstellt umd 1 erhöht (>> somit geht er immer eine zeile weiter)
Delphi-Quellcode:
inc(anzahl);
FormHaupt.stringgrid1.cells[0,anzahl]:= person.name;
FormHaupt.stringgrid1.cells[1,anzahl]:= person.telefon;
FormHaupt.stringgrid1.cells[2,anzahl]:= person.adresse;
FormHaupt.stringgrid1.cells[3,anzahl]:= person.mobil;
FormHaupt.stringgrid1.cells[4,anzahl]:= person.mail;
close;
(des ist der auszug aus dem Formular "NeuerEintrag")

wenn ich aber eine bestimmte zeile anklicke und bearbeite geht das so:
Delphi-Quellcode:
FormHaupt.Stringgrid1.Rows[FormHaupt.Stringgrid1.Row].Strings[0]:=EditName.Text;
FormHaupt.Stringgrid1.Rows[FormHaupt.Stringgrid1.Row].Strings[1]:=EditTelefon.Text;
FormHaupt.Stringgrid1.Rows[FormHaupt.Stringgrid1.Row].Strings[2]:=EditAdresse.Text;
FormHaupt.Stringgrid1.Rows[FormHaupt.Stringgrid1.Row].Strings[3]:=EditMobil.Text;
FormHaupt.Stringgrid1.Rows[FormHaupt.Stringgrid1.Row].Strings[4]:=EditMail.Text;
er öffnet das formular "NeuerEintrag" und läst in die editfelder die strings aus der tabelle im hauptformular. wenn ich dann auf speichern klicke, wird der veränderte eintrag nicht in die zeile geschrieben, aus der er ausgelesen wurde, sondern an eine andere position (je nach dem welchen wert "anzahl" gerade hat)
  Mit Zitat antworten Zitat
Neo2084

Registriert seit: 1. Mai 2003
Ort: Thüringen
35 Beiträge
 
Delphi 5 Professional
 
#12
  Alt 10. Mai 2003, 11:33
Hallo,

für was braust du "Anzahl".
Die Anzahl der Zeilen im Grid kannst du mit Grid.RowCount ermitteln.

Code für neue Zeile :
Code:
// Zeile hinzugügen
grid.RowCount :=Grid.RowCount+1;
// neue Zeile füllen
grid.cells[0,grid.rowcount-1]:= EditName.Text;
Code für Edit
Code:
// aktuelle Zeile steht in Row
EditName.Text :=grid.cells[0,grid.row];
// und zurück uns Grid
grid.cells[0,grid.row] :=EditName.Text;
hilft das ???

Im übrigen schreit das was du da gerade machst nach einer kleinen Datenbank ! Da hättest du diese Probleme gar nicht.

Gruß Neo
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#13
  Alt 10. Mai 2003, 12:49
ok, das geht schon mal so halbwegs. nur noch ein paar kleinigkeiten:

ich erstelle einen eintrag (>> FormNeuerEintrag.ShowModal >>alle Edit-Felder werden geleert >>wieder beschrieben >> speichern >>eintrag erscheint in der tabelle)

diesen eintrag bearbeite ich (>> Zeile in die Editfelder einlesen >> FormNeuerEintrag.ShowModal >> eingaben in den edit-feldern werden umgeschrieben >> speichern >> vorhandener eintrag wird durch den barbeiteten ersetzt)

soweit funktioniert alles. aber wenn ich nun auf neuen eintrag klicke, erscheint das fenster, aber die edit-felder sind nicht geleert. ich ersetze den text in den feldern mit einem neuen und klicke auf speichern und er erstellt auch eine neue zeile. das problem ist einfach, nach dem bearbeiten und neuem erstellen leert er trotz anweisung die editfelder nicht . woran liegt das?

und zweitens. ich hab es so eingebaut, dass wenn man auf "neu" klickt, die gesamte tabelle (spaltenbeschriftungen ausgenommen) gelöscht werden soll. (es sollen wirklich die zeilen entfernt werden und nicht nur "geleert"). wie mache ich das?

Grüße, dopeline
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#14
  Alt 10. Mai 2003, 13:05
also das erste problem (mit den edit-feldern usw.) habe ich schon gelöst
--> die lösch-befehle standen an der falschen stelle
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#15
  Alt 10. Mai 2003, 13:06
Hallo,

für dieses Projekt kommt meine Anmerkung ja wahrscheinlich zu spät, aber mir scheint die Verwendung der Datenbankfunktionen würde das alles sehr vereinfachen, wenn Du meinst eine richtige Datenbank wäre mit Kanonen auf Spatzen schießen, was her sein kann, dann verwende InMemory Datasets,

z.B. TClientdataset : Borland (hast Du in deiner Delphi Version, haben hier aber auch Nachteile)
oder TDXmemdataset : Developers Express (sind glaube ich free)
oder TRxMemoryDataset :Rx-Komponenten (sind sicher free)

Hiermit kansst Du die Daten einer Tabelle mit einem Befehl in eine Datei schreiben und wieder lesen, und das ganze Handling dieser Daten in der Anwendung, inclusive der Synchronisation der Editfelder mit dem Grid übernehmen dann die Komponenten für Dich.

Grüße
Wolfgang
  Mit Zitat antworten Zitat
Neo2084

Registriert seit: 1. Mai 2003
Ort: Thüringen
35 Beiträge
 
Delphi 5 Professional
 
#16
  Alt 10. Mai 2003, 13:19
Hi,

um die Zeilen aus dem grid zu entfernen :

Grid.RowCount=1; Vorher solltest du aber die Zellen wirklich mit einem leeren String überscheiben (machst du ja schon), denn das Grid entfernt die Zeilen nicht wirklich und sonst würdest du bei einem neuen Eintrag wieder den alten Kram sehen.

Im übrigen kann ich mich der Meinung von WOKI nur anschliessen.
So was hat man in 5 Minuten "zusammengeklickt"

Gruß Neo
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#17
  Alt 10. Mai 2003, 13:39
also von den datenbanken lass ich erst mal die finger...
dieses programm ist eine aufgabe aus informatik. und wenn ich da mit ner datenbank ankomme, darf ich denen das alles erklären (und was man selbst nicht verstanden hat, erklärt sich schlecht.) außerdem ist das mein erstes jahr informatik. und dort gleich mit datenbanken anfangen? ich weiß nicht...

Gruß, dopeline
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#18
  Alt 10. Mai 2003, 13:42
Ah! ok, das funktioniert, danke
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#19
  Alt 10. Mai 2003, 15:26
jetzt ist es allersingd so, dass wenn ich die zeile der spalten-überschriften anklicke/markiere und auf bearbeiten klicke, kann ich diese bearbeiten. das darf aber nicht sein! kann ich irgentwo definieren, dass, wenn die oberste zeile markiert ist, er das bearbeiten-fenster nicht öffnet? oder besser wäre noch, wenn man die oberste zeile gar nicht erst markieren könnte! ist sowas möglich?

Gruß, dopeline
  Mit Zitat antworten Zitat
Neo2084

Registriert seit: 1. Mai 2003
Ort: Thüringen
35 Beiträge
 
Delphi 5 Professional
 
#20
  Alt 10. Mai 2003, 16:07
Hi,

stell Grid1.RowCount beim leeren auf 2, dann hast du eine leere Zeile die der Anwender bearbeiten kann. Wenn du Rowcount auf 1 stellst, wird die Eigenschaft FixedRows auf 0 gesetzt, daher rührt dein Probelm.

Ansonsten hilft dir sicherlich folgendes :
if Grid1.Row>0 then //Edit oder Insert oder was weis ich Gruß Neo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 15:55 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