Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#9

AW: String Umbruch

  Alt 16. Dez 2020, 20:11
Ich mache es jetzt so.

Delphi-Quellcode:
    LVZattoo.SetItemText(LVZattoo.Handle, (i - 1), 1, ChlRec.title, 8,
      'Genre: ' + FZat.gEpg[i - 1].g + ';' +
      'Sendung: ' + FZat.gEpg[i - 1].t + ';' +
      'Laufzeit: ');
und löse es dann so auf.

Delphi-Quellcode:
   if Assigned(ColumnInfo[HeaderItem].SplitStr) then
   begin
     if ColumnInfo[HeaderItem].SplitStr[Item] <> 'then
     begin
       sSplit := Split(ColumnInfo[HeaderItem].SplitStr[Item], ';');
       TmpRect.Top := TextRect.Top;
       TmpRect.Left := TextRect.Left;
       TmpRect.Right := TextRect.Right;
       for i := Low(sSplit) to High(sSplit) do
       begin
         TmpRect.Top := TmpRect.Top + FPointSize + 2;
         DrawEllipsisText(WinHandle, DC, sSplit[i], TmpRect, Color, FFontName,
           FPointSize, FFontStyle, 0, 0);
        end;
     end;
    end;
anders geht es im Moment nicht bis ich eine bessere Lösung gefunden habe.

Oben wird der String mit Delemiter ';' übergeben
und unten ausgewertet.
Der string selbst wird nicht mehr an das Listview übergeben nur ChlRec.title (= wsItems)

Delphi-Quellcode:
procedure TSkinListView.SetItemText(hListView: hWnd; nItem: Integer; nSubItem: Integer;
  wsItems: WideString; TextTop: Integer = 0; SplitStr: WideString = '');
var
  lvItem: LV_ITEMW;
begin

  lvItem.mask := LVIF_TEXT;
  lvItem.iItem := nItem;
  lvItem.pszText := PWideChar(wsItems);
  lvItem.iSubItem := nSubItem;
  ListView_SetItem(hListView, lvItem);

  ColumnInfo[nSubItem].TextTop := TextTop;
  if SplitStr <> 'then
  begin
    SetLength(ColumnInfo[nSubItem].SplitStr, (nItem + 1));
    ColumnInfo[nSubItem].SplitStr[nItem] := SplitStr;
  end;

end;

Geändert von venice2 (17. Dez 2020 um 13:15 Uhr)
  Mit Zitat antworten Zitat