![]() |
Wie eine Stringgrid-Spalte in eine Zeile vom Memo schreiben?
Hi
bin mit meinem Programm fast fertig nur stehe jetzt vor einem Problem bei dem ich hoffe ihr könnt mir weiterhelfen. Zunächst zum Verständnis das Grundlegenste, Habe einen Verwaltungprogramm geschrieben, das eine vorhandene Daten aus einer Textdatei zunächst in ein Memofeld einliest (das memo ist invisible) aus dem dann die enthaltenden Daten auf Editierfelder zum bearbeiten verteilt werden. Das ist alles kein Problem nur beim Speicher stehe ich bei den Stringgrids vor einen für mich scheinbar unüberwindlichen Problem. Die Stringgrids haben von mir statische 100 Zeilen und 1 oder 2 Spalten oncreate zugeteilt bekommen, nun ist es aber so das meist nur die ersten Zeilen z.B. 5 Zeilen mit Text gefüllt sind. Die Daten aus den einzelnen Zellem in der einen Stringgrids-Spalte soll in dem Speicher-Memo mir den anderen Daten as weiteren Editfeldern. Das Memo soll am Ende wieder als eine *.TXT gespeichert werden, wobei jede Zeile zusammenhändende Daten enthält die durch einen Delimiter als Trennzeichen getrennt sind. Etwa so Zitat:
Nur bekomme ich es einfach nicht hin, zum einen das die Datensätze einfach wieder hinter einander durch einen Delimiter getrennt stehen und zum anderen da die leeren Zellen(MAX 100) aus den Stringgrid-Spalten mit eingefügt werden, und zwar als die komische Balken |||; und zwar so. Zitat:
Delphi-Quellcode:
...
... ... if stgridWegedaten.Cells[0,1]<>'' then begin c:=';'; F := TStringList.Create ; try F.Add(IntToStr(stgridWegedaten.RowCount)); F.Add(IntToStr(stgridWegedaten.ColCount)); for I := 0 to (stgridWegedaten.RowCount - 1) do begin stgridWegedaten.Rows[i].Delimiter:=c; s:=stgridWegedaten.Rows[i].DelimitedText ; F.Add(s); end; memospeicher.Lines.Assign(f); finally F.Free; end; end; end; Hat jemand eine Idee wie ich nur die beschrieben Zellen aus einer Stringgrid-Spalte in eine Zeile nur durch einen Delimiter getrennt in ein Memo bekomme ??? thx |
Re: Wie eine Stringgrid-Spalte in eine Zeile vom Memo schrei
Hi,
warum schreibst du das alles erst in ein Invisible Memo und dann kopierst du alles wieder raus in Editfelder und dann in ein StringGrid und dann anschliessend wieder zurueck in das Memo? Warum nicht alles in eine TStringlist rein und was du brauchst kommt in die Editfelder von mir aus und dann in eine 2. TStringlist zum abspeichern? |
Re: Wie eine Stringgrid-Spalte in eine Zeile vom Memo schrei
Zitat:
Eine TStringlist hatte ich zu Anfang auch mal gedacht, fand das Memo dann doch praktischer in der Programmierphase als sichtbares Kontrollfeld um schnell zu überprüfen, ob die gerade zum laden ausgewählte Datei auch korrekt auf die Felder verteilt wird. Denn das mit den ausgewählten Dateidaten gefüllte Memo lass ich immer beim einlesen von 0 bis zum Ende - nach vordefinierten "Bez.-Eintägen" mit Strleft durchsuchen, wobei immer wenn ein Eintag gefunden ist dieser dann je nach "Typ" in Labelfelser, Editfelder, Memofelder, Checkboxen, Comboboxen und Stringgrids verteilt wird und zwar mit midstr da die laenge des Bezeichungsname und des Datensatzen vordefiniert ist (z.B. suche im Memo leftsr "Anmerkung=" >> Anmerkung=Was weis ich denn >> gefunden >> MemoAnmerkung:=Midstr(Anmerkung=Was weis ich denn) >> Anmerkungmemofeld: "Was weis ich denn"). Bei den Daten für Stringgrids, Listboxen werden die dann noch per Splittfkt am "|" Delimiter getrennt und in die einzelen Zeilen geschrieben. Wenn das Programm rundläuft wäre eine Umstellung auf eine TStringlist aber vielleicht eine überlegung wert. |
Re: Wie eine Stringgrid-Spalte in eine Zeile vom Memo schrei
Hi
habe nun eine umständliche und zeitaufwendige Lösung gefunden. Habe zum einen die Mehrspaltigen-Stringgrids in Einzel-Stringgrids umgebaut, die ich nun per Scrollbar verbunden habe. Da ich zum einen keine Lsg gefunden habe, wie ich von Mehrspaltigen-SGs mir die Daten Spaltenweise so auslesen zu lassen:
Delphi-Quellcode:
for I := 1 to (stgridCondItems.RowCount - 1) do
begin s:=stgridCondItems2.Rows[i].DelimitedText; F.Add(s); end; finally memo3.Lines.Assign(f); F.Free; end; Zum anderen habe ich nun eine aufwendige Routine geschrieben um leere Zellen(Zeilen)nach der letzten Texteingabe zu ignorieren - wobei die Spalte 1 oder 2 dieses Ende definiert. ---- Zumindest ist nun mein Problem gelöst auch wenn es bei dem StrigGrind mit 6 Spalten eine Mammutaufgabe war nicht die übersicht bei den Abfragen und anweisungen zu verlieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz