![]() |
mal wieder: zeilenumbrüche im stringgrid....
hi
also, ich möchte mehrzeilige string-grid felder haben.... das habe ich grundsätzlich hiermit gelöst: (Danke DP :wink: )
Delphi-Quellcode:
so, nun gibt es aber wegen dieser zeilenumbrüche probleme beim speichern und laden...
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); Var CrLfPos, PrevPos, i: Integer; SL: TStrings; Begin With Sender As TStringGrid Do Begin If aCol < FixedCols Then Exit; If aRow < FixedRows Then Exit; PrevPos := 1; CrLfPos := PosEx(#13#10, Cells[aCol, aRow], PrevPos); If CrLfPos > 0 Then Begin SL := TStringList.Create; Try While CrLfPos > 0 Do Begin SL.Add(Copy(Cells[aCol, aRow], PrevPos, CrLfPos - PrevPos)); PrevPos := CrLfPos + 2; CrLfPos := PosEx(#13#10, Cells[aCol, aRow], PrevPos); End; If SL.Count > 0 Then With Canvas Do Begin SL.Add(Copy(Cells[aCol, aRow], PrevPos, Length(Cells[aCol, aRow]))); FillRect(Rect); For i := 0 To pred(SL.Count) Do TextOut(Rect.Left + 2, Rect.Top + 2 + ((-Font.Height + 2) * i), Sl[i]); End; Finally FreeAndNil(SL); End; End; End; End; die mache ich so: (von den schweizern glaub ich)
Delphi-Quellcode:
nur wegen der zeilenumbrüche sieht die ladne procedure die zellen als neue zellen an, und der ganze schmarrn verschiebt sich um eine zeile...
procedure TForm1.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.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; kann ich das unterbinden? |
Re: mal wieder: zeilenumbrüche im stringgrid....
Die Zelleninhalte müssen kodiert gespeichert werden und beim Laden wieder dekodiert werden.
Carriage-Return+Linefeed innerhalb eines Strings könnte man so speichern:
Code:
In der Unit JclStrings gibt es die Funktionen StrEscapedToString und StrStringToEscaped; damit ist das kodieren und dekodieren kurz und schmerzlos.
das ist Zeile 1/n/rdas ist Zeile 2
Siehe Jedi Code Library: ![]() |
Re: mal wieder: zeilenumbrüche im stringgrid....
THX...die functions aus JclStrings funzen
I :love: JCL..... :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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