| Autor | Beitrag | 
| drache999 
          Beiträge: 18
 
 
 
 
 | 
Verfasst: So 04.03.18 20:28 
 
Hallo Leute,
 ich habe ein Problem mit meiner StringGrid.
 Ich habe ein Edit und ein Memo. (Später sollen auch weitere Edits im Programm vorhanden sein). Jetzt aber nur das Minimale.    Ich möchte die Einträge des Edits und des Memos in mein StringGrid rein bringen. Das macht es auch.
 Ich speichere es in eine Datei. Das macht es.
 Wenn ich in meinem Memo mehr als eine Zeile habe, so wird es auch in mein StringGrid gespeichert.
 Solange ich das Programm nicht schließe und in meine erste Spalte im StringGrid klicke, kann ich meine Daten zurück holen und anzeigen lassen.
 Doch jetzt kommt mein Problem:
 Wenn ich das Programm schließe und meine Daten lade, so werden die Einträge meiner Memo in mehrere Zeilen des StringGrid aufgeteilt.
 Sie werden gesplittet.
 Was mache ich falsch?
 anbei der Code:
 			Moderiert von									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 
 | 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;
 
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 SaveStringGridToFile(StringGrid1, '.\daten.dat');
 end;
 
 
 procedure LoadStringGridFromFile(StringGrid: TStringGrid; const FileName: String);
 var
 F: TStringList;
 i: Integer;
 begin
 F := TStringList.Create;
 try
 F.LoadFromFile(FileName);
 StringGrid.RowCount := StrToInt(F[0]);
 StringGrid.ColCount := StrToInt(F[1]);
 for i := 0 to (StringGrid.RowCount - 1) do
 StringGrid.Rows[i].CommaText := F[i + 2];
 finally
 F.Free;
 end;
 end;
 
 procedure TForm1.Button3Click(Sender: TObject);
 begin
 if FileExists('.\daten.dat') then LoadStringGridFromFile(StringGrid1, '.\daten.dat');
 end;
 
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 Edit1.Clear;
 Memo1.Clear;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 StringGrid1.RowCount := StringGrid1.RowCount + 1;
 StringGrid1.Cols[0].Add(Trim(Edit1.Text)).Size;
 StringGrid1.Cols[1].Add(Trim(Memo1.Lines.Text));
 Edit1.Clear;
 Memo1.Clear;
 Edit1.SetFocus;
 end;
 
 procedure TForm1.StringGrid1Click(Sender: TObject);
 var
 s: string;
 begin
 s := StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row];
 if Length(s) > 0 then begin
 Edit1.Text:= s; Memo1.Text:= StringGrid1.Cells[StringGrid1.Col+1, StringGrid1.Row];
 end;
 end;
 |   Narses: Delphi-Tags hinzugefügtModeriert von  Narses: Topic aus Datenbanken verschoben am So 04.03.2018 um 22:00 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 06.03.18 15:56 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Mo 12.03.18 22:50 
 
Hallo Frühlingsrolle,
 danke für die Antwort. Doch leider funktioniert es nicht so, wie du es geschrieben hast. Ich habe den Code eingepflegt.
 
 Du fragtes, was ich mit dem Code meine:
 
 StringGrid1.Cols[0].Add(Trim(Edit1.Text)).Size;
 
 
 Geht es um das "TRIM" )
 Es soll alle vorangegangene Leerzeichem im Edit löschen.
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 13.03.18 01:04 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Di 13.03.18 22:38 
 
Hallo Frühlingsrolle,
 
 soweit sieht es gut aus. Doch hast du es mal mit einem Edit und einem Memo ausprobiert?
 Bei meinem Programm funktioniert es solange ich in der Memoeingabe nur eine Zeile rein schreibe.
 Wenn ich aber im Memo ein Enter mache, dann macht er es auch richtig solange ich das Programm nicht neu starte.
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mi 14.03.18 00:39 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Do 15.03.18 19:42 
 
Hallo Frühlingsrolle,
 danke für deine Geduld.
 
 Ok,
 
 Eingabe:   Ausgabe:
 
 Edit  -->  StringGrid Spalte 1
 Memo  -->  StringGrid Spalte 2
 
 Und das dann Zeile für Zeile
 
 Sobald ich eine Zelle im StringGrid Spalte 1 anklicke sollen die Einträge der Zeile (Spalte1 + 2) wieder in das Edit und in das Memo übergeben werden.
 
 Mein Problem ist folgendes:
 Sobald ich im Memo ein Zeilenumbruch mache mit Enter, so wird es richtig in das StringGrid übergeben. Klicke ich in die erste Spalte so
 werden die Daten wieder richtig in das Edit und das Memo übergeben.
 
 Schließe ich das Programm, und öffne es wieder, klicke dann in die erste Spalte, so bekomme ich nicht alles in das Memo zurück.
 
 
 
 
 PS: Wenn ich einen Quellcode hier reinbringen möchte, wie mache ich das richtig? Ich meine, das es nicht als normalen Text angezeigt wird.
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 15.03.18 20:04 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Do 15.03.18 21:46 
 
OK, jetzt wird es zumindest alles im Memo übergeben. Nichts wird in der nächsten Zelle vom StringGrid übergeben.
Doch im Memo werden jetzt jegliche Zeilenumbrüche ignoriert. Sie wurden entfernt
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 15.03.18 23:02 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Do 15.03.18 23:22 
 
Mal ne Frage.
 Hast du alles selber mal ausprobiert? Hast du das Programm mal in Delphi geladen?
 
 Jetzt ist es so, das die erste Spalte vom StringGrid nicht im Edit sondern im Memo geladen wird.
 Und der Text untereinander.
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 16.03.18 00:00 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Fr 16.03.18 00:07 
 
												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
 100:
 101:
 102:
 103:
 104:
 105:
 106:
 107:
 108:
 109:
 110:
 111:
 112:
 113:
 114:
 115:
 116:
 117:
 118:
 119:
 120:
 121:
 122:
 123:
 124:
 125:
 126:
 127:
 128:
 129:
 130:
 131:
 132:
 133:
 134:
 135:
 136:
 137:
 138:
 139:
 140:
 141:
 142:
 143:
 144:
 145:
 
 | unit Unit1;
 interface
 
 uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls, Vcl.ComCtrls;
 
 type
 TForm1 = class(TForm)
 Memo1: TMemo;
 Button1: TButton;
 Edit1: TEdit;
 StringGrid1: TStringGrid;
 Button2: TButton;
 Button3: TButton;
 procedure Button1Click(Sender: TObject);
 procedure StringGrid1Click(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure Button3Click(Sender: TObject);
 private
 
 public
 
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 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;
 
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 SaveStringGridToFile(StringGrid1, '.\daten.dat');
 end;
 
 
 procedure LoadStringGridFromFile(StringGrid: TStringGrid; const FileName: String);
 var
 F: TStringList;
 i: Integer;
 begin
 F := TStringList.Create;
 try
 F.LoadFromFile(FileName);
 StringGrid.RowCount := StrToInt(F[0]);
 StringGrid.ColCount := StrToInt(F[1]);
 for i := 0 to (StringGrid.RowCount - 1) do
 StringGrid.Rows[i].CommaText := F[i + 2];
 finally
 F.Free;
 end;
 end;
 
 procedure TForm1.Button3Click(Sender: TObject);
 begin
 if FileExists('.\daten.dat') then  LoadStringGridFromFile(StringGrid1, '.\daten.dat');
 end;
 
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 Edit1.Clear;
 Memo1.Clear;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 var
 s: string;
 begin
 StringGrid1.RowCount := StringGrid1.RowCount + 1;
 StringGrid1.Cols[0].Add(Trim(Edit1.Text)).Size;
 StringGrid1.Cols[1].Add(Memo1.Lines.Text.Replace(sLineBreak, ''));
 Edit1.Clear;
 Memo1.Clear;
 Edit1.SetFocus;
 end;
 
 
 procedure TForm1.StringGrid1Click(Sender: TObject);
 var
 s: string;
 i: Integer;   c: Char;    begin
 Memo1.Clear;
 s := StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row];
 Variante 1
 for i := 1 to Length(s) do
 Memo1.Lines.Add(s[i]);
 end;
 |  so sieht es im moment aus | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 16.03.18 00:11 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Fr 16.03.18 00:19 
 
es soll sein:
 beim laden der datei soll beim anklicken der spalte 1 vom stringgrid
 folgendes übergeben werden.
 
 spalte 1  in  edit
 spalte 2  in das memo
 
 
 jetzt passiert aber folgendes:
 
 spalte 1  wird in das memo übergeben. und der text oder das wort untereinander
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 16.03.18 00:37 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Fr 16.03.18 00:46 
 
habe es mal ausprobiert.
  Moderiert von  Narses: BMP->PNG, im Beitrag angezeigt
Einloggen, um Attachments anzusehen!
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 16.03.18 17:34 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| drache999  
          Beiträge: 18
 
 
 
 
 | 
Verfasst: Sa 17.03.18 09:29 
 
Hallo,
 ok, jetzt wird alles im Memo übergeben. Aber wenn ich vorher einen Text im Memo eingegeben habe, so möchte ich doch nicht,
 das er Zeichen für Zeichen untereinander wieder ausgegeben wird.   | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 17.03.18 15:20 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  |