Jeg forsøger at hente en hel række filnavne ind i en tstringlist. Det går også fint. Der bliver så løbende lavet ændringer i denne liste og hver gang der bliver ændret noget skal et stringgrid opdateres. Jeg kan ikke skrive i stringgrid'et da der her kun står filnavnet, mens listen har filnavnet inklusiv drive/path.
Så såvidt jeg kan se er jeg nødt til at lave en onchange rutine der opdaterer mit stringgrid. Men det kan jeg ikke finde ud af at gøre. Nogen gode forslag...? Tak
Hjælpeteksten: -------------- Occurs immediately after the list of strings changes.
Delphi syntax: property OnChange: TNotifyEvent;
Description: Write an OnChange event handler to respond to changes in the list of strings. For example, if the string list is associated with a control, the OnChange event handler could tell the control to repaint itself whenever the content of the list changes.
Whenever strings in the list are added, deleted, moved, or modified, the following events take place:
1 An OnChanging event occurs before the change. 2 The strings are added, deleted, moved, or modified. 3 An OnChange event occurs.
Note: OnChange occurs for every change made to the list, regardless of whether the application calls BeginUpdate and EndUpdate around a series of changes.
Den sidste note er vigtig for i forbindelse med opbygning af listen må du koble OnChange fra for ikke at sløve operationen ned. Det må blive noget med:
procedure TForm1.OnStringListChange(Sender : TObject); begin if UpdateCount > 0 then exit;
Jeg kan se eet problem med ovenstående idet det er en generel "event" for slette, tilføje, flytte og ændre, så kan man ikke se hvad der er sket og man ved ikke hvilken linie der er sket noget ved.
Umiddelbart ville jeg nedarve TStringList (nok rettere TStrings) til min egen variant som havde havde en ændret OnChange der ikke var en TNotifyEvent, men noget lignende dette: procedure (aSender : TObject; aLine : string; aIndex : integer; aChange: TChanges)
aSender : TObject; - listen der er lavet aLine : string; - linien der er sket noget ved. aIndex : integer; - Indeks i listen. Ved sletning = -1 aChange: TChanges; - scAdd, scDelete, scMove eller scChanged
I øvrigt, og det er min kæphest (beklager), så er det mindst lige så smart/let at have en TObjectList med klasser af TMyFiles som indeholder alle de oplysninger du har indsamlet om filerne, elsempelvis størrelse, dato, attributter og indhold/type.
Skulle ikke undre mig om TObjectList også har en OnChange idet jeg antager at TStrings er en nedarvet variant af TList.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.