AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie eine Stringgrid-Spalte in eine Zeile vom Memo schreiben?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie eine Stringgrid-Spalte in eine Zeile vom Memo schreiben?

Ein Thema von Black07 · begonnen am 27. Jun 2007 · letzter Beitrag vom 27. Jun 2007
Antwort Antwort
Black07

Registriert seit: 10. Jun 2007
24 Beiträge
 
#1

Wie eine Stringgrid-Spalte in eine Zeile vom Memo schreiben?

  Alt 27. Jun 2007, 03:43
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 von Speicher-MEMO wie es ausehen soll:
.
.
{Zeile 12}Name=P777;Alpha_3
{Zeile 13}Bezeichnung=Datensatz1;Datensatz2;Datensatz;Dat ensatz4
.
.
.

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 von Speicher-MEMO wie es ausehen soll:
...
...
{Zeile 12}Name=P777;Alpha_3
{Zeile 13}Bezeichnung=Datensatz1;
{Zeile 14}Datensatz2;
{Zeile 15}Datensatz4;
{Zeile 16}|||;
{Zeile 17}|||;
{Zeile 18}|||
...



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
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Wie eine Stringgrid-Spalte in eine Zeile vom Memo schrei

  Alt 27. Jun 2007, 04:58
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?
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Black07

Registriert seit: 10. Jun 2007
24 Beiträge
 
#3

Re: Wie eine Stringgrid-Spalte in eine Zeile vom Memo schrei

  Alt 27. Jun 2007, 11:44
Zitat von Mackhack:
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?

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.
  Mit Zitat antworten Zitat
Black07

Registriert seit: 10. Jun 2007
24 Beiträge
 
#4

Re: Wie eine Stringgrid-Spalte in eine Zeile vom Memo schrei

  Alt 27. Jun 2007, 23:31
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:00 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