AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EListError, warum? ObjectList mit Daten füllen
Thema durchsuchen
Ansicht
Themen-Optionen

EListError, warum? ObjectList mit Daten füllen

Ein Thema von delphifan2004 · begonnen am 20. Mai 2022 · letzter Beitrag vom 24. Mai 2022
 
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
282 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: EListError, warum? ObjectList mit Daten füllen

  Alt 21. Mai 2022, 12:53
Huch! Doublette!

Wie macht delphi das in seinem Stringgrid?

Ich codiere:

TStringList(FRowsContainer.Items[ARow]).AddObject(' ', gridColumn); Und da ist sie, die Doublette! Trotz AList.Duplicates := dupAccept in SetRows! tritt jetzt der Feler immr noch auf, allerdings verändert, das Programm hängt fest, der EListError erscheint nun nicht mehr, aber das Programm hängt.

Wie macht das Delphi mit der Stringliste die auch dort die Strings aufnimmt?

Der Fehler trat zuerst hier auf:
Delphi-Quellcode:
 if (ACol<TStringList(FRowsContainer.Items[ARow]).Capacity) and Assigned(TGridColumn(TStringList(FRowsContainer.Items[ARow]).Objects[ACol])) then
    begin
    w := gc.Width; //TGridColumn(TStringList(FRowsContainer.Items[ARow]).Objects[ACol]).Width; //#### Hier der EListError ####[]
Hier noch mal die ganze Methode:
Delphi-Quellcode:
procedure TCustomGrid.Paint;
var ACol,ARow,w,h,l,t,r,b: Integer; gc: TGridColumn; sl: TStringList; rc: TObjectList;
begin
  inherited Paint;
  for ARow:=0 to FRowsContainer.Count-1 do
  for ACol:=0 to TStringList(FRowsContainer.Items[ARow]).Count-1 do
  begin
    rc := FRowsContainer;
    sl := TStringList(rc.Items[ARow]);
    gc := TGridColumn(sl.Objects[ACol]);
    if (ACol<TStringList(FRowsContainer.Items[ARow]).Capacity) and Assigned(TGridColumn(TStringList(FRowsContainer.Items[ARow]).Objects[ACol])) then
    begin
    w := gc.Width; //TGridColumn(TStringList(FRowsContainer.Items[ARow]).Objects[ACol]).Width; //#### Hier der EListError ####
    h := gc.Height; //TGridColumn(TStringList(FRowsContainer.Items[ARow]).Objects[ACol]).Height;
    l := gc.Left; //TGridColumn(TStringList(FRowsContainer.Items[ARow]).Objects[ACol]).Left;
    t := gc.Top; //TGridColumn(TStringList(FRowsContainer.Items[ARow]).Objects[ACol]).Top;
    end;
    DrawRectangleClip(vscreen,l,t,l+w,t+h,ToColor(colBlack));

    t := t + h;
    l := l + w;
  end;
end;
Siehe auch Eingangsbeitrag, dortiger Code.


In SetRows -> AList.Capacity:=5 muss ich natürlich noch anpassen auf beliebig viele Elemente. Aktuell aber sollen für den Test 5 Spalten genügen.

Die Schwierigkeit ist hier, dass ich zunächst eine Zeile erzeigen will, aber noch nicht weiß, wie viele Spalten die haben soll, das entscheidet sich danach erst in SetCols().
Ich brauchte hier eine dynamische Anpassung der Spalten nachdem die Zeile erzeugt ist. Auch hier die Frage, wie macht Delphi das in seinem Stringgrid? Da guck ich inzwischen mal in den Code rein. Vielleicht finde ich ja dort die Lösung des Problems. Vorausgesetzt Emba programmiert nicht zu trickreich.

Geändert von delphifan2004 (21. Mai 2022 um 13:18 Uhr)
  Mit Zitat antworten Zitat
 


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 23:25 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